Системное ПО (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 и название модуля, например:
1 |
module avail CUDA |
-
CUDA
Библиотека CUDA позволяет использовать ресурсы GPU NVidia.
Версия: v8.0-1, v9.2, v10.0-1, v10.1-1, v11.4, v12.1
Настроить переменную окружения можно командой, например, для версии CUDA 10.0-1:1module 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:1module 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
Настроить переменную окружения можно командой (соответственно для каждой версии):1module add openmpi/v3.1.3
Пакеты прикладных программ
* Чтобы посмотреть актуальную версию ПО, наберите в cmd следующую команду: module avail и название модуля, например:
1 |
module avail CMake |
CMake
(от англ. cross-platform make) — это кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода.
Версии: v3.16.5, v3.19.1, v3.22.0
Настроить переменную окружения можно командой (соответственно для каждой версии):
1 |
module add CMake/v3.16.5 |
Сайт: https://cmake.org/
FairSoft
Программный пакет для моделирования, реконструкции и анализа данных.
Версии: may16p1_gcc485, oct17p1, may18p1, june19p1_gcc485, june19p2_gcc485, apr21patches_gcc1120
Настроить переменную окружения можно командой (соответственно для каждой версии):
1 |
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
Настроить переменную окружения можно командой (соответственно для каждой версии):
1 |
module add FairRoot/oct17p1 |
Сайт: https://fairroot.gsi.de/
FLAIR
Удобный интерфейс для FLUKA при работе с входными данными, запуске кода и визуализации выходных данных.
Версия: v2.3.0
Настроить переменную окружения можно командой:
1 |
module add FLAIR v2.3.0 |
Сайт: http://www.fluka.org/flair/
FLUKA
Программа для моделирования физики взаимодействия элементарных частиц (в том числе сверхвысоких энергий, что является отличительной особенностью данной программы) с использованием методов Монте-Карло.
Версии: v2011.2x-8, v2020.0.3, v2021.2.2
Настроить переменную окружения можно командой (соответственно для каждой версии):
1 |
module add FLUKA/v2011.2x-8 |
Сайт: http://www.fluka.org/fluka.php
GEANT4
GEANT — инструментарий для моделирования прохождения элементарных частиц через вещество с использованием методов Монте-Карло.
Версия: v4.10.07.p01_gcc910
Настроить переменную окружения можно командой:
1 |
module add GEANT4/v4.10.07.p01_gcc910 |
Сайт: http://www.geant4.org/geant4/
GROMACS
Пакет программ для моделирования физико-химических процессов в молекулярной динамике
Версии: v2019.3, v5.1.3_gcc485_cuda80
Настроить переменную окружения можно командой (соответственно для каждой версии):
1 |
module add GROMACS/v2019.3 |
Сайт: http://www.gromacs.org/
java
Компилятор для языка программирования java.
- Версия: v8u181
Настроить переменную окружения можно командой:
1module add java v8u181 - Версия: v8u91-1
Настроить переменную окружения можно командой:
1module add java v8u91-1
LAMMPS
Свободный пакет для классической молекулярной динамики, написанный группой из Сандийских национальных лабораторий. Пакет может применяться для крупных расчётов (до десятков миллионов атомов). Для работы на многопроцессорных системах используется интерфейс MPI.
Версия: v12.12.18
Настроить переменную окружения можно командой:
1 |
module add LAMMPS v12.12.18 |
Сайт: https://lammps.sandia.gov/
PandaRoot
Фреймворк для симуляции для эксперимента PANDA на FAIR в Дармштадте, основанный на ROOT и Virtual Monte-Carlo.
Версии: dec17p2b, may19
Настроить переменную окружения можно командой (соответственно для каждой версии):
1 |
module add PandaRoot/dec17p2b |
Сайт: https://panda.gsi.de/
Python
Высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.
Версии: 2.7.10-3, 3.6.5, 3.10.2
Настроить переменную окружения можно командой (соответственно для каждой версии):
1 |
module add Python/v2.7.10-3 |
Сайт: https://www.python.org/
REDUCE
Бесплатная система компьютерной алгебры для выполнения скалярной, векторной и матричной алгебры с помощью компьютера, которая также поддерживает числовую аппроксимацию произвольной точности и интерфейсы к gnuplot для предоставления графики.
Версия: svn-4830
Настроить переменную окружения можно командой:
1 |
module add reduce-algebra/svn-4830 |
Сайт: https://reduce-algebra.sourceforge.io
ROOT
Модульный научный программный инструментарий, обеспечивающий все функциональные возможности, необходимые для обработки больших данных, статистического анализа, визуализации и хранения.
Версия: 6-18-00
Настроить переменную окружения можно командой:
1 |
module add ROOT/v6-18-00 |
Сайт: https://root.cern.ch/
Лицензионные программные пакеты
* Чтобы посмотреть актуальную версию ПО, наберите в cmd следующую команду: module avail и название модуля, например:
1 |
module avail COMSOL |
-
Comsol Multiphysics
Универсальная кроссплатформенная программная среда для проектирования, дизайна и анализа методом конечных элементов, предназначенная для моделирования и симуляции различных физической системы.
Версия: 6.0, 6.2
Количество лицензий: 4 графических и по 1 для каждого модуля
Настроить переменную окружения можно командой:module add COMSOL/v6.0
-
Maple
Программный пакет, система компьютерной алгебры, предназначенная для символьных вычислений, хотя имеет ряд средств и для численного решения дифференциальных уравнений и нахождения интегралов. Обладает развитыми графическими средствами. Имеет собственный язык программирования, напоминающий Паскаль.
Версия: 2020.2
Количество лицензий: 5
Настроить переменную окружения можно командой:1module add Maple/v2020.2 -
Wolfram Mathematica
Cистема компьютерной алгебры, широко используемая в научных, инженерных, математических и компьютерных областях. Для системы существуют многочисленные расширения, решающие специализированные классы задач.
Версия: 11.2-1
Количество лицензий: 5
Настроить переменную окружения можно командой:1module add Mathematica/v11.2-1 -
Matlab
Пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования, используемый в этом пакете. Пакет предоставляет пользователю большое количество (несколько сотен) функций для анализа данных, покрывающие практически все области математики.
Версия: R2020b, R2022b
Доступных лицензий: 6
Настроить переменную окружения можно командой:1module add MATLAB/R2020b
Библиотеки
* Чтобы посмотреть актуальную версию ПО, наберите в cmd следующую команду: module avail и название модуля, например:
1 |
module avail CLN |
CLN
Библиотека для эффективных вычислений со всеми видами чисел с произвольной точностью.
Версия: 1.3.4-1
Настроить переменную окружения можно командой:
1 |
module add CLN/v1.3.4-1 |
Сайт: https://www.ginac.de/CLN/
FFTW
Самое быстрое преобразование Фурье на Западе — это библиотека программного обеспечения для вычисления дискретных преобразований Фурье.
Версии: v3.3.7-2, v3.3.7-5
Настроить переменную окружения можно командой (соответственно для каждой версии):
1 |
module add fftw/v3.3.7-2 |
Сайт: http://www.fftw.org/
Ginac
Является C++ библиотекой. GiNaC предназначена для обеспечения возможности создания интегрированных систем, которые используют символьные вычисления. GiNaC распространяется под условиями GNU General Public License (GPL).
Версия: v1.7.3-1
Настроить переменную окружения можно командой:
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
Настроить переменную окружения можно командой:
1 |
module add gsl/v2.6 |
Сайт: https://www.gnu.org/software/gsl/
PostgreSQL
Свободная объектно-реляционная система управления базами данных (СУБД).
Версия: 12.1
Настроить переменную окружения можно командой:
1 |
module add PostgreSQL/v12.1_gcc910 |
Сайт: https://postgresql.org/
Protocol Buffers
Протокол сериализации структурированных данных, предложенный Google.
Версия: 3.11.3
Настроить переменную окружения можно командой:
1 |
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
Настроить переменную окружения можно командой:
1 |
module add quantum-espresso/v6.4.1 |
Сайт: http://www.quantum-espresso.org/
TRNG
Tina’s Random Number Generator Library – современная библиотека C ++ для генерации псевдослучайных чисел для последовательного и параллельного моделирования Монте-Карло.
Версия: 4.24
Настроить переменную окружения можно командой:
1 |
module add trng/v4.24_gcc102 |
Сайт: https://www.numbercrunch.de/trng/
zlib
Свободная кроссплатформенная библиотека для сжатия данных.
Версия: 1.2.11
Настроить переменную окружения можно командой:
1 |
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 позволяет анализировать основные параметры, такие как использование памяти, объем пересылок, время работы каждого процесса, задержки в работе и т.д.
Для профилирования приложения необходимо:
- Подключить модуль, обеспечивающий поддержку переменных окружения для работы с Intel Parallel Studio:
1 |
$ module add intel/v2019.0.018 |
- Скомпилировать приложение при помощи подключенной библиотеки:
для MPI-программы
1 |
$ mpiicc name_app.cpp |
для OpenMP-программы
1 |
$ icc –qopenmp name_app.cpp |
или
1 |
$ icc name_app.cpp |
для последовательной программы
где name_app.cpp — название компилируемого файла.
- Запустить исполняемый файл (по умолчанию a.out ) с ключом — aps, или при помощи script-файла:
для MPI-программы
1 2 3 4 5 |
#!/bin/sh #SBATCH -p cpu #SBATCH -n 4 #SBATCH -t 600 mpirun aps ./a.out |
для OpenMP-программы
1 2 3 4 5 6 7 |
#!/bin/sh #SBATCH -p cpu #SBATCH -n 4 #SBATCH -t 600 export OMP_NUM_THREADS=5 export OMP_PLACES=cores aps ./a.out |
для последовательной программы
1 2 3 4 5 |
#!/bin/sh #SBATCH -p cpu #SBATCH -n 1 #SBATCH -t 600 aps ./a.out |
- Все полученные профилировщиком данные будет размещены в папке aps_result_[дата запуска]. Для отображения этих данных сгенерируйте отчет в формате HTML (рис. 1, рис. 2) используя команду:
1 |
$ 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. Ниже показан пример используемого скрипта:
1 2 3 4 5 |
#!/bin/sh #SBATCH -p cpu #SBATCH -n 4 #SBATCH -t 600 mpirun -trace ./a.out |
Для просмотра результатов нужно воспользоваться графической оболочкой ITAC GUI с помощью команды
1 |
$ traceanalyzer |
В результате будет открыто приложение, в которое необходимо загрузить файл (по умолчанию a.out.stf). Пример работы трассировщика ITAC представлен на Рис.3.
В верхней части Рис.3. отображается распределение вычислительной нагрузки на MPI-процессах и межпроцессорные коммуникации (шкала Event Timeline), числовые значения отображаются в нижней части рисунка.
Рис. 3. Пример коммуникации в MPI-приложении.
На графике Message Profile можно оценить, какие именно процессы обмениваются сообщениями и какие коммуникации наиболее затратные по времени (Рис. 4 ).
Рис. 4. Обмены между процессами в MPI приложении.
В пункте Collective operations можно построить таблицу с временными затратами на коллективные MPI-операции (рис. 5).
Рис. 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 (интерфейс передачи сообщений) для управления взаимодействием между распределенными ресурсами, используемыми для хранения и управления квантовыми состояниями.
Настроить окружение для работы с пакетом можно командой:
1 |
module add intel-qs/v20-07-14 |
1 |
module add intel-qs/v21-01-14 |
Сайт: https://github.com/iqusoft/intel-qs
Пакет QuEST
Набор инструментов Quantum Exact Simulation Toolkit (QuEST) – это высокопроизводительный симулятор квантовых схем, векторов состояний и матриц плотности. QuEST использует многопоточность, позволяет проводить расчеты на графических процессорах и распределенных вычислительных системах.