Навигация

Технология Hyper-Threading от Intel

Производительности всегда мало

0 1

Hyper-Threading

2 3

Углубляемся в технологию

4 5

Максимум эффективности от Hyper-Threading

6 7

Архитектура IA-64

8 9

Архитектура Е2К

10 11 12 13 14 15

Большие компьютерные системы

Виды параллельной обработки

16 17 18 19 20 21 22

Матричная обработка данных

23 24 25 26

Архитектура мультипроцессорных систем общего назначения

27 28 29

Коммуникационные сети

30 31 32 33 34 35 36 37 38 39 40 41 42 43

Организация памяти в мультипроцессорных системах

44 45 46

Программный параллелизм и общие переменные

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

Мультикомпьютерные системы

63 64 65

Общая память и передача сообщений

66 67 68 69 70 71 72 73 74

Производительность мультипроцессорных систем

75 76 77 78 79 80 81 82

Использование технологии параллельного программирования MPI-2

Введение

83 84 85

Кластерные системы и стандарт параллельного программирования MPI

86 87 88 89 90 91 92 93 94 95 96 97 98 99

Математические проблемы параллельных вычислений

100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122



10.16). Она инициализируется значени­ем количества потоков (в нашем примере их два), и когда каждый поток достига­ет барьера, ее значение уменьшается на единицу.

shared integer array a[l...N], b[l...N]

shared integer dot_product

shared lock dot_product_lock

shared barrier done

…..

read a[l...N] from vector_a

read b[l...N] from vector_b

dot_product :=0

create_thread (do_dot, a, b)

do_dot (a, b)

print dot_product

…..

do_dot (integer array x[l...N], integer array y[l...N])

private integer id

id := mypid()

for k :=(id*N/2) + 1 to (id+l)*N/2

lock (dot_product_lock)

dot_product :- dot_product + x[k] * y[k]

unlock (dot_product_lock)

end

barrier (done)

end

Рис. 10.16. Первый вариант программы вычисления скалярного произведения на двух процессорах в системе с общей памятьюУ программы на рис. 10.16 имеется один существенный недостаток. Исполь­зуемый в ней механизм блокировок не позволяет по-настоящему параллельно выполнять два потока, поскольку оба потока постоянно пытаются записать дан­ные в одну и ту же общую переменную dot_product, а делать это одновременно они не могут. Таким образом, потенциально параллельные вычисления на самом деле выполняются последовательно.


<< назад вперед >>