Параллельная обработка данных


Легко ли достичь пиковой производительности компьютера CRAY C90? - часть 4


Временем начального разгона конвейера, в частности, определяется тот факт, что очень короткие циклы выгоднее выполнять не в векторном режиме, а в скалярном, когда этих накладных расходов нет.

В отличие от секционирования операций дополнительное время на разгон конвейера требуется лишь один раз при старте векторной операции. Это стимулирует к работе с длинными векторами данных, так как с ростом длины вектора доля накладных расходов в общем времени выполнения операции быстро падает. Рассмотрим следующий фрагмент программы:

Do i=1,n a(i)=b(i)*s + c(i) End Do

В табл.1 показана зависимость производительности компьютера CRAY Y-MP C90 на данном фрагменте от длины вектора, т.е. от значения n (указанные значения производительности здесь и далее могут на практике немного меняться в зависимости от текущей загрузки компьютера и некоторых других факторов - их нужно рассматривать скорее как некоторый ориентир).

длина

вектора

производительность,

Mflop/s

длина

вектора

производительность,

Mflop/s

1

7.0

150

413.2

2

14.0

256

548.0

4

27.6

257

491.0

16

100.5

512

659.2

32

181.9

1024

720.4

64

301.0

2048

768.0

128

433.7

8192

802.0

129

364.3

 

Табл.1 Производительность CRAY Y-MP C90

на операции ai=bi*s+ci

Конфликты при обращении в память у компьютеров CRAY Y-MP полностью определяются аппаратными особенностями организации доступа к оперативной памяти. Память компьютеров CRAY Y-MP C90 в максимальной конфигурации разделена на 8 секций, каждая секция - на 8 подсекций, а каждая подсекция на 16 банков памяти. Ясно, что наибольшего времени на разрешение конфликтов потребуется при выборке данных с шагом 8*8=64, когда постоянно совпадают номера и секций и подсекций. С другой стороны, выборка с любым нечетным шагом проходит без конфликтов вообще, и в этом смысле она эквивалентна выборке с шагом единица. Возьмем следующий пример:

Do i=1,n*k,k a(i)=b(i)*s + c(i) End Do

В зависимости от значения k, т.е. шага выборки данных из памяти, происходит выполнение векторной операции ai=bi*s+ci длины n в режиме с зацеплением.


Начало  Назад  Вперед



Книжный магазин