首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPI_Comm_dup()在发送MPI_COMM_NULL作为参数时不起作用

MPI_Comm_dup()在发送MPI_COMM_NULL作为参数时不起作用
EN

Stack Overflow用户
提问于 2019-09-07 09:47:33
回答 1查看 221关注 0票数 0

我用过的地方

代码语言:javascript
复制
MPI_Comm_dup(row_comm, &bigger_row_comm);

我注意到,当row_comm等于MPI_COMM_NULL时,它会导致“致命”错误。我把它换成了

代码语言:javascript
复制
if (row_comm != MPI_COMM_NULL)
    MPI_Comm_dup(row_comm, &bigger_row_comm);
else
    bigger_row_comm = MPI_COMM_NULL;

现在起作用了。我使用MPICH,并在分录 for MPI_Comm_dup中的文档中找到了这一点。

一个常见的错误是在调用中使用空通信器(在MPI_Comm_rank中甚至不允许)。

我想知道这种行为是否是标准的,我希望其他实现也会这样做。为什么他们不像我那样处理这件事?人们期望MPI_COMM_NULL的复制是一个MPI_COMM_NULL。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-07 13:31:49

MPI标准没有指定使用空通信器调用MPI_Comm_dup应该做什么(参见6.4.2节)。因此,不能假设允许这样的调用,特别是因为MPI_COMM_NULL被定义为“用于无效通信器句柄的值”。

至于它的价值,OpenMPI 4.0.1也将调用视为一个错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57832529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档