MPI_Bcast - 进程在根广播之前从root接收?

时间:2018-05-11 06:01:11

标签: c mpi

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);
}
}

0 个答案:

没有答案