Компиляция программ

На суперкомпьютере Polus установлены как компиляторы семейства GNU, так и фирменные компиляторы компании IBM поддерживающие языки программирования C/C++, Fortran. Ниже они перечислены в таблице, постфикс _r в названии скрипта, применяемого для компиляции, говорит о том, что будут использованы потокобезопасные компоненты. Такие скрипты необходимо вызывать при сборке OpenMP- и pthreads-программ.

Компилятор C/C++ Fortran
C C++ Fortran Fortran 90 Fortran 95 Fortran 2003 Fortran 2008
GNU gcc g++ gfortran
IBM XL xlc xlC/xlc++ xlf xlf90 xlf95 xlf2003 xlf2008
потокобезопасная версия xlc_r xlC_r/xlc++_r xlf_r xlf90_r xlf95_r xlf2003_r xlf2008_r

Для создания и запуска программ написанных с использованием MPI стандарта необходимо загрузить модуль SpectrumMPI. Для этого необходимо выполнить следующую коменду

module load SpectrumMPI

Возможно также использование OpenMPI, для его загрузки нужно выполнить

module load OpenMPI

Однако использование SpectrumMPI предпочтительней. Всё дальнейшее описание будет приводится для SpectrumMPI.

Компиляторы программ, использующих стандарт MPI перечислены в таблице ниже.

Компилятор C/C++ Fortran
C C++ Fortran Fortran 77 Fortran 90
mpicc mpicxx mpifort mpif77 mpif90
IBM XL mpixlc mpixlC mpixlf

Для всех компиляторов, не только компиляторов IBM, но и gcc, а так же большинства других компиляторов, имеются следующие ключи:

Ключ Значение
-I include_dir опция, которая задаёт пути для поиска include файлов
-L library_dir задаёт пути для поиска подключаемых библиотек.
-l library_name линкует с указанной библиотекой
-o file_name задаёт имя бинарного файла, который будет получен как результат деятельности компилятора
-g добавление отладочной информации в бинарный код, после этого при запуске программы через отладчик будет доступна информация об исходном коде программы.
-ON Опции начального уровня оптимизации (N число от 1 до 5)

Нестандартные ключи компиляторов IBM

Ключ Значение
-qsmp=omp обеспечивает возможность писать программы с использованием OpenMP стандарта.
-qsmp=auto для автоматического распараллеливания программ
-qarch=pwr8 компилятор генерирует оптимальный код для Power8 процессоров.
-qhot оптимизация кода с принудительным внедрением параллелизма внутрь кода, здесь начинает использоваться параллелизм функциональных устройств архитектуры Power8. При этом может нарушаться последовательность команд, которая была задана в исходном файле. В результате, программа становится недетерминированной.