Slurm:使用多个节点的核心进行 Python 并行化

问题描述 投票:0回答:1

这个问题与这个问题有些相似, Slurm:使用多个节点的核心进行 R 并行化 但它是针对 python 的。

我有一个可以在PC上使用多核的python程序,它不使用MPI或OpenMP。它使用 CreateProcess 函数来使用 CPU 核心或 PC 上的线程。

我想知道,对于像这样的Python程序,在SLURM中,我可以使用多个节点的核心来运行它吗? 我的意思是,它可以将程序分配在一个节点上,如果SLURM集群中的节点有20个核心,那么这个程序当然可以在这个节点上运行,就像在一台有20个核心的笔记本电脑上运行一样。 但是,我想使用 100 个核心,所以需要 5 个节点。是否可以在 5 个节点上使用这 100 个核心来运行这个 python 程序?

我尝试了下面的脚本,并将作业提交到 slurm

#!/bin/bash
#SBATCH -n 100                      # Number of CPU cores     
#SBATCH -t 0-24:00                  # wall time (D-HH:MM)      set to 24h to test
#SBATCH -p slgrid                    # partition
#SBATCH -o myoutput.%j.out          # STDOUT (%j = JobId)
#SBATCH -e myoutput.%j.err          # STDERR (%j = JobId)
#SBATCH --mail-type=ALL           # Send when job starts, stops, or fails

source /scratch/xxx/.venv/bin/activate     ! the python package is install in venv, and I activate it.
python -m darwin.run_search template.txt tokens.json options.json    ! The python run command

虽然SLURM成功为这项工作分配了5个节点和总共100个核心,但我检查了一下,python程序似乎只在第一个拥有20个核心的节点上运行。其余 4 个节点上的其余 80 个核心没有执行任何操作。

我再次想知道,这是一种让这样的Python程序能够使用来自不同节点的多个核心的方法吗?

或者有一些Python包或者其他东西可以让我实现这个目标吗?

提前非常感谢!

我在 sbatch 脚本中尝试了不同的选项,但似乎这个 python 程序实际上只在一个节点上运行。

python multithreading parallel-processing slurm hpc
1个回答
0
投票

mpi4py是用Python编写多节点并行代码的标准方法。但这需要您重写代码。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.