首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >制作一个跨越所有进程的通信器--进程零,包括进程零。

制作一个跨越所有进程的通信器--进程零,包括进程零。
EN

Stack Overflow用户
提问于 2018-07-18 03:42:56
回答 1查看 60关注 0票数 0

有些人和我正试图模拟一个游乐园,除了一件事,我们几乎什么都做了:我们需要实现一个同步障碍,但我们需要一个通信程序来实现,它需要包含每一个过程,除了一个等级为零的过程。我使用MPI_Group_excl()来告诉一个组不应该有零进程。下面是我的代码片段,它创建了组和comunicator:

代码语言:javascript
复制
MPI_Group nonzero_group, world;
MPI_Comm_group(MPI_COMM_WORLD,&world);
int zero[1];
zero[0]=0;
MPI_Group_excl(world,1,zero,&nonzero_group);
MPI_Comm nonzero;
MPI_Comm_create(MPI_COMM_WORLD,world,&nonzero);

但是,当我在‘非零’通信器中使用从process 1到所有进程的MPI_Bcast()测试我的程序时,进程零执行广播并获得缓冲区。

怎样才能使一个没有过程为零的从1到N所有过程的组?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-18 04:18:15

这可以通过MPI_Comm_split()来实现

代码语言:javascript
复制
int world_rank;
MPI_Comm comm;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_split(MPI_COMM_WORLD, (0 == rank)?MPI_UNDEFINED:0, 0, &comm);

MPI_COMM_WORLD0上,commMPI_COMM_NULL。这是你所期望的其他等级的有效沟通者。

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

https://stackoverflow.com/questions/51393239

复制
相关文章

相似问题

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