Владимир Бахтин (bakhtin@keldysh.ru), ИПМ РАН.


Adaptor (Automatic DAta Parallelism TranslatOR) - бесплатно распространяемая, автоматически распараллеливающая система трансляции с языка HPF (High Performance Fortran). Система разрабатывается в GMD (Национальном исследовательском центре информационных технологий, Германия).


Предварительная информация

Транслятор HPF установлен на головной машине кластера в каталоге /home/software/adaptor/bin. Этот каталог должен присутствовать в переменной PATH. В каталоге /home/software/adaptor/hpf_examples/simple доступны примеры простейших HPF-программ.


Структура системы

Система Адаптор состоит из:

  • препроцессора fadapt, который переводит программу на языке HPF в программу на стандартном языке Фортран, расширенную функциями системы поддержки выполнения HPF-программ;
  • системы поддержки выполнения HPF-программ - DALIB (Distributed Array LIBrary), явно использующей транспортную систему MPI;
  • драйвера компиляции gmdhpf;
  • файлов документации в формате Postscript;
  • множества демонстрационных HPF-программ.

Трансляция HPF-программ

Трансляция HPF-программ в программы на Фортране производится с помощью команды fadapt:

     fadapt <список-опций> <файл-hpf-программы>

Для файлов с программами на HPF допустимо одно из следующих расширений - f, f9, f90, или hpf.

В результате выполнения этой команды HPF-программа будет сконвертирована в программу на стандартном языке Фортран, расширенную функциями системы поддержки выполнения HPF-программ.

Некоторые опции команды fadapt:
-N  генерация параллельной программы (message passing model)  - используется по умолчанию
-1 генерация последовательной программы
-f  задает имя выходного файла -<имя-hpf-программы>.f
(по умолчанию - cube.f или single.f)
-version  печатается текущая версия Адаптора
-w подавляются все предупреждающие сообщения (warning)
-auto(-noauto) включает(выключает) режим автоматического распараллеливания циклов
-O (-noopt) включает(выключает) режим оптимизации
-list сохранение файлов протоколов adaptor.xxx  работы адаптора
-help выдает список всех доступных опций
-settings выдает текущие установки команды

Для компиляции приложений рекомендуется пользоваться командами mpif77/mpif90. Для оптимизации рекомендуется использовать ключ "-fast". Скомпилировать полученные после работы конвертера модули можно используя эти команды, задав опции "-с -Msecond_underscore".
Например,

      mpif77 -c -Msecond_underscore -fast pi.f -o pi.o

Далее необходимо cлинковать полученный обьектный модуль и библиотеку системы поддержки выполнения HPF-программ командой:

      mpif77 <имя обьектного модуля> <имя библиотеки системы поддержки>

Например,

       mpif77 -o pi pi.o /home/software/adaptor/dalib/MPI/dalib.a

Автоматическое построение HPF-приложений

Автоматическое построение HPF-приложений выполняет утилита gmdhpf. Она по очереди вызывает препроцессор (fadapt), компилятор и компоновщик.

Вызов команды gmdhpf:

     gmdhpf <список-опций> <файл-hpf-программы>
Некоторые опции команды gmdhpf:
-N  генерация параллельной программы (message passing model)  - используется по умолчанию
-1 генерация последовательной программы
-o <outfile>  задает имя выходного файла (по умолчанию: a.out)
-c компиляция; без компоновки
-dryrun выдает последовательность запусков при компиляции, не выполняя ее
-keep не стирать промежуточные файлы
-nohpf не вызывать препроцессор(fadapt)
-help выдает список всех доступных опций
-settings выдает текущие установки команды

Запуск приложения

Запуск полученного приложения на счет осуществляется командой mpirun:

       mpirun -np <имя задачи> <параметры задачи>
Параметры задачи:
-comm получение коммуникационных характеристик выполнения задачи 
-time получение временных характеристик выполнения задачи
-t получение файла трассировки
[N1[xN2[xN3]]] задание матрицы процессоров (N1*N2*N3 = NP)
-help выдает всевозможные параметры задачи

Пример трансляции и запуска HPF-программы

Для трансляции HPF-программы pi.hpf, вычисляющей число Пи, используйте следущую последовательность команд:

      fadapt -f pi.hpf
      mpif77 -c -Msecond_underscore -fast pi.f -o pi.o
      mpif77 -o pi pi.o /home/software/adaptor/dalib/MPI/dalib.a
или
      gmdhpf -o pi pi.hpf

Запуск программы на выполнение:

      mpirun -np 2 pi -time -comm