gpt4 book ai didi

c - MPI_Barrier - 只有一些进程通过屏障

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:45 34 4
gpt4 key购买 nike

我面临这样一种情况,即只有一些进程绕过 MPI_Barrier 函数。

问题出现在这段代码中:

printf("[%d] Before barrier\n", mpi_rank);
fflush(stdout);
MPI_Barrier(MPI_COMM_WORLD);
printf("[%d] After barrier\n", mpi_rank);
fflush(stdout);
sleep(1);

运行 4 个进程后,我得到以下输出:

[3] Before barrier
[2] Before barrier
[0] Before barrier
[1] Before barrier
[1] After barrier

然后应用程序卡住了。

我原以为所有进程都能打印消息 [id] After barrier,但只有进程 1 打印了它。

为什么不是所有进程都通过屏障?

我期待这样的输出:

[3] Before barrier
[2] Before barrier
[0] Before barrier
[1] Before barrier
[1] After barrier
[0] After barrier
[2] After barrier
[3] After barrier

我在 docker 中使用 openmpi 和 centos。应用程序启动了多个线程,但显示的片段不在其中。

最佳答案

我一直遇到类似的问题,开始在网上搜索。我发现——据我所知——OpenMPI 中 MPI_Barrier 的实现可能有问题,具体取决于具体版本。

https://github.com/open-mpi/ompi/issues/3042

MPI_Barrier doesn't function properly

关于c - MPI_Barrier - 只有一些进程通过屏障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37690116/

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