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


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


2004 г

Курс лекций "Параллельная обработка данных"

, д.ф.-м.н., зам. директора НИВЦ МГУ
Сайт PARALLEL.RU

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

План лекции

Понятие о векторизации программ

Вектора данных, вектора в программах

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

Некоторый фрагмент программы может быть обработан в векторном режиме, если для его выполнения могут быть использованы векторные команды (соответственно полная или частичная векторизация). Поиск таких фрагментов в программе и их замена на векторные команды называется векторизацией программы. Для векторизации необходимы вектора-аргументы + независимые операции над ними. Кандидаты для векторизации - это самые внутренние циклы программы.

Пример. Нужно выполнить независимую обработку всех элементов поддиагональной части массива; в этом случае можем векторизовать по строкам, можем по столбцам, но не можем обработать все данные сразу в векторном режиме из-за нерегулярности расположения элементов поддиагональной части массива в памяти.

Пример векторизуемого фрагмента, для которого выполнены все указанные условия:

Do i=1,n A(i) = A(i) + s EndDo

Пример невекторизуемого фрагмента (очередная итерация не может начаться, пока не закончится предыдущая):

Do i=1,n A(i) = A(i-1)+s End Do

Препятствия для векторизации

Препятствий для векторизации конкретного цикла может быть много, вот лишь некоторые из них:

  • Зависимость по данным (предыдущий фрагмент).

  • Отсутствие регулярно расположенных векторов:

    Do i=1,n ij = FUNC(i) A(i) = A(i)+B(ij) End Do

  • Присутствие цикла, вложенного в данный - для реализации такого фрагмента нет соответствующих векторных команд.

  • Вызов неизвестных подпрограмм и функций:




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



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