Проект

Общее

Профиль

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>