【问题标题】:mpiexec : why is my python program running on only one CPU?mpiexec:为什么我的 python 程序只在一个 CPU 上运行?
【发布时间】:2020-05-01 16:34:48
【问题描述】:

我试图在我的 16 核机器上将一个 python 程序 (program_to_parallelize.py) 并行化为 16 个子进程。我使用这段代码,它是 Python 脚本的一部分:

import subprocess
subprocess.call("mpiexec -n 16 python program_to_parallelize.py", shell=True)

这运行没有任何错误,但是当我查看 CPU 使用率时,我发现所有子进程都在一个 CPU 上运行。 (点击 here 看看我在命令行中输入“top 1”时得到了什么)但我更希望 16 个进程每个都占用一个 CPU 的 100%,而不是全部共享第一个。

我正在开发 16 核 Ubuntu 16.04.6 LTS。
我使用 3.0.3 版的 mpi4py
我使用 3.3.2 版的 mpiexec

【问题讨论】:

  • 我使用multiprocessing 取得了一些成功。也许您可以试一试,当您有问题时,可以在此处回复。

标签: python-3.x parallel-processing mpi4py mpiexec


【解决方案1】:

其实我想通了。一种解决方案是在开始执行后将每个进程绑定到一个 CPU。为此,您可以使用以下命令:

taskset -pc [CPU number] [process ID]

例如:

taskset -pc 2 3039

您可以在此网站上找到有关如何将进程分配给 CPU 的更多详细信息:https://www.hecticgeek.com/2012/03/assign-process-cpu-ubuntu-linux/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2020-12-27
    • 2013-01-13
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多