Компиляция программ на кластере

Для удобства работы на кластере можно воспользоваться оболочкой Midnight Commander (очень напоминает FAR или NC), введя в командной строке mc, и, конечно, полезно ознакомиться хотя бы с базовыми командами ОС UNIX или почитать об OC Linux.

По умолчанию на каждом кластере установлен определенный набор компиляторов и библиотек. При входе на вычислитель каждому пользователю на экран выдается информация о некоторых установках по умолчанию, а также дополнительная служебная информация. Для выбора другого доступного ПО (компилятора, библиотеки обмена сообщениями, пакета прикладных программ) необходимо использовать модули установки переменных окружения. Для быстрого доступа к настройкам основных модулей можно воспользоваться командой mpiset (эта команда без параметров выдает текущие установки). В дальнейшем, при запуске задачи на счет, необходимо следить, чтобы выставленная конфигурация (например, через mpiset) совпадала при компиляции и при запуске.

Компиляция (в расчете на использование MPI) выполняется утилитами (командами):

  • mpicc для программ на Си
  • mpicxx для программ на C++
  • mpif77 для программ на Фортране 77
  • mpif90 для программ на Фортране 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. Файл с ошибками можно скопировать, используя WinSCP, на свою машину и просмотреть в текстовом редакторе (Notepad не подходит из-за различия в формате строк, а Wordpad справляется хорошо) или открыть прямо на вычислителе с использованием mc. В командной строке файл можно пролистать командой:

less errors.log 

При пролистывании используются клавиши <Пробел> - следующая страница, b - предыдущая страница, q - выход из просмотра.

Подключение дополнительных библиотек обеспечивается добавлением опции –l<имя_библиотеки> в строку компиляции. Например, библиотека BLAS подключается так:

mpicc -o mytest mytest.c -L /usr/lib64/atlas -lcblas 

Если программа скомпилирована успешно, создастся файл mytest. Это можно посмотреть в WinSCP, не забыв обновить список файлов в окне, или в командной строке командой ls, которая выдает список файлов.

Компиляция программ, использующих для распараллеливания стандарт OpenMP или технологию CUDA, а также особенности запуска таких программ рассмотрены в отдельных инструкциях раздела "Компиляция и запуск", а именно:
    О запуске приложений с OpenMP, PGI Accelerator и OpenACC
    Использование GPU на кластере, CUDA

Для дальнейшей работы на вычислителе следует ознакомиться с инструкцией Запуск задач на кластере в системе SLURM.

Примечание.
Пользователю кластера доступны на запись (помимо чтения) два каталога: его домашний каталог (например /home/u9999/) и каталог /tmp для хранения временных файлов. Домашний каталог общий на всех узлах, /tmp - нет. Из каталога /tmp файлы пользователей периодически удаляются.
Использование /tmp в процессе счета для хранения файлов с результатами вычислений ускоряет счет, поскольку эти файлы создаются на узле.
Файлы с окончательными результатами (допустим по завершении счета) должны быть переписаны пользователем из каталога /tmp в домашний.
При запуске задачи следует заказывать время счета с учетом такой переписи.