Модуль mpi4py
делает возможным формирование нескольких mpi-процессов с обменом сообщениями (данными) между ними даже тогда, когда они выполняются на разных вычислительных узлах (см. https://mpi4py.readthedocs.io/en/stable/tutorial.html).
Например, команда
pip3.9 install --user mpi4py
установит пакет mpi4py
в подкаталог .local
домашнего каталога пользователя. После этого при выполнении python-скрипта со строкой
from mpi4py import MPI
утилита python3
найдёт установленный модуль (при условии, что python3
эквивалентно python3.9
).
На вычислительных узлах модуль mpi4py
будет правильно стыковаться с нужной реализацией MPI, если перед запуском выбрать (командами mpiset
... или module switch ...
) конкретную реализацию стандарта MPI, отличную от openmpi, и задать предварительную загрузку соотвествующей библиотеки, задав её имя в переменной LD_PRELOAD, например, выполнив команду
export LD_PRELOAD=`libmpi_name.sh`
Постановка в очередь таких python-скриптов осуществляется командами, подобными упрощённой
mqrun -n 4 -t 5 ./testmpi.py
или базовой
sbatch -n 4 -t 5 -J test --wrap='srun ./testmpi.py'
Здесь srun
необходима для формирования группы из заданного числа MPI-процессов.
Предполагается, что предварительно было выполнено
cd ~/_scratch/tests
и скрипт ./testmpi.py
находится в каталоге ~/_scratch/tests
.
Модуль pymp
устанавливается командой
pip install --user pymp-pypi
и позволяет, добавив специальные строки в python-скрипт по аналогии с декларациями OpenMP в C- и fortran-программах, образовать несколько подпроцессов с имитацией общих массивов данных, например, для ускорения выполнения длительного цикла за счёт привлечения дополнительных вычислительных ядер процессора (см. https://github.com/classner/pymp ).
Понятно, что такие python-скрипты должны выполняться лишь на одном вычислительном узле, так как массивы переменных (располагающиеся в оперативной памяти) должны быть доступны всем подпроцессам. В команде постановки в очередь необходимо указать дополнительно количество вычислительных ядер на подзадачу
sbatch -n 1 --cpus-per-task=4 -t 5 -J test ./testmp.py
Предполагается, что предварительно было выполнено
cd ~/_scratch/tests
и скрипт ./testmp.py
находится в каталоге ~/_scratch/tests
.