OpenMPI

Установленные версии OpenMPI можно просмотреть и выбрать нужную при помощи утилиты mpi-selector. Если требуется какая-то другая версия, вы можете самостоятельно скомпилировать её и установить в свою домашнюю директорию с помощью приведённой ниже инструкции.


Для вызова компиляторов используются следующие команды:

  • Для языка C: mpicc. По умолчанию эта команда вызывает системный компилятор gcc. Используемый компилятор можно переопределить с помощью переменной окружения OMPI_CC.
  • Для языка C++ есть три равноценных варианта: mpicxx, mpiCC или mpic++. Компилятор переопределяется переменной окружения OMPI_CXX.
  • Для языка Fortran 77: mpif77. Переменная - OMPI_F77.
  • Для языка Fortran 90: mpif90. Переменная - OMPI_FC.

OpenMPI версии 4.1.1 компилируется в целом аналогично версии 1.6.5 (см. ниже), со следующими нюансами:

  • Начиная с версии 4.0 OpenMPI по умолчанию не взаимодействует с сетевой картой Infiniband напрямую, а пытается использовать для этого ПО UCXan open-source, production-grade communication framework for data-centric and high-performance applications»). Нужно или предварительно скомпилировать и установить UCX, или указать OpenMPI, что с устройствами Infiniband нужно взаимодействовать самостоятельно. Ниже рассматривается второй вариант.
  • Параметры скрипта 'configure' должны выглядеть примерно так:
    ./configure --prefix=/mnt/storage/home/hpcuser10/sw/openmpi-4.1.1-gcc --disable-ipv6 --without-ucx --enable-static --with-tm=/opt/pbs CC=gcc CXX=g++ FC=gfortran
    • '--without-ucx' отключает поиск установленного UCX
    • '--with-tm' служит для интеграции с Altair PBS Pro
  • После выполнения 'make -s install' нужно перейти в поддиректорию etc директории, указанной ранее в параметре '--prefix', и добавить в файл openmpi-mca-params.conf следующую строку:
    btl_openib_allow_ib = 1

Ниже приведён пример самостоятельной компиляции OpenMPI 1.6.5 компилятором gcc, идущим в составе операционной системы. Предполагается, что изначально у пользователя нет никаких индивидуальных настроек переменных PATH или LD_LIBRARY_PATH. Если ранее с помощью утилиты mpi-selector была выбрана какая-то реализация MPI, её следует отключить командой 'mpi-selector --unset'.

  • Скачать дистрибутив OpenMPI с официального сайта на персональный компьютер, затем скопировать на кластер.
  • Разархивировать дистрибутив:
    tar -xjf openmpi-1.6.5.tar.bz2
    cd openmpi-1.6.5
  • При необходимости посмотреть инструкции и возможные параметры компиляции:
    less INSTALL
    ./configure --help | less
  • Сконфигурировать. В параметре '--prefix' указать, куда потом будет производиться установка. Параметр '--disable-openib-connectx-xrc' необходим, т.к. иначе возникнут проблемы с драйверами сети Infiniband:
    ./configure --prefix=/mnt/storage/home/hpcuser10/sw/openmpi-1.6.5-gcc --disable-ipv6 --disable-openib-connectx-xrc CC=gcc CXX=g++ F77=gfortran FC=gfortran
  • Скомпилировать:
    make -s all
  • Установить:
    make -s install
  • Для использования настроить переменные окружения. Например, добавив в ~/.bashrc следующие команды:
    openmpi165=/mnt/storage/home/hpcuser10/sw/openmpi-1.6.5-gcc
    export PATH=${openmpi165}/bin:${PATH}
    export LD_LIBRARY_PATH=${openmpi165}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}
    export MANPATH=${openmpi165}/share/man:${MANPATH}