Intel
Всё ПО фирмы Intel установлено в директорию '/opt/intel'. Перед работой с какой-либо программой необходимо предварительно настроить переменные окружения. Это делается с помощью команды 'source', которой в качестве параметра передаётся путь до скрипта, соответствующего нужной программе или пакету ПО. Скрипту, в свою очередь, могут передаваться свои параметры, например, 'intel64' как указание на используемую архитектуру.
Установлено следующее ПО:
- Intel MPI - реализация MPI;
- Composer XE - набор компиляторов и библиотек;
- Advisor XE - средство для моделирования параллельной работы;
- Inspector XE - отладчик;
- Trace Analyzer and Collector - профилировщик производительности для MPI программ.
Для настройки переменных окружения необходимо выполнить одну или несколько команд из списка перечисленных:
source /opt/intel/composerxe/bin/compilervars.sh intel64 source /opt/intel/advisor_xe/advixe-vars.sh source /opt/intel/inspector_xe/inspxe-vars.sh source /opt/intel/itac/8.1.3.037/bin/itacvars.sh
Документация в формате html и pdf находится в поддиректориях 'documentation' или 'doc' соответствующих поддиректорий (например, в '/opt/intel/composerxe/Documentation'). Для её просмотра может иметь смысл предварительно скачать её на свой персональный компьютер.
Composer XE
ПО установлено в директорию '/opt/intel/composerxe' и содержит:
- Компиляторы C++ и Fortran
- Threading Building Blocks
- Integrated Performance Primitives
- Math Kernel Library
Для настройки переменных окружения необходимо выполнить:
source /opt/intel/composerxe/bin/compilervars.sh intel64
После этого компиляторы C, C++ и Fortran вызываются следующими командами:
- icc
- icpc
- ifort
Эту же команду 'source …' необходимо добавлять в скрипт для qsub, иначе задача при выполнении может не найти необходимые библиотеки Intel.
При данном способе будет использовать последняя версия Composer XE. Если же вы хотите использовать какую-то конкретную предыдущую версию, то необходимо скорректировать путь до скрипта 'compilervars.sh'. Например, так:
source /opt/intel/composer_xe_2013_sp1.0.080/bin/compilervars.sh intel64
Intel MPI
Необходимую реализацию MPI рекомендуется указывать при помощи утилиты 'mpi-selector' (описанной на странице, посвящённой MPI), а не 'source'. Например:
mpi-selector --set intel_mpi-5.0.1.035
После этого для компиляции MPI-программ на языке 'C' используется команда mpicc, для языка 'C++' - команда mpicxx, для языка 'Fortran' - mpif77 или mpif90. Обратите внимание, что эти команды - не сами компиляторы, а скрипты, вызывающие настоящие компиляторы. Причём по умолчанию используются компиляторы GCC, а не Intel. Компилятор при необходимости можно сменить через переменные окружения (при этом также необходимо настроить переменные окружения для работы самих этих компиляторов, выполнив 'source /opt/intel/composerxe/bin/compilervars.sh intel64
'):
- Использовать icc в качестве компилятора C:
export I_MPI_CC=icc
- Использовать icpc в качестве компилятора C++:
export I_MPI_CXX=icpc
- Использовать ifort в качестве компилятора Fortran 90:
export I_MPI_F90=ifort
- Использовать ifort в качестве компилятора Fortran 77:
export I_MPI_F77=ifort
Также можно не указывать переменные окружения вида I_MPI_…, а использовать для компиляции другие скрипты:
- mpiicc - скрипт компиляции MPI-программ на языке С компилятором icc
- mpiicpc - скрипт компиляции MPI-программ на языке С++ компилятором icpc
- mpiifort - скрипт компиляции MPI-программ на языке Fortran компилятором ifort
Допустимые параметры команды 'mpirun' можно узнать, выполнив:
mpirun -help
В частности, список серверов, предоставленных задаче планировщиком PBS через файл $PBS_NODEFILE, должен передаваться параметром '-machinefile
'. А путь до библиотек Nvidia при использовании связки CUDA + MPI - через параметр '-genvlist
'.
ITAC
ITAC - Intel Trace Analyzer and Collector.
Последняя имеющаяся у нас версия установлена в директорию '/opt/intel/itac/8.1.3.037'. Официально она несовместима с операционной системой SLES 12 и должна использоваться только на узлах со SLES 11. Тем не менее, при работе на SLES 12 пока не было замечено каких-либо проблем. Перед использованием ITAC необходимо настроить переменные окружения:
source /opt/intel/itac/8.1.3.037/bin/itacvars.sh
Документация находится в директории '/opt/intel/itac/8.1.3.037/doc', примеры - в директории '/opt/intel/itac/8.1.3.037/examples'.
Пример использования:
- Создать файл 'hello_mpi_world.c', аналогичный описанному на этой странице.
- Установить версию MPI от Intel:
mpi-selector --set intel_mpi-5.0.1.035
- Создать такой скрипт 'submit.sh':
#!/bin/sh #PBS -l walltime=00:01:00 #PBS -l select=1:ncpus=2:mpiprocs=2:mem=4000m cd $PBS_O_WORKDIR ## Set variables for ITAC: source /opt/intel/itac/8.1.3.037/bin/itacvars.sh ## Set variables for Intel compiler: source /opt/intel/composerxe/bin/compilervars.sh intel64 export I_MPI_CC=icc ## Compile with '-trace' parameter to use ITAC: mpicc -trace -O3 hello_mpi_world.c -o hello_mpi_world ## Count the number of MPI processes: MPI_NP=`wc -l $PBS_NODEFILE | awk '{ print $1 }'` ## Add '-trace' parameter: mpirun -trace -machinefile $PBS_NODEFILE -np $MPI_NP ./hello_mpi_world
- Поставить задачу в очередь:
qsub submit.sh
- После завершения задачи в текущей директории появятся дополнительные файлы с результатами трассировки, в частности - файл 'hello_mpi_world.stf'.
- Анализ полученненных результатов производится приложением Trace Analyzer, работающим в графическом режиме. Для его использования необходимо:
- Настроить туннелирование X11, как описано на этой странице.
- Trace Analyzer должен запускаться не на интерфейсном сервере, а на вычислительных узлах. Получить доступ к одному из узлов, используя интерактивный режим PBS, описанный внизу этой страницы:
qsub -I -X -l select=1:ncpus=1:mem=2000m,walltime=0:30:0
- После получения доступа к узлу, настроить переменные окружения и запустить Trace Analyzer:
source /opt/intel/itac/8.1.3.037/bin/itacvars.sh traceanalyzer
- В появившемся окне открыть файл 'hello_mpi_world.stf'