这个问题说明了一切。我有三个通讯器(组也可用)。现在我只想为一个通信子集调用一个函数。那就是屏蔽其他子集的功能。这是否可能,或者我应该明确地纠正一个循环并检查组中是否存在当前进程,然后调用该函数。
谢谢,
最佳答案
除了在 MPI_Allreduce()
中滥用用户定义的缩减运算符之外,没有办法在子通信器的所有成员上调用函数。最干净的做法是:
int group_rank;
// Test if current process belongs to "group"
MPI_Group_rank(group, &group_rank);
if (group_rank != MPI_UNDEFINED)
call_the_function();
关于c++ - 如何使用 MPI 库为进程子集调用 (c++) 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11545047/