如何在具有并行 Python 代码的集群上使用多个 nodes/cores

How to use multiple nodes/cores on a cluster with parellelized Python code

我有一段 Python 代码,其中我使用 joblib and multiprocessing 并行生成部分代码 运行。我可以在桌面上 运行 毫无问题地使用任务管理器查看它是否使用了所有四个内核并 运行 并行执行代码。

我最近了解到我可以访问具有 100+ 20 个核心节点的 HPC 集群。集群使用 SLURM 作为工作负载管理器。

第一个问题是:是否可以在集群上运行并行化Python代码?

如果可以的话,

  1. 我的 Python 代码是否需要在集群上完全更改为 运行,并且

  2. 需要在作业提交文件中放入什么#SBATCH 指令来告诉它代码的并行化部分应该运行 在四个核心(或者是四个节点)上?

我有权访问的集群具有以下属性:

PARTITION      CPUS(A/I/O/T)       NODES(A/I)  TIMELIMIT      MEMORY  CPUS  SOCKETS CORES 
standard       324/556/16/896      34/60       5-00:20:00     46000+  8+    2       4+

通常 MPI 被认为是高性能计算的事实标准。 Python:

有几个 MPI 绑定

还有很多框架 - list

您的代码至少需要进行最少的更改,但不应太多。

当你移植到 MPI 时,你可以 运行 每个核心一个进程,你将不需要使用 multiprocessing

因此,例如,如果您有 100 个节点,每个节点有 24 个核心,您将 运行 2400 Python 个进程。