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

UptoLike

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

- 100 -
ветственность за соблюдение (ему известных) правил вычислений. Програм-
мист определяет не только общие (вычисляемые на одних, а используемые на
других процессорах) данные, но и отмечает точки в последовательной про-
грамме, где необходимо обновить (синхронизировать) данные. При этом
текст DVM-программы является корректным и для обычныхпоследователь-
ныхкомпиляторов (в Fortran’е для задания
DVM-директив используются
строки комментариев, в С применяется механизм макросов), что позволяет
осуществлять сначала отладку последовательной версии программы, а в
дальнейшем тестировать DVM-расширения исходного текста и компилиро-
вать параллельный вариант программы.
Объявленные в программе переменные (исключая описанные какраспре-
деленные массивы) копируются по всем процессорам. В момент старта
DVM-программы создается единственная
ее ветвь (поток управления), при
входе в параллельную конструкцию (напр., параллельный цикл или область
параллельных задач) ветвь разбивается на определенное количество парал-
лельных ветвей, каждая из которых исполняется на выделенном процессоре
(число процессоров и топология многопроцессорной системы задается в ко-
мандной строке программы); при выходе из параллельной конструкции все
ветви
вновь сливаются в первоначальную ветвь.
Для распределения массивов в системе DVM используется директива
DIS-
TRIBUTE
, являющаяся дополнением описательной (неисполняемой) части
программы. Например, строка
CDVM$ DISTRIBUTE mass_1 (BLOCK)
описыва-
ет распределение ранее описанного одномерного Fortran-массива mass_1 на
решетку процессоров равными блоками (
WGT_BLOCK(wb, nwb)
задает распре-
деление неравными блоками, * - отображение целым измерением), выравни-
вание массивов (расположение нескольких массивов согласованно друг с
другомнапример, на одном и том же процессоре) достигается применени-
ем директивы
ALIGN
. Директивы
REDISTRIBUTE
и
REALIGN
динамически из-
меняют распределение данных. Параллельное выполнение циклов задается
директивой
CDVM$ PARALLEL
с параметрами, директива
MAP
определяет со-
ответствие выполняемых задач секции процессоров и т.д. (пример For-
tran’DVM-программы приведен в Приложении 1в). Таким образом DVM реа-
лизует модель параллелизма по данным и по управлению.
В целом DVM-система высокопереносима, достаточно гибка в описании
возможностей распараллеливания и, вместе с тем, позволяет сократить время
разработки и отладки программ.
В Институте Системного Программирования РАН разработан специальный
язык mpC высокого уровня для программирования неоднородных сетей
(
http://www.ispas.ru/~mpc
). Язык mpC использует нотацию C и включает воз-
можности, необходимые для определения всех важных свойств параллельно-
го алгоритма (нужное число параллельных процессов, объем вычислений и
передаваемых данных для каждого процесса, сценарий взаимодействия про-
                                   - 100 -


ветственность за соблюдение (ему известных) правил вычислений. Програм-
мист определяет не только общие (вычисляемые на одних, а используемые на
других процессорах) данные, но и отмечает точки в последовательной про-
грамме, где необходимо обновить (синхронизировать) данные. При этом
текст DVM-программы является корректным и для обычных ‘последователь-
ных’ компиляторов (в Fortran’е для задания DVM-директив используются
строки комментариев, в С применяется механизм макросов), что позволяет
осуществлять сначала отладку последовательной версии программы, а в
дальнейшем тестировать DVM-расширения исходного текста и компилиро-
вать параллельный вариант программы.
   Объявленные в программе переменные (исключая описанные как ‘распре-
деленные’ массивы) копируются по всем процессорам. В момент старта
DVM-программы создается единственная ее ветвь (поток управления), при
входе в параллельную конструкцию (напр., параллельный цикл или область
параллельных задач) ветвь разбивается на определенное количество парал-
лельных ветвей, каждая из которых исполняется на выделенном процессоре
(число процессоров и топология многопроцессорной системы задается в ко-
мандной строке программы); при выходе из параллельной конструкции все
ветви вновь сливаются в первоначальную ветвь.
   Для распределения массивов в системе DVM используется директива DIS-
TRIBUTE, являющаяся дополнением описательной (неисполняемой) части
программы. Например, строка CDVM$ DISTRIBUTE mass_1 (BLOCK) описыва-
ет распределение ранее описанного одномерного Fortran-массива mass_1 на
решетку процессоров равными блоками (WGT_BLOCK(wb, nwb) задает распре-
деление неравными блоками, * - отображение целым измерением), выравни-
вание массивов (расположение нескольких массивов согласованно друг с
другом – например, на одном и том же процессоре) достигается применени-
ем директивы ALIGN. Директивы REDISTRIBUTE и REALIGN динамически из-
меняют распределение данных. Параллельное выполнение циклов задается
директивой CDVM$ PARALLEL с параметрами, директива MAP определяет со-
ответствие выполняемых задач секции процессоров и т.д. (пример For-
tran’DVM-программы приведен в Приложении 1в). Таким образом DVM реа-
лизует модель параллелизма по данным и по управлению.
   В целом DVM-система высокопереносима, достаточно гибка в описании
возможностей распараллеливания и, вместе с тем, позволяет сократить время
разработки и отладки программ.
   В Институте Системного Программирования РАН разработан специальный
язык mpC высокого уровня для программирования неоднородных сетей
(http://www.ispas.ru/~mpc). Язык mpC использует нотацию C и включает воз-
можности, необходимые для определения всех важных свойств параллельно-
го алгоритма (нужное число параллельных процессов, объем вычислений и
передаваемых данных для каждого процесса, сценарий взаимодействия про-