Action disabled: source

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'). Для её просмотра может иметь смысл предварительно скачать её на свой персональный компьютер.

ПО установлено в директорию '/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

Необходимую реализацию 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 - 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'