gpt4 book ai didi

c - OpenMPI MPI_Barrier 问题

转载 作者:太空狗 更新时间:2023-10-29 17:04:46 26 4
gpt4 key购买 nike

我在使用 MPI_Barrier 的 OpenMPI 实现时遇到一些同步问题:

int rank;
int nprocs;

int rc = MPI_Init(&argc, &argv);

if(rc != MPI_SUCCESS) {
fprintf(stderr, "Unable to set up MPI");
MPI_Abort(MPI_COMM_WORLD, rc);
}

MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);


printf("P%d\n", rank);
fflush(stdout);

MPI_Barrier(MPI_COMM_WORLD);

printf("P%d again\n", rank);

MPI_Finalize();

对于 mpirun -n 2 ./a.out

输出应该是:P0P1...

输出是有时:P0再次P0P1再次P1

这是怎么回事?

最佳答案

打印输出行在终端上的显示顺序不一定是打印内容的顺序。您正在为此使用共享资源 (stdout),因此一定存在排序问题。 (而且 fflush 在这里没有帮助,stdout 无论如何都是行缓冲的。)

您可以尝试在输出前加上时间戳,并将所有这些保存到不同的文件中,每个 MPI 进程一个。

然后为了检查您的日志,您可以将这两个文件合并在一起并根据时间戳进行排序。

那么你的问题应该消失了。

关于c - OpenMPI MPI_Barrier 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5182045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com