Здесь находятся рекомендации по установке, запуску и оптимизации для вычислений на кластере различных программных пакетов
C2PK — Программный пакет для квантовой химии и физики твердого тела. Репозиторий на github.
Последовательность сборки пакета в домашнем каталоге
#Выбор mpi - vapich4.1/gcc 8.5.0
module load mvapich4/gcc64
# Вспомогательная библиотека DBCSR от разработчиков C2PK
wget 'https://github.com/cp2k/dbcsr/releases/download/v2.9.1/dbcsr-2.9.1.tar.gz'
tar xf dbcsr-2.9.1.tar.gz
mkdir dbcsr-2.9.1/build
cd dbcsr-2.9.1/build
# каталог установки ~/dbcsr
cmake .. -DUSE_MPI=ON -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpic++ -DCMAKE_Fortran_COMPILER=mpif90 -DCMAKE_INSTALL_PREFIX=${HOME}/dbcsr
make -j 8
make install
# Возвращаемся в исходный каталог
cd ../..
# Сборка CP2K
wget https://github.com/cp2k/cp2k/releases/download/v2026.1/cp2k-2026.1.tar.bz2
tar xf cp2k-2026.1.tar.bz2
mkdir cp2k-2026.1/build
cd cp2k-2026.1/build
# каталог установки ~/cp2k
cmake .. -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpic++ -DCMAKE_Fortran_COMPILER=mpif90 -DCP2K_USE_MPI=ON -DCMAKE_INSTALL_PREFIX=${HOME}/cp2k
make -j 8
make install
cd ../..
Установка примеров (при желании):
git clone https://github.com/cp2k/cp2k-examples.git
Пример запуска из подкаталога _scratch/work домашнего каталога:
module load mvapich4/gcc64
export LD_LIBRARY_PATH="${HOME}/cp2k/lib64/:$LD_LIBRARY_PATH"
export PATH="${HOME}/cp2k/bin/:$PATH"
mkdir ~/_scratch/work
cd ~/_scratch/work
cp ~/cp2k-examples/gw/1_H2O_GW100/H2O_GW100_def2-QZVP.inp test.inp
export OMP_NUM_THREADS=8
export OMP_PLACES=cores
export OMP_PROC_BIND=true
srun --ntasks-per-node=2 --cpus-per-task=8 -N 1 cp2k.psmp -i test.inp > test.out
Сгенерировано ИИ
Выбор оптимального числа узлов кластера для LAMMPS — это процесс поиска баланса между скоростью счета и эффективностью использования ресурсов. Не существует единственного "правильного" числа, так как оно зависит от размера вашей системы, аппаратного обеспечения и физической модели. Вот пошаговая стратегия, которая поможет вам найти этот оптимум.
Это главный метод для определения лимитов масштабируемости. Суть в том, чтобы взять фиксированную задачу (вашу систему с определенным количеством атомов) и запускать её на нарастающем количестве ядер (например, N=1, 2, 4, 8, 16, 32, 64, 128...).
Что делать: Запустите вашу систему на 100-200 шагов для каждого количества ядер. Используйте команды balance или fix balance для распределения нагрузки .
На что смотреть:
Loop time): Сравните, во сколько раз ускорился расчет. Идеальное ускорение (100%) — это когда на 64 ядрах расчет идет в 64 раза быстрее.(T1 / TN) / N * 100%. Как правило, LAMMPS показывает эффективность >50%, пока на одно ядро приходится несколько сотен атомов .Где предел: Вы увидите, что после определенного числа ядер время перестает значительно сокращаться. Это и есть точка насыщения, где накладные расходы на коммуникацию (обмен данными между узлами) начинают доминировать над вычислениями.
После каждого прогона LAMMPS выводит детальную статистику. Это ваш главный инструмент диагностики. В конце файла log.lammps вы увидите таблицу:
| Section | %varavg | %total |
|---|---|---|
| Pair | ... | ... |
| Neigh | ... | ... |
| Comm | ... | ... |
| Other | ... | ... |
Следите за Comm (Communication): Если процент времени, потраченный на коммуникацию (Comm), при увеличении числа узлов становится слишком большим (например, >30-40%), дальнейшее добавление узлов неэффективно. Прирост производительности будет минимальным .
Следите за %varavg: Высокое значение (близкое к 100%) указывает на сильную несбалансированность нагрузки. Это значит, что одни ядра простаивают в ожидании других. В этом случае стоит сначала попробовать балансировку (fix balance) .
LAMMPS использует пространственное разбиение: симуляционный ящик режется на прямоугольные блоки, каждый из которых отдается одному MPI-процессу .
Проблема "блинов": Если вы используете "неудобное" число MPI-процессов (например, простое число, такое как 7 или 11), разбиение может получиться несбалансированным (например, длинные и тонкие "слайсы").
Что делать: Используйте команду processors в скрипте, чтобы вручную задать раскладку сетки (например, processors 4 4 4 для 64 ядер), чтобы блоки были максимально кубическими. Это минимизирует площадь поверхности обмена данными .
Разные задачи масштабируются по-разному :
Потенциалы малого радиуса (LJ, EAM): Обычно хорошо масштабируются. Ограничением часто становится сетка для дальнодействия (PPPM).
Дальнодействие (Kspace, PPPM): Если в системе есть кулоновские взаимодействия (вода, ионы), расчеты PPPM включают быстрые преобразования Фурье (FFT). FFT требует глобальной коммуникации, что сильно ухудшает масштабируемость за пределы одного узла. В таких системах "золотой серединой" часто является 1-4 узла, даже если у вас много ядер.
Связанные списки (Neigh): Если в профайлере Neigh занимает >50% времени, попробуйте увеличить параметр every в команде neigh_modify (например, с 1 на 10), чтобы реже перестраивать списки соседей .
Для многоядерных узлов часто эффективнее использовать гибридный режим вместо "чистого" MPI.
Правило: Запускайте 1 MPI-процесс на сокет (физический чип) или на группу ядер, используя OpenMP для распараллеливания внутри узла.
Зачем: Это уменьшает количество MPI-сообщений, которыми обмениваются узлы, и снижает нагрузку на коммуникационную сеть .
fix balance 10 1.1 rcb .Comm), начните добавлять второй, третий и четвертый узлы.Официальная документация LAMMPS подчеркивает: "Нет замены определению узких мест производительности и опробованию различных вариантов" . Всегда проверяйте гипотезы короткими прогонами (100-200 шагов) на вашей конкретной системе и вашем конкретном кластере.
Система Matlab (Matrix Laboratory) - разработка компании The MathWorks, предназначенная для выполнения математических расчетов при решении научных и инженерных задач.
Достоинства Matlab – это, прежде всего, простота матричных операций и наличие многочисленных пакетов программ (Toolbox-ов), среди которых
Parallel Computing Toolbox, расширяющий Matlab на уровне языка операциями параллельного программирования.
Parallel Computing Toolbox достаточно для написания и запуска параллельной Matlab программы на локальной машине (Product Documentation).
Вычисления с Matlab на кластере требуют уже 2 продукта:
Parallel Computing Toolbox и
Matlab Distributed Computing Server
В ИММ имеются все 3 основных продукта для параллельных вычислений с Matlab на кластере "Уран" (версия Matlab R2011b и старше):
1) Matlab: 10 лицензий,
2) Parallel Computing Toolbox: 10 лицензий
(прежнее название Distributed Computing Toolbox),
3) Matlab Distributed Computing Server: 1000 лицензий
(прежнее название Matlab Distributed Computing Engine);
а также большое количество специализированных Toolbox-ов: по 10 лицензий на SIMULINK, Signal_Blocks, Image_Acquisition_Toolbox, Image_Toolbox, MAP_Toolbox, Neural_Network_Toolbox, Optimization_Toolbox, PDE_Toolbox, Signal_Toolbox, Statistics_Toolbox, Wavelet_Toolbox и 2 лицензии на Filter_Design_Toolbox.
Список всех установленных на кластере продуктов Matlab и количество доступных лицензий на них можно уточнить командой
/opt/matlab-R2010a/etc/lmstat -aНазвание текущей рабочей версии Matlab можно узнать, набрав, например, в командной строке
echo 'exit' | matlab -nodisplayили выполнив в окне Matlab команду ver.
Замечания.
1. При работе в Matlab следует ориентироваться на документацию используемой версии.
2. Для смены текущей версии следует воспользоваться командой module.
Можно запускать программы из командной строки или из системы Matlab.
Для запуска программ на кластере из командной строки пользователю необходимо установить на своем компьютере программу PuTTY.
Запуск параллельных Matlab-программ из командной строки осуществляется с помощью разновидностей команды mlrun.
Для работы в диалогом окне Matlab на компьютере пользователя предварительно должен быть установлен и запущен какой-нибудь X-сервер (MobaXterm, X2Go).
Из командной строки вызвать Matlab
matlab или
matlab & (с освобождением командной строки)
и дождаться появления оконного интерфейса Matlab.
Запуск параллельных программ на кластере из системы Matlab осуществляется с помощью разновидностей служебной функции imm_sch.
Замечание. Можно работать в системе Matlab, запустив её в интерактивном текстовом режиме командой
matlab -nodisplayВыход осуществляется по команде exit.
Параллельные вычисления на кластере инициируются
1) запуском параллельных програм;
2) запуском частично параллельных программ (c parfor или spmd);
3) запуском программ с использованием GPU.
Подробнее на нижеследующих страницах.
В разделе "Запуск задач на кластере" находится краткая инструкция "Запуск параллельного Matlab".
Для работы с русскими буквами в Matlab'е необходимо правильно настроить кодировку файла с программой, и, при необходимости, настроить ввод русских букв в клиентской программе.
Возможны два варианта настройки кодировки файла с программой:
Вариант 1
На кластере "Уран" при запуске Matlab'а можно включить Windows-кодировку CP1251. Для этого необходимо запускать Matlab в окне терминала следующей командой:
LANG=ru_RU.CP1251 matlabПосле этого можно нормально работать с файлами, подготовленными в Windows.
Внимание. Данный вариант может не сработать при запуске счётной задачи на узлах кластера.
Как минимум, в начало счетной программы надо вставить команду:
feature('DefaultCharacterSet', 'cp-1251');
После этого строки, выводимые функцией fprintf(), будут сохраняться в правильной кодировке. Строки на русском языке, выводимые функцией disp(), к сожалению, будут испорчены в любом случае.
Если в программе для вывода результатов используется функция disp(), выполняются операции сравнения или сортировки строк с русскими буквами, то стоит попробовать второй вариант.
Вариант 2
После передачи файла из Windows на кластер можно перекодировать его в кодировку UTF-8. Следует помнить, что перекодированный файл будет некорректно отображаться в Windows, зато он без проблем будет обрабатываться на кластере.
2.a Перекодирование файла на кластере в командной строке. Файл пере