gpt4 book ai didi

c++ - 不同线程中的 MPI_Barrier,行为?

转载 作者:行者123 更新时间:2023-11-27 23:12:03 25 4
gpt4 key购买 nike

<分区>

假设我有 2 个进程,每个进程有两个线程(1 个 IO 线程,1 个计算线程)

我有兴趣使用一些 IO 库 (adios)。
我问我如果我编写这样的代码会发生什么?:

  • 假设 2 个进程中的 IO 线程执行一些 IO,它们使用MPI_Barrier(MPI_COMM_WORLD) 在某个点 B 同步IO!

  • 两个进程中的计算线程也在某些点A使用MPI_Barrier(MPI_COMM_WORLD)来同步计算(当IO线程工作时) .

--->我不知道到底会发生什么,下面的情况是否可能:

  • 进程1,IO线程在B等待
  • 进程 2,计算线程在 A 等待

=> 并且进程 1 和进程 2 同步(因此进程 1 在 B 处留下屏障,进程 2 在 A 处留下障碍(而且进程 2 与它所在的位置不同同步!)

如果这可能发生,这不是程序员无意的不良行为吗? (可以通过使用两个具有相同进程数的不同通信器 (MPI_Comm_dup(...) ) 来避免这种情况吗?

或者障碍真的依赖于代码行?但是,如果真的如此,这是如何实现的呢?

这令人困惑!

非常感谢!

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