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