На суперкомпьютере 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 | — | — |
Ключ | Значение |
---|---|
-I include_dir | опция, которая задаёт пути для поиска include файлов |
-L library_dir | задаёт пути для поиска подключаемых библиотек. |
-l library_name | линкует с указанной библиотекой |
-o file_name | задаёт имя бинарного файла, который будет получен как результат деятельности компилятора |
-g | добавление отладочной информации в бинарный код, после этого при запуске программы через отладчик будет доступна информация об исходном коде программы. |
-ON | Опции начального уровня оптимизации (N число от 1 до 5) |
Ключ | Значение |
---|---|
-qsmp=omp | обеспечивает возможность писать программы с использованием OpenMP стандарта. |
-qsmp=auto | для автоматического распараллеливания программ |
-qarch=pwr8 | компилятор генерирует оптимальный код для Power8 процессоров. |
-qhot | оптимизация кода с принудительным внедрением параллелизма внутрь кода, здесь начинает использоваться параллелизм функциональных устройств архитектуры Power8. При этом может нарушаться последовательность команд, которая была задана в исходном файле. В результате, программа становится недетерминированной. |