首页 > 解决方案 > 使用 2 核/4 线程运行 mpirun

问题描述

我正在使用 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 个内核吗?

谢谢

标签: pythonmpi

解决方案


解决方案取决于您拥有的特定 MPI 实现。这根本不是 OpenMDAO 问题,而是您的 MPI 库的问题。您似乎已经看到了,因为您正在尝试提供一个主机文件。

我认为你只是有错误的选择。尝试:

mpiexec -np 4 -H localhost --hostfile rankfile python modified_objective.py

推荐阅读