Выбор среды компиляции
По умолчанию на каждом кластере установлен определенный набор компиляторов и библиотек. При входе на вычислитель каждому пользователю на экран выдается информация о некоторых установках по умолчанию, а также дополнительная служебная информация. Для выбора другого доступного ПО (компилятора, библиотеки обмена сообщениями, пакета прикладных программ) необходимо использовать модули установки переменных окружения. Для быстрого доступа к настройкам основных модулей можно воспользоваться командой mpiset
(эта команда без параметров выдает текущие установки). В дальнейшем, при запуске задачи на счет, необходимо следить, чтобы выставленная конфигурация (например, через mpiset
) совпадала при компиляции и при запуске.
О компиляции
Компиляция (в расчете на использование MPI) выполняется утилитами (командами):
mpicc
для программ на Сиmpicxx
для программ на C++mpif77
для программ на Фортране 77mpif90
для программ на Фортране 90
Они запускают компилятор, передавая ему дополнительные флаги, специфичные для MPI (ключ -show
у этих утилит покажет, какая команда будет выполнена). Заметим, что компиляция программы (например исходной) без MPI может быть выполнена и обычными средствами со ссылкой на используемый компилятор (icc, gcc, pgcc, ...).
Для файлов на Си и C++ важно расширение имени файла: для языка Си это .c, для языка С++ это .cxx.
В командной строке задается список файлов, которые надо откомпилировать, и имя выходного файла. Для удобства желательно сообщения об ошибках компиляции перенаправить в файл. Например, если наш исполняемый файл должен называться outprog и собирается из файлов in1.c и in2.c, находящихся в каталоге proj, то необходимо выполнить следующие действия:
cd proj
mpicc –o outprog in1.c in2.c 2>errors.log
Сообщения об ошибках компиляции попадут в файл errors.log. В командной строке файл можно пролистать командой:
less errors.log
При пролистывании используются клавиши <Пробел> - следующая страница, b - предыдущая страница, q - выход из просмотра.
Подключение дополнительных библиотек обеспечивается добавлением опции –l<имя_библиотеки>
в строку компиляции. Например, библиотека BLAS подключается так:
mpicc -o mytest mytest.c -L /usr/lib64/atlas -lcblas
Если программа скомпилирована успешно, создастся файл mytest. Это можно посмотреть в WinSCP, не забыв обновить список файлов в окне, или в командной строке командой ls
, которая выдает список файлов.
Компиляция программ, использующих для распараллеливания стандарты OpenMP, CUDA и OpenACC, а также особенности запуска таких программ рассмотрены в отдельных инструкциях, а именно: