Использование HPF Adaptor на кластере
Владимир Бахтин (bakhtin@keldysh.ru), ИПМ РАН.
Adaptor (Automatic DAta Parallelism TranslatOR) - бесплатно распространяемая, автоматически распараллеливающая система трансляции с языка HPF (High Performance Fortran). Система разрабатывается в GMD (Национальном исследовательском центре информационных технологий, Германия).
- Веб-страница проекта Adaptor.
- Краткая информация по языку HPF.
- Руководство пользователя Adaptor (Postscript, сжатый zip - 122 Кбайт).
- Спецификация языка HPF, версия 1.1 (Postscript, сжатый zip - 337 Кбайт).
- Спецификация языка HPF, версия 2.0 (Postscript, сжатый zip - 468 Кбайт).
Предварительная информация
Транслятор 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-программ.
-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-программы>
-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