我開始使用MPI學習。我在MPI_Broadcast之後使用了MPI_Barrier,其中我向所有進程廣播了一個變量。但是,當我打印廣泛的流變變量時,它有一些來自內存的價值,但不是來自廣播。不知道我在做錯什麼。任何建議請。MPI - 在屏障後嘗試打印廣播變量,顯示其他變量
void main(int argc, char *argv[]){
int x, comm_sz, my_rank;
MPI_Init(NULL,NULL);
MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
if(my_rank == 0){
x = strtol(argv[1], NULL, 10);
MPI_Bcast(&x, 1, MPI_INT, 0, MPI_COMM_WORLD);
}
MPI_Barrier(MPI_COMM_WORLD);
if(my_rank != 0){
printf("x is %d\n", x);
}
MPI_Finalize();
}
我只是想在值被廣泛應用於所有進程之後做一些操作。
只動'MPI_Bcast()'你的'if' statment和都應該更好地工作,即使沒有障礙。 – Gilles
感謝吉爾現在正在工作。 –