Параллельные вычисления. Баканов В.М. - 98 стр.

UptoLike

Составители: 

- 98 -
обеспечить их эффективную обработку на векторном или параллельном вы-
числителе. Cинтаксис Fortran’90 помогает компилятору в большинстве
случаев избавиться от применения сложных алгоритмов определения парал-
лельных свойств циклических конструкций. Дальнейшее развитие околофор-
трановского направления привели к разработке Fortran’D (1992) и For-
tran’Vienna, HPF (1992), инструментального пакета анализа программ
ParaScope (Rice University), средства автоматического распараллеливания For-
tran-программ BERT 77, а также системы Forge (Applied Parallel Research,
Inc
., см. ниже).
Система программирования HPF – типичная система с императивным ука-
занием программиста компилятору, каким образом распределить данные
между процессорами (вычисления распределяются на основе распределения
данныхмодель параллелизма по данным). Распределение данных управля-
ется директивами
ALIGN
(определение соответствия между взаимным распо-
ложением элементов нескольких массивов) и
DISTRIBUTE
(отображение
группы массивов на решетку процессоров), при этом допустиморазрезание
массива гиперплоскостями на располагающиеся на различных процессорах
блоки и динамическое (в ходе выполнения программы) перераспределение
(директивы
REALIGN
и
REDISTRIBUTE
). Параллелизм по вычислениям в HPF
реализован по следующим конструкциям языкаоперации над секциями
массивов (параллелизм вычислений детерминируется ранее заданным рас-
пределением данных, при необходимости используется пересылка данных),
циклы
DO
и операции
FORAL
L (компилятором производится попытка обоб-
щить эти конструкции в виде операций над секциями массивов). Пример
HPF-программы приведен в Приложении 1б (исходно-последовательный ва-
риант программыПриложение а). HPF-препроцессор Adaptor
(
http://www.gmd.de/SCAI/lab/adaptor/ adaptor_home.html
) распространяется (в уп-
рощенной версии) свободно; автоматическое построение HPF-приложений
осуществляется утилитой
gmdhpf
, поочередно вызывающей HPF
Fortran-
препроцессор (утилита
fadapt
), Fortran-компилятор и компоновщик.
Программирование на HPF (существуют варианты для C/C++) с точки зре-
ния программиста близко к идеалу (огромное поле для интеллектуальной
деятельности, нет необходимости выписывать громоздкие конструкции об-
мена данными в стиле MPI), однако эффективность создаваемых HPF-
компиляторами параллельных программ невысока (оставшаяся после указа-
ний программиста часть процесса распараллеливания компилятором автома-
тически распараллелена полностью быть не может). В целом HPF-подход
оказался чрезмерно романтичным (с точки зрения соответствия конструкци-
ям языка программирования поставленным целям).
Другой подход основан на модели параллелизма по управлению (work-
sharing, модель распределения работы) и формально заключатся в дополне-
нии языков программирования специальными конструкциями управления
                                      - 98 -


обеспечить их эффективную обработку на векторном или параллельном вы-
числителе. Cинтаксис Fortran’90 помогает           компилятору в большинстве
случаев избавиться от применения сложных алгоритмов определения парал-
лельных свойств циклических конструкций. Дальнейшее развитие околофор-
трановского направления привели к разработке Fortran’D (1992) и For-
tran’Vienna, HPF (1992), инструментального пакета анализа программ
ParaScope (Rice University), средства автоматического распараллеливания For-
tran-программ BERT 77, а также системы Forge (Applied Parallel Research,
Inc., см. ниже).
   Система программирования HPF – типичная система с императивным ука-
занием программиста компилятору, каким образом распределить данные
между процессорами (вычисления распределяются на основе распределения
данных – модель параллелизма по данным). Распределение данных управля-
ется директивами ALIGN (определение соответствия между взаимным распо-
ложением элементов нескольких массивов) и DISTRIBUTE (отображение
группы массивов на решетку процессоров), при этом допустимо ‘разрезание’
массива гиперплоскостями на располагающиеся на различных процессорах
блоки и динамическое (в ходе выполнения программы) перераспределение
(директивы REALIGN и REDISTRIBUTE). Параллелизм по вычислениям в HPF
реализован по следующим конструкциям языка – операции над секциями
массивов (параллелизм вычислений детерминируется ранее заданным рас-
пределением данных, при необходимости используется пересылка данных),
циклы DO и операции FORALL (компилятором производится попытка обоб-
щить эти конструкции в виде операций над секциями массивов). Пример
HPF-программы приведен в Приложении 1б (исходно-последовательный ва-
риант программы – Приложение а). HPF-препроцессор Adaptor
(http://www.gmd.de/SCAI/lab/adaptor/ adaptor_home.html) распространяется (в уп-
рощенной версии) свободно; автоматическое построение HPF-приложений
осуществляется утилитой gmdhpf, поочередно вызывающей HPF → Fortran-
препроцессор (утилита fadapt), Fortran-компилятор и компоновщик.
   Программирование на HPF (существуют варианты для C/C++) с точки зре-
ния программиста близко к идеалу (огромное поле для интеллектуальной
деятельности, нет необходимости выписывать громоздкие конструкции об-
мена данными в стиле MPI), однако эффективность создаваемых HPF-
компиляторами параллельных программ невысока (оставшаяся после указа-
ний программиста часть процесса распараллеливания компилятором автома-
тически распараллелена полностью быть не может). В целом HPF-подход
оказался чрезмерно романтичным (с точки зрения соответствия конструкци-
ям языка программирования поставленным целям).
   Другой подход основан на модели параллелизма по управлению (work-
sharing, модель распределения работы) и формально заключатся в дополне-
нии языков программирования специальными конструкциями управления –