当前位置:   article > 正文

MPI子通信域Broadcast通信_mpi_broadcast api

mpi_broadcast api

MPI除了有一个默认的通信域MPI_COMM_WORLD包含所有结点之外,还可以将其分解为多个子通信域进行组内通讯。主要使用MPI_Comm_split(myComm,color,key,splitComm)这个API实现。其主要说明如下:

参数myComm是待分裂的通信域,而splitComm是分裂后的通信域。color是子域的标志,而key是结点在组内的标志。

比如如果有9个结点其rank分别为0-8;

那么用一下规则分组:

color = rank % 3

key = rank / 3

那么结点5(rank=5)就在子通信域的第3个组内(组id为2,从0开始算),在组内的标志为1。


这时如果再次调用广播MPI_Bcast函数,如果其第5个参数是SplitComm通信域的话,每个组都会由指定的root进行一次广播通讯。而这个root不在是总通讯域的id,而是在自己组内的id。如果每个组都有id为root的结点,那么每个组都要在组内进行一次广播。


下面有一段代码可以说明:

  1. /********************************
  2. *author : ysc
  3. *email : 3100105066@zju.edu.cn
  4. **************************&****/
  5. #include <mpi.h>
  6. #include <stdio.h>
  7. void main(int argc,char *argv[])
  8. {
  9. MPI_Comm MyWorld, SplitWorld;
  10. int my_rank,group_size, Color, Key;
  11. ch
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/260210
推荐阅读
相关标签
  

闽ICP备14008679号