PGI » История » Версия 2
Дмитрий Чубаров, 18.06.2012 16:24
1 | 1 | Владимир Кихтенко | h1. Использование компилятора Portland |
---|---|---|---|
2 | |||
3 | Для использования компилятора pgi требуется включить модуль окружения pgi64 |
||
4 | <pre> |
||
5 | $ module load pgi64 |
||
6 | 2 | Дмитрий Чубаров | </pre>После этого становятся доступными @pgcc@ (драйвер компилятора C), @pgCC@ (драйвер компилятора C++), @pgfortran@ (@pgf95@, @pgf90@ и @pgf77@ включают опции, специфические для соответствующих диалектов). |
7 | 1 | Владимир Кихтенко | При запуске программ скомпилированных ими лучше тоже подключать модуль 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> |