Постфикс _r в названии скрипта, применяемого для компиляции, говорит о том, что будут использованы потокобезопасные компоненты. Такие скрипты необходимо вызывать при сборке OpenMP- и pthreads-программ, т.е. кодов, использующих SMP- и DUAL-режимы. Скрипты расположены в директории /bgsys/drivers/ppcfloor/comm/bin.
Компилятор | C/C++ | Fortran | |||||
---|---|---|---|---|---|---|---|
C | C++ | Fortran 77 | Fortran 90 | Fortran 95 | Fortran 2003 | ||
GCC | mpicc | mpicxx | mpif77 | — | — | — | |
IBM XL | mpixlc | mpixlcxx | mpixlf77 | mpixlf90 | mpixlf95 | mpixlf2003 | |
потокобезопасная версия | mpixlc_r | mpixlcxx_r | mpixlf77_r | mpixlf90_r | mpixlf95_r | mpixlf2003_r |
Необходимо четко понимать, что на системе Blue Gene/P используется механизм кросс-компиляции. Это значит, что компилятор запускается на frontend-сервере на базе процессора Power5 и генерирует код, предназначенный для процессора PowerPC 450. Компиляторы для Blue Gene/P выполняют особого рода оптимизацию, чтобы максимально использовать преимущества архитектуры системы. В частности, XL-компиляторы генерируют код для сдвоенного устройства вычислений с плавающей точкой (double floating-point unit, double FPU) ядра процессора процессора PowerPC 450. Также они учитывают особенности диспетчеризации инструкций и иерархии памяти. В дополнение к XL-компиляторам доступны компиляторы семейства GNU (GNU compiler collection, GCC) для C/C++ и Fortran 77. Кроме того, на вычислительных узлах можно запускать программы, написанные на языке Python.
Также имеется возможность использовать более быструю версию MPI.
Соответствующие скрипты расположены в директории
/bgsys/drivers/ppcfloor/comm/fast/bin
.
Их особенностью является то, что в этом случае
полностью отключена проверка ошибок.
Поэтому использовать эти скрипты нужно только на отлаженном
коде, который уже был успешно запущен на BG/P
при условии компиляции обычными скриптами.
Некоторую информацию об оптимизации на BG/P можно почерпнуть в
слайдах: www.nccs.gov/wp-content/training/2008_bluegene/ORNLCompOptimization.pdf
Параметрами по умолчанию для компиляторов с префиксом bg являются (не приведены настройки кэш-памяти с помощью ключа -qcache):
Доступны следующие скрипты:
Имя скрипта | ||
---|---|---|
обычный | потокобезопасный | |
C | bgc89, bgc99, bgcc, bgxlc | bgc89_r, bgc99_r bgcc_r, bgxlc_r |
C++ | bgxlc++, bgxlC | bgxlc++_r, bgxlC_r |
Fortran | bgxlf, bgxlf90, bgxlf95, bgxlf2003, bgf77, bgfort77, bgf90, bgf95, bgf2003 | bgxlf_r, bgxlf90_r, bgxlf95_r, bgxlf2003_r |
Потокобезопасные компиляторы (т.е. имеющие постфикс _r) должны применяться для любых приложений, использующих потоки, основанных на OpenMP или работающих в режиме симметричного мультипроцессинга.
Некоторые полезные опции XL-компиляторов для C и Fortran:
Опция | Описание |
---|---|
-qversion | Узнать версию компилятора |
-g, -qdbg | Включать в исполняемый файл отладочную информацию |
-qfullpath | При совместном использовании с ключом -g сохраняет полный путь к исходным файлам |
-qcompact | Не использует оптимизации, которые увеличивают размер исполняемого файла; рекомендуется применять только при возникновении нехватки памяти и только к исходным файлам, содержащие некритичные ко времени исполнения функции. |
Некоторые полезные опции XL-компилятора для Fortran:
Опция | Описание |
---|---|
-qcclines | Распознавать директивы условной компиляции !$, C$, c$ и *$ |
-C, -qcheck | Осуществляет проверку выхода за границы массива или строки символов при каждом обращении; может значительно снизить производительность, поэтому рекомендуется для использования только на этапе разработке |
-qessl | Компилятор автоматически заменит встроенные функции процедурами ESSL; на этапе связывания необходимо будет добавить опцию -lessl для подключения последовательной версии ESSL или -lesslsmp — для многонитевой. |
-qhot | Выполнять высокоуровневую оптимизацию циклов; полный набор параметров ключа доступен в официальной документации. |
-qipa | Выполнять межпроцедурную оптимизацию; ключ может указываться при компиляции и/или связывании; полный набор параметров ключа доступен в официальной документации. |
Текст составлен на основе материала главы 8, «Developing applications with IBM XL compilers», 2-го издания книги «IBM System Blue Gene Solution: Blue Gene/P Application Development» и официальной документации по компиляторам IBM XL серии