首页 > 解决方案 > MPI_Bcast - 进程在根广播之前从根接收?

问题描述

MPI 很新,我希望每个进程都将其数组广播到其他进程。

nproc 是总进程数 (3),myid 是当前进程的 id,数组的大小为 DATASIZE。

在这里让我感到困惑的是,在 root 实际广播其数组之前,可能会从 root 接收一个数组。在这种情况下,接收如何工作?

例如:

进程#0 从进程#1 接收数组{1, 2} 发生在进程#1 广播其数组之前。

for(int i = 0; i < nproc; i++){
root = i;
if(root == myid){
    printf("Process #%d broadcasts its array {", root);
    printArray(array);
    printf("}\n");
    MPI_Bcast(array, DATASIZE, MPI_INT, root, MPI_COMM_WORLD);
}
else{
    MPI_Bcast(array, DATASIZE, MPI_INT, root, MPI_COMM_WORLD);
    printf("Process #%d receives array {", myid);
    printArray(array);
    printf("} from Process #%d\n", root);
}
}

标签: cmpi

解决方案


推荐阅读