【发布时间】:2019-10-17 14:02:42
【问题描述】:
我正在使用 mpirun 调用一个 openMDAO 代码,该代码使用一个包含 4 个子系统的并行组。我可以成功地从终端调用代码如下。
mpirun -n 2 python modified_objective.py
但是,由于我的电脑有 2 个内核/4 个线程,我想使用所有 4 个线程来加速我的代码。但我收到如下错误:
系统中没有足够的可用插槽来满足 4 个插槽 应用程序要求的: Python 。 为您的应用程序请求更少的插槽,或增加插槽 可以使用。
我在网上找到的一种解决方法是使用如下文本排名文件:
rank 0=localhost slot=0:0
rank 1=localhost slot=0:0
rank 2=localhost slot=0:1
rank 3=localhost slot=0:1
然后调用代码如下:
mpiexec -np 4 -H localhost -rf rankfile python modified_objective.py
但这似乎不起作用。还有其他方法可以使用所有 4 个内核吗?
谢谢
【问题讨论】:
-
如果您使用 Open MPI,请尝试
mpirun --use-hwthread-cpus ...以获得 1 个线程 = 1 个插槽(默认为 1 个核心 = 1 个插槽)。