如何在群集上使用parellelized Python代码使用多个节点/核心

时间:2015-01-21 16:30:04

标签: python python-2.7 hpc slurm

我有一段Python代码,我使用joblibmultiprocessing来使代码的一部分并行运行。我在桌面上运行它没有问题,我可以使用任务管理器查看它使用所有四个核并并行运行代码。

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

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

如果可能的话,

  1. 我是否需要更改Python代码才能在群集上运行,

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

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

    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+
    

1 个答案:

答案 0 :(得分:3)

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

还有一堆框架 - list

您的代码至少需要很少的更改,但它们不应该太多。

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

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