【发布时间】:2016-09-10 07:23:06
【问题描述】:
我正在 Windows HPC 集群上运行 Python 脚本。脚本中的一个函数使用multiprocessing 包中的starmap 来并行化某个计算密集型进程。
当我在单个非集群机器上运行脚本时,我获得了预期的速度提升。当我登录到一个节点并在本地运行脚本时,我获得了预期的速度提升。但是,当作业管理器运行脚本时,multiprocessing 的速度提升要么完全减轻,有时甚至慢 2 倍。我们注意到在调用starmap 函数时会发生内存分页。我们认为这与 Python 的 multiprocessing 的性质有关,即为每个内核启动了单独的 Python 解释器这一事实。
由于我们从单个节点的控制台成功运行,我们尝试使用HPC_CREATECONSOLE=True 运行脚本,但无济于事。
在运行使用multiprocessing 的Python 脚本时,我们应该使用作业管理器中的某种设置吗? multiprocessing 是否不适合 HPC 集群?
【问题讨论】:
标签: python-3.x multiprocessing distributed-computing hpc