Гетерогенный кластер | ЛИТ/ОИЯИ
 
Платформа "HybriLIT"

Установленное ПО


Системное ПО (Linux, SLURM, Modules)

  • Scientific Linux

    7.5 (Nitrogen)

  • SLURM
  • Modules
  • gcc

    gcc/v4.9.3-1, gcc/v5.3.0-1, gcc/v6.2.0-2, gcc/v7.2.0-1, gcc/v8.2.0-1, gcc/v8.3.0, gcc/v9.1.0-1, gcc/v10.2.0, gcc/v11.2.0


ПО для параллельных вычислений

* Чтобы посмотреть актуальную версию ПО, наберите в cmd следующую команду: module avail и название модуля, например:

module avail CUDA
  • CUDA

    Библиотека CUDA позволяет использовать ресурсы GPU NVidia.
    Версия: v8.0-1, v9.2, v10.0-1, v10.1-1, v11.4
    Настроить переменную окружения можно командой, например, для версии CUDA 10.0-1:

    module add CUDA/10.0-1

    Сайт: http://www.nvidia.ru/object/cuda-parallel-computing-ru.html

  • intel

    Intel C++ — оптимизирующий компилятор, разрабатываемый фирмой Intel.
    Версия: v2018.1.163-9, v2019.3.199, v2021.1, intel-qs/v20-07-14, intel-qs/v21-01-14v
    Настроить переменную окружения можно командой, например, для версии v2021.1:

    module add intel/v2021.1

    Сайт: https://software.intel.com/en-us/compilers
    Средства Intel для разработки программного обеспечения

  • OpenMPI

    Свободная реализация технологии MPI-2.
    Версии: v1.8.8-1, v2.1.2-2, v3.1.2, v3.1.3, v3.1.3_psm2, v4.1.1_gcc1120
    Настроить переменную окружения можно командой (соответственно для каждой версии):

    module add openmpi/v3.1.3

    Сайт: https://www.open-mpi.org/


Пакеты прикладных программ

* Чтобы посмотреть актуальную версию ПО, наберите в cmd следующую команду: module avail и название модуля, например:

module avail CMake
CMake

(от англ. cross-platform make) — это кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода.
Версии: v3.16.5, v3.19.1, v3.22.0
Настроить переменную окружения можно командой (соответственно для каждой версии):

module add CMake/v3.16.5

Сайт: https://cmake.org/

FairSoft

Программный пакет для моделирования, реконструкции и анализа данных.
Версии: may16p1_gcc485, oct17p1, may18p1, june19p1_gcc485, june19p2_gcc485, apr21patches_gcc1120
Настроить переменную окружения можно командой (соответственно для каждой версии):

module add FairSoft/apr21patches_gcc1120

Сайт: https://fairroot.gsi.de/

FairRoot

Программный пакет для моделирования, реконструкции и анализа данных.
Версия: v16.06_gcc485, oct17p1, v18.0.4, v18.2.0_gcc485, v18.2.1_gcc485, v18.4.2_gcc1120
Настроить переменную окружения можно командой (соответственно для каждой версии):

module add FairRoot/oct17p1

Сайт: https://fairroot.gsi.de/

FLAIR

Удобный интерфейс для FLUKA при работе с входными данными, запуске кода и визуализации выходных данных.
Версия: v2.3.0
Настроить переменную окружения можно командой:

module add FLAIR v2.3.0

Сайт: http://www.fluka.org/flair/

FLUKA

Программа для моделирования физики взаимодействия элементарных частиц (в том числе сверхвысоких энергий, что является отличительной особенностью данной программы) с использованием методов Монте-Карло.
Версии: v2011.2x-8, v2020.0.3, v2021.2.2
Настроить переменную окружения можно командой (соответственно для каждой версии):

module add FLUKA/v2011.2x-8

Сайт: http://www.fluka.org/fluka.php

GEANT4

GEANT — инструментарий для моделирования прохождения элементарных частиц через вещество с использованием методов Монте-Карло.
Версия: v4.10.07.p01_gcc910
Настроить переменную окружения можно командой:

module add GEANT4/v4.10.07.p01_gcc910

Сайт: http://www.geant4.org/geant4/

GROMACS

Пакет программ для моделирования физико-химических процессов в молекулярной динамике
Версии: v2019.3, v5.1.3_gcc485_cuda80
Настроить переменную окружения можно командой (соответственно для каждой версии):

module add GROMACS/v2019.3

Сайт: http://www.gromacs.org/

java

Компилятор для языка программирования java.

  • Версия: v8u181
    Настроить переменную окружения можно командой:

    module add java v8u181
  • Версия: v8u91-1
    Настроить переменную окружения можно командой:

    module add java v8u91-1
LAMMPS

Свободный пакет для классической молекулярной динамики, написанный группой из Сандийских национальных лабораторий. Пакет может применяться для крупных расчётов (до десятков миллионов атомов). Для работы на многопроцессорных системах используется интерфейс MPI.

Версия: v12.12.18
Настроить переменную окружения можно командой:

module add LAMMPS v12.12.18

Сайт: https://lammps.sandia.gov/

PandaRoot

Фреймворк для симуляции для эксперимента PANDA на FAIR в Дармштадте, основанный на ROOT и Virtual Monte-Carlo.
Версии: dec17p2b, may19
Настроить переменную окружения можно командой (соответственно для каждой версии):

module add PandaRoot/dec17p2b

Сайт: https://panda.gsi.de/

Python

Высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.
Версии: 2.7.10-3, 3.6.5, 3.10.2
Настроить переменную окружения можно командой (соответственно для каждой версии):

module add Python/v2.7.10-3

Сайт: https://www.python.org/

REDUCE

Бесплатная система компьютерной алгебры для выполнения скалярной, векторной и матричной алгебры с помощью компьютера, которая также поддерживает числовую аппроксимацию произвольной точности и интерфейсы к gnuplot для предоставления графики.
Версия: svn-4830
Настроить переменную окружения можно командой:

module add reduce-algebra/svn-4830

Сайт: https://reduce-algebra.sourceforge.io

ROOT

Модульный научный программный инструментарий, обеспечивающий все функциональные возможности, необходимые для обработки больших данных, статистического анализа, визуализации и хранения.
Версия: 6-18-00
Настроить переменную окружения можно командой:

module add ROOT/v6-18-00

Сайт: https://root.cern.ch/


Лицензионные программные пакеты

* Чтобы посмотреть актуальную версию ПО, наберите в cmd следующую команду: module avail и название модуля, например:

module avail COMSOL
  • Comsol Multiphysics

    Универсальная кроссплатформенная программная среда для проектирования, дизайна и анализа методом конечных элементов, предназначенная для моделирования и симуляции различных физической системы.
    Версия: 5.6, 6.0
    Количество лицензий: 4 графических и по 1 для каждого модуля
    Настроить переменную окружения можно командой:

    module add COMSOL/v6.0

    Сайт: https://www.comsol.ru/comsol-multiphysics

  • Maple

    Программный пакет, система компьютерной алгебры, предназначенная для символьных вычислений, хотя имеет ряд средств и для численного решения дифференциальных уравнений и нахождения интегралов. Обладает развитыми графическими средствами. Имеет собственный язык программирования, напоминающий Паскаль.
    Версия: 2020.2
    Количество лицензий: 5
    Настроить переменную окружения можно командой:

    module add Maple/v2020.2

    Сайт: https://www.maplesoft.com/products/maple/

  • Wolfram Mathematica

    Cистема компьютерной алгебры, широко используемая в научных, инженерных, математических и компьютерных областях. Для системы существуют многочисленные расширения, решающие специализированные классы задач.
    Версия: 11.2-1
    Количество лицензий: 5
    Настроить переменную окружения можно командой:

    module add Mathematica/v11.2-1

    Сайт: https://reference.wolfram.com/language/

  • Matlab

    Пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования, используемый в этом пакете. Пакет предоставляет пользователю большое количество (несколько сотен) функций для анализа данных, покрывающие практически все области математики.
    Версия: R2020b
    Доступных лицензий: 6
    Настроить переменную окружения можно командой:

    module add MATLAB/R2020b

    Сайт: https://www.mathworks.com/help/matlab/


Библиотеки

* Чтобы посмотреть актуальную версию ПО, наберите в cmd следующую команду: module avail и название модуля, например:

module avail CLN
CLN

Библиотека для эффективных вычислений со всеми видами чисел с произвольной точностью.
Версия: 1.3.4-1
Настроить переменную окружения можно командой:

module add CLN/v1.3.4-1

Сайт: https://www.ginac.de/CLN/

FFTW

Самое быстрое преобразование Фурье на Западе — это библиотека программного обеспечения для вычисления дискретных преобразований Фурье.
Версии: v3.3.7-2, v3.3.7-5
Настроить переменную окружения можно командой (соответственно для каждой версии):

module add fftw/v3.3.7-2

Сайт: http://www.fftw.org/

Ginac

Является C++ библиотекой. GiNaC предназначена для обеспечения возможности создания интегрированных систем, которые используют символьные вычисления. GiNaC распространяется под условиями GNU General Public License (GPL).
Версия: v1.7.3-1
Настроить переменную окружения можно командой:

module add Ginac/v1.7.3-1

Сайт: https://www.ginac.de/

GSL v1.16

GNU Scientific Library (или GSL) — это библиотека, написанная на языке программирования C для численных вычислений в прикладной математике и науке.
Версии: v1.16-1, v2.6
Настроить переменную окружения можно командой:

module add gsl/v2.6

Сайт: https://www.gnu.org/software/gsl/

PostgreSQL

Свободная объектно-реляционная система управления базами данных (СУБД).
Версия: 12.1
Настроить переменную окружения можно командой:

module add PostgreSQL/v12.1_gcc910

Сайт: https://postgresql.org/

Protocol Buffers

Протокол сериализации структурированных данных, предложенный Google.
Версия: 3.11.3
Настроить переменную окружения можно командой:

module add protobuf/v3.11.3

Сайт: https://developers.google.com/protocol-buffers/

Quantum ESPRESSO

Quantum opEn-Source Package for Research in Electronic Structure, Simulation, and Optimization – интегрированный набор компьютерных кодов с открытым исходным кодом для расчетов электронной структуры и моделирования материалов на наноуровне. Он основан на теории функционала плотности, плоских волнах и псевдопотенциалах.
Версия: 6.4.1, 6.6_oneapi
Настроить переменную окружения можно командой:

module add quantum-espresso/v6.4.1

Сайт: http://www.quantum-espresso.org/

TRNG

Tina’s Random Number Generator Library – современная библиотека C ++ для генерации псевдослучайных чисел для последовательного и параллельного моделирования Монте-Карло.
Версия: 4.24
Настроить переменную окружения можно командой:

module add trng/v4.24_gcc102

Сайт: https://www.numbercrunch.de/trng/

zlib

Свободная кроссплатформенная библиотека для сжатия данных.
Версия: 1.2.11
Настроить переменную окружения можно командой:

module add zlib/v1.2.11-1

Сайт: http://www.zlib.net/


Средства Intel для разработки программного обеспечения

Aplication Performance Snapshot

Aplication Performance Snapshot представляет из себя инструмент для профилирования приложений. Данное приложение входит в состав Intel Parallel Studio, которая установлена на кластере HybriLIT.

Aplication Performance Snapshot позволяет анализировать основные параметры, такие как использование памяти, объем пересылок, время работы каждого процесса, задержки в работе и т.д.

Для профилирования приложения необходимо:

  1. Подключить модуль, обеспечивающий поддержку переменных окружения для работы с Intel Parallel Studio:
$ module add intel/v2019.0.018
  1. Скомпилировать приложение при помощи подключенной библиотеки:

для MPI-программы

$ mpiicc name_app.cpp

для OpenMP-программы

$ icc –qopenmp name_app.cpp

или

$ icc name_app.cpp

для последовательной программы
где name_app.cpp — название компилируемого файла.

  1. Запустить исполняемый файл (по умолчанию a.out ) с ключом — aps, или при помощи script-файла:

для MPI-программы

#!/bin/sh
#SBATCH -p cpu
#SBATCH -n 4
#SBATCH -t 600
mpirun aps ./a.out

для OpenMP-программы

#!/bin/sh
#SBATCH -p cpu
#SBATCH -n 4
#SBATCH -t 600
export OMP_NUM_THREADS=5
export OMP_PLACES=cores
aps ./a.out

для последовательной программы

#!/bin/sh
#SBATCH -p cpu
#SBATCH -n 1
#SBATCH -t 600
aps ./a.out
  1. Все полученные профилировщиком данные будет размещены в папке aps_result_[дата запуска]. Для отображения этих данных сгенерируйте отчет в формате HTML (рис. 1, рис. 2) используя команду:
$ aps -R aps_result_ [дата запуска]

Рис. 1. Скриншот output-файла Aplication Perfomance Snapshot для MPI приложения (нажмите на картинку, для перехода на страницу отчета)

Рис. 2. Скриншот output-файла Aplication Perfomance Snapshot для OpenMP приложения (нажмите на картинку, для перехода на страницу отчета)

Intel Trace Analyzer and Collector

Intel Trace Analyzer and Collector предназначен для трассировки MPI-процессов.

Основные задачи:

  • Визуализация поведения параллельного приложения;
  • Оценка профилей статистики и балансировки нагрузки;
  • Анализ производительности подпрограмм или блоков кода;
  • Детализация модели обмена, параметров и данных о производительности;
  • Определение горячих точек связи;
  • Уменьшение времени выполнения и повышение эффективности приложения.

Для запуска приложения нужно повторить пункты 1-2 из раздела MPI Performance Snapshot. Затем запустить программу на счет с ключем –trace. Ниже показан пример используемого скрипта:

#!/bin/sh
#SBATCH -p cpu
#SBATCH -n 4
#SBATCH -t 600
mpirun -trace ./a.out

Для просмотра результатов нужно воспользоваться графической оболочкой ITAC GUI  с помощью команды

$ traceanalyzer

В результате будет открыто приложение, в которое необходимо загрузить файл (по умолчанию a.out.stf). Пример работы трассировщика ITAC  представлен  на Рис.3.

В верхней части Рис.3. отображается распределение вычислительной нагрузки на MPI-процессах и межпроцессорные коммуникации (шкала Event Timeline), числовые значения отображаются в нижней части рисунка.

itac1

Рис. 3.  Пример коммуникации в MPI-приложении.

На графике Message Profile можно оценить, какие именно процессы обмениваются сообщениями и какие коммуникации наиболее затратные по времени (Рис. 4 ).

itac2

Рис. 4. Обмены между процессами в MPI приложении.

В пункте Collective operations можно построить таблицу с временными  затратами на коллективные MPI-операции (рис. 5).

Collective_operations-2

Рис. 5. Таблица временных затрат на коллективные операции в MPI-приложении.

Заключение
Из представленного обзора инструментов профилирования и трассировки MPI-приложений можно сделать следующие выводы:

  • Application Performance Snapshot —  предназначен для  быстрой оценки эффективности, имеет минимальные накладные расходы, обеспечивает профилировку до 32000 MPI процессов, позволяет получить быструю оценку дисбаланса MPI и OpenMP, и получить общую оценку производительности (GFLOPS).
  • Intel Trace Analyzer and Collector —  позволяет провести детальное исследование MPI-приложения, выявить шаблоны коммуникации, локализовать конкретные «узкие» места программы.
Open Visual Inference and Neural Network Optimization

OpenVINO (Open Visual Inference и Neural Network Optimization) представляет из себя бесплатный набор инструментов, облегчающий оптимизацию модели глубокого обучения из инфраструктуры и развертывания с использованием механизма вывода на аппаратном обеспечении Intel.

Movidius Neural Compute Stick (NCS Movidius) — это миниатюрный ускоритель для решений, связанных с искусственным интеллектом, нейронными сетями и глубоким обучением. Ускоритель позволяет реализовывать элементы искусственного интеллекта на самых разнообразных платформах и устройствах. Данное устройство не предназначено для обучения моделей нейронных сетей.

Основное преимущество продукта — производительность, минимальный размер и практически нулевое количество зависимостей. Продукт идеально подходит для реализации приложений, использующих Deep Learning и Computer Vision для решения задач. Из минусов — поддержка обучения нейронных сетей не включена в продукт.

В данной инструкции описаны этапы установки и настройки инструмента OpenVINO Tools для ОС Windows и Linux, а также описана работа с оптимизатором моделей.

Для вывода в Inference Engine ознакомьтесь с документацией конкретно для вашего случая: Inference Engine Developer Guide


Средства для квантовых вычислений

Пакет Intel-QS

Intel Quantum Simulator (Intel-QS), также известный как qHiPSTER (Quantum High Performance Software Testing Environment), представляет собой симулятор квантовых схем, оптимизированный для максимального использования преимуществ многоядерных и многоузловых архитектур. Он основан на полном представлении состояния кубита, но избегает явного представления вентилей и других квантовых операций в терминах матриц. Intel-QS использует протокол MPI (интерфейс передачи сообщений) для управления взаимодействием между распределенными ресурсами, используемыми для хранения и управления квантовыми состояниями.

Настроить окружение для работы с пакетом можно командой:

module add intel-qs/v20-07-14
module add intel-qs/v21-01-14

Сайт: https://github.com/iqusoft/intel-qs

Пакет QuEST

Набор инструментов Quantum Exact Simulation Toolkit (QuEST) – это высокопроизводительный симулятор квантовых схем, векторов состояний и матриц плотности. QuEST использует многопоточность, позволяет проводить расчеты на графических процессорах и распределенных вычислительных системах.

Сайт: https://quest.qtechtheory.org/