Использование 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
