PGI » История » Версия 1
Владимир Кихтенко, 16.03.2012 17:31
| 1 | 1 | Владимир Кихтенко | h1. Использование компилятора Portland |
|---|---|---|---|
| 2 | |||
| 3 | Для использования компилятора pgi требуется включить модуль окружения pgi64 |
||
| 4 | <pre> |
||
| 5 | $ module load pgi64 |
||
| 6 | </pre>После этого становятся доступными @pgcc@, @pgf77@, @pgf90@ и прочие компиляторы. |
||
| 7 | При запуске программ скомпилированных ими лучше тоже подключать модуль pgi64. |
||
| 8 | |||
| 9 | h2. PGI + MPI |
||
| 10 | |||
| 11 | В настоящее время на кластере поддерживаются две библиотеки MPI: OpenMPI и MPICH (идущая в комплекте с PGI). Рекомендуется использовать OpenMPI, т.к. в MPICH отсутствует поддержка Infiniband. |
||
| 12 | |||
| 13 | Последовательность действий для компиляции и запуска MPI программы следующая: |
||
| 14 | |||
| 15 | * Загрузить модуль окружения для выбранной библиотеки MPI и компилятора. При использовании PGI модуль pgi64 будет загружен автоматически. |
||
| 16 | <pre>$ module load openmpi/pgi # или mpich/pgi, или openmpi/gcc</pre> |
||
| 17 | Если подключить сразу два модуля, то ничего хорошего скорее всего не выйдет. Проверить список подключенных модулей можно командой @module list@, а отключить все подключенные модули командой @module purge@. |
||
| 18 | |||
| 19 | * Скомпилировать программу с помощью обертки для компилятора @mpicc@, @mpif77@ или @mpif90@. При этом будет вызван выбранный компилятор. Оберткам можно передавать все специфичные для выбранного компилятора опции. |
||
| 20 | <pre>$ mpicc mysource.c -o myprogram</pre> |
||
| 21 | Если сборка производится с помощью @make@, то возможно потребуется явно указать на использование обертки компилятора (mpicc, mpif77, ...) с помощью переменных @CC, FC, F77, F90, CXX@ и т.п. |
||
| 22 | </pre> |
||
| 23 | |||
| 24 | * В скрипт для запуска задачи через систему очередей добавить загрузку модуля окружения (@module load <выбранный модуль>@). Поставить задачу в очередь. [[manual_queue|Подробнее про систему очередей]] |
||
| 25 | <pre> |
||
| 26 | $ qsub -l nodes=4 mystartscript.sh |
||
| 27 | </pre> |