python - 如何使用并行化 Python 代码在集群上使用多个节点/核心

标签 python python-2.7 hpc slurm

我有一段使用 joblib 的 Python 代码和 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 绑定(bind):

还有很多框架 - list

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

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

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

关于python - 如何使用并行化 Python 代码在集群上使用多个节点/核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28072164/

相关文章:

c++ - 红黑高斯赛德尔和 OpenMP

performance - 分析分布式系统

python - 如何获取列表值的索引以及用户输入要选择的值

python - django 模板能否找到其命名的 url,或者基本模板能否知道哪个模板正在扩展它?

python-2.7 - 使用 matplotlib 更改某些值范围的线条样式

python - 如何使用查询集更新 django auth_user?

python - 确定子字符串在字符串列表中的位置

c++ - 高性能计算的C++类

python - posix_ipc python 包相当于 Windows 吗?

python - 线程化/生成多个操作系统命令并在不同点获取输出的最佳方法