Использование компилятора Portland

Для использования компилятора pgi требуется включить модуль окружения pgi64

$ module load pgi64
После этого становятся доступными pgcc (драйвер компилятора C), pgCC (драйвер компилятора C++), pgfortran (pgf95, pgf90 и pgf77 включают опции, специфические для соответствующих диалектов).
При запуске программ скомпилированных ими лучше тоже подключать модуль pgi64.

PGI + MPI

В настоящее время на кластере поддерживаются две библиотеки MPI: OpenMPI и MPICH (идущая в комплекте с PGI). Рекомендуется использовать OpenMPI, т.к. в MPICH отсутствует поддержка Infiniband.

Последовательность действий для компиляции и запуска MPI программы следующая:

  • Загрузить модуль окружения для выбранной библиотеки MPI и компилятора. При использовании PGI модуль pgi64 будет загружен автоматически.
    $ module load openmpi/pgi # или mpich/pgi, или openmpi/gcc

    Если подключить сразу два модуля, то ничего хорошего скорее всего не выйдет. Проверить список подключенных модулей можно командой module list, а отключить все подключенные модули командой module purge.
  • Скомпилировать программу с помощью обертки для компилятора mpicc, mpif77 или mpif90. При этом будет вызван выбранный компилятор. Оберткам можно передавать все специфичные для выбранного компилятора опции.
    $ mpicc mysource.c -o myprogram

    Если сборка производится с помощью make, то возможно потребуется явно указать на использование обертки компилятора (mpicc, mpif77, ...) с помощью переменных CC, FC, F77, F90, CXX и т.п.
  • В скрипт для запуска задачи через систему очередей добавить загрузку модуля окружения (module load <выбранный модуль>). Поставить задачу в очередь. Подробнее про систему очередей
    $ qsub -l nodes=4 mystartscript.sh