c/c++语言开发共享以mpi分散

这是mpi scatter的代码:

#include  #include  int a[10]={1,2,3,4,5,6,7,8,9,10}; int b[1]; int main(int argc, char *argv[]) { int rank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Barrier(MPI_COMM_WORLD); if(rank ==0){ MPI_Scatter(a,1,MPI_INT,b,1,MPI_INT,0,MPI_COMM_WORLD); } MPI_Barrier(MPI_COMM_WORLD); printf("n%d from rank=%dn",b[0],rank); MPI_Finalize(); return 0; } 

我想要输出如下:

1等级0
2级来自1级
排名2的3

但我得到了

1等级0
排名第1的0
等级2的0
等级3的0
排名第4的0

    MPI_Scatter()是一个集合操作,因此它必须由通信器的所有队列调用。

    摆脱if (rank == 0) ,你会没事的。

    请注意,在您的示例中,发送缓冲区足够小并且不会导致任何挂起。

      以上就是c/c++开发分享以mpi分散相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/578031.html

      (0)
      上一篇 2021年3月22日
      下一篇 2021年3月22日

      精彩推荐