mpiexec:为什么我的 python 程序 运行 只有一个 CPU?
mpiexec : why is my python program running on only one CPU?
我试图在我的 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 个进程每个占用一个进程的 100% CPU 而不是共享第一个进程。
我正在开发 16 核 Ubuntu 16.04.6 LTS。
我使用 mpi4py
的 3.0.3 版本
我使用 mpiexec
的 3.3.2 版本
我真的想通了。一种解决方案是在开始执行后将每个进程绑定到 CPU。为此,您可以使用此命令:
taskset -pc [CPU number] [process ID]
例如:
taskset -pc 2 3039
您可以在此网站上找到有关如何将进程分配给 CPU 的更多详细信息:https://www.hecticgeek.com/2012/03/assign-process-cpu-ubuntu-linux/
我试图在我的 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 个进程每个占用一个进程的 100% CPU 而不是共享第一个进程。
我正在开发 16 核 Ubuntu 16.04.6 LTS。
我使用 mpi4py
的 3.0.3 版本
我使用 mpiexec
我真的想通了。一种解决方案是在开始执行后将每个进程绑定到 CPU。为此,您可以使用此命令:
taskset -pc [CPU number] [process ID]
例如:
taskset -pc 2 3039
您可以在此网站上找到有关如何将进程分配给 CPU 的更多详细信息:https://www.hecticgeek.com/2012/03/assign-process-cpu-ubuntu-linux/