Выбор реализации MPI
Для выбора MPI среды используйте команду module avail, module load [modulename].
[user@mgt1 ~]$ module avail
------------------------------ /etc/modulefiles ---------------------------------
impi/3 impi/4 openmpi
[user@mgt1 ~]$ module load impi/3
[user@mgt1 ~]$
В данном случае доступны несколько модулей. В частности impi/3, загружает переменные среды для работы с Intel MPI библиотекой версии 3.
Загруженные переменные сохраняются в течении текущей сессии. Чтобы при повторном входе на кластер нужные модули загружались автоматически, добавьте в файл .modules в своей домашней директории, следующую строку
module load modulename
Компиляция MPI программ
После загрузки нужного модуля, можно использовать программы для компиляции и запуска параллельных приложений (mpicc, mpicxx, mpif77, mpif90, и т.д.).
[user@mgt1 ~]$ which mpicc
/home/COMMON/intel/impi/3.2.2/bin64/mpicc
Компилировать программы можно следующими командами (исходный код в файле hello.c):
[user@mgt1 ~]$ mpicc -o hello.mpi hello.c
Дополнительные ключи компиляции, если они нужны, можно посмотреть в официальной документации производителей компиляторов.
Запуск MPI программ
Запуск MPI программ возможен только через систему пакетной обработки заданий (см. "Работа с системой пакетной обработки заданий"). В файле пакетного задания необходимо запустить Вашу программу с помощью команды mpirun (аргументы программы mpirun указаны для библиотеки Intel MPI).
#!/bin/bash
#PBS -N hello.mpi
#PBS -A код_проекта
#PBS -l procs=8
#PBS -l walltime=00:01:00
cd $PBS_O_WORKDIR
module load impi/4
mpirun -r ssh -machinefile $PBS_NODEFILE -np $PBS_NP ./hello.mpi
В примере выше, запрошено 8 процессоров (ядер). Время выполнения программы 1 мин. Переменная $PBS_O_NODEFILE содержит путь к файлу в который СПО записывает имена выбранных нодов. В переменной $PBS_NP содержится количество запрошенных процессов (procs или nodes*ppn).
Для постановки задания в очередь используется команда qsub.
[user@mgt1 ~]$ qsub job.pbs