python - 在 mpi (mpi4py) 中创建组通信器
问题描述
我正在尝试使用mpi4py创建一个 MPI 组。我目前的尝试如下所示:
from mpi4py import MPI
comm = MPI.COMM_WORLD
newGroup = comm.group.Excl([0, 1, 2])
print newGroup.size
newComm = comm.Create_group(newGroup)
print newComm
print newComm.Get_size()
该newGroup.size
调用确实返回 2(我启动了具有 5 个进程的应用程序)并且该newComm
变量指示为通信器。但是一旦我尝试调用Get_size
异常就会抛出:
mpi4py.MPI.Exception:MPI_ERR_COMM:无效的通讯器
如何根据预定义的进程 ID 序列创建新的通信器?
解决方案
newComm
是任务上的合法沟通[3-4]
者,但MPI_COMM_NULL
在任务上[0-2]
。该标准不允许您调用MPI_Comm_size(MPI_COMM_NULL, ...)
,因此您的错误。
解决方案是显式调用newComm.Get_size()
任务[3-4]
,或任何没有调用的任务。newComm
MPI_COMM_NULL
推荐阅读
- java - 没有spring security的spring boot中是否有任何安全模块
- javascript - 来自数据模型的图像未加载到 Bootstrap 模式中
- loopbackjs - Loopback 如何处理 RangeError:超出最大调用堆栈大小?
- postgresql - Postgres查询包含骆驼案例的序列
- ssis - 无法从命令行构建 SSIS 包:缺少开关参数。/build 开关所需的配置名称
- cryptoapi - 在 coinbase API 上开发第三方交易所
- .htaccess - 使用 Codeigniter 制作的多语言网站。如何将权限设置为一种语言只有一个 IP?
- yocto - Yocto 使用 Multilib 更新到 Sumo 导致 do_image_wic 出错
- javascript - Firefox Quantum Private 浏览器不加载由 javascript 添加的脚本
- python - 在 Mac 的终端中更改用户名命令