python - 使用 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 个内核吗?
谢谢
解决方案
解决方案取决于您拥有的特定 MPI 实现。这根本不是 OpenMDAO 问题,而是您的 MPI 库的问题。您似乎已经看到了,因为您正在尝试提供一个主机文件。
我认为你只是有错误的选择。尝试:
mpiexec -np 4 -H localhost --hostfile rankfile python modified_objective.py
推荐阅读
- angular - Angular Material:删除 cdk 组件外的项目 onDrop
- powershell - 在 Active Directory CN 中运行 powershell 命令时,一个或多个计算机名称无效
- javascript - 联系表格 7 AJAX 回调以获取不同的感谢页面
- r - 组织数据框 - 将一列分成三列
- matlab - Matlab 深度学习回归
- quarkus - quarkusio 使用 quarkus:dev 更改默认调试端口
- azure-functions - 在进行更改并在本地运行时,有什么方法可以触发 Azure Functions 重新编译和重新启动您的函数?
- api - 与 ModelState 验证 asp.net core api 的行为不一致
- kubernetes - 在 minikube 上修补 nginx 控制器部署会导致回滚到以前的配置
- javascript - 在 postgres 中传播语法 JSONB 列