ВУЗ:
Составители:
Рубрика:
- 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 и включает воз- можности, необходимые для определения всех важных свойств параллельно- го алгоритма (нужное число параллельных процессов, объем вычислений и передаваемых данных для каждого процесса, сценарий взаимодействия про-
Страницы
- « первая
- ‹ предыдущая
- …
- 98
- 99
- 100
- 101
- 102
- …
- следующая ›
- последняя »