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

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


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

  • Scientific Linux

    7.9 (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 и название модуля, например:

  • CUDA

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

    Сайт: 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
    Настроить переменную окружения можно командой (соответственно для каждой версии):

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


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

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

CMake

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

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

FairSoft

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

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

FLAIR

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

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

FLUKA

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

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

GEANT4

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

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

GROMACS

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

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

java

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

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

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

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

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

PandaRoot

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

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

Python

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

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

REDUCE

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

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

ROOT

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

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


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

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

  • Comsol Multiphysics

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

    module add COMSOL/v6.0

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

  • Maple

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

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

  • Wolfram Mathematica

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

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

  • Matlab

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

    Доступных лицензий: 6
    Настроить переменную окружения можно командой:

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


Библиотеки

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

CLN

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

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

FFTW

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

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

Ginac

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

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

GSL v1.16

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

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

PostgreSQL

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

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

Protocol Buffers

Протокол сериализации структурированных данных, предложенный Google.
Версия: 3.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
Настроить переменную окружения можно командой:

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

TRNG

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

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

zlib

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

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


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

Aplication Performance Snapshot

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

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

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

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

  1. Скомпилировать приложение при помощи подключенной библиотеки:

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

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

или

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

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

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

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

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

  1. Все полученные профилировщиком данные будет размещены в папке aps_result_[дата запуска]. Для отображения этих данных сгенерируйте отчет в формате HTML (рис. 1, рис. 2) используя команду:

Рис. 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. Ниже показан пример используемого скрипта:

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

В результате будет открыто приложение, в которое необходимо загрузить файл (по умолчанию 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 (интерфейс передачи сообщений) для управления взаимодействием между распределенными ресурсами, используемыми для хранения и управления квантовыми состояниями.

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

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

Пакет QuEST

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

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