首页 > 解决方案 > MPI 中的屏障:如何实现屏障以使进程相互等待

问题描述

有没有办法在 MPI 代码中添加障碍。

我的意思是,我希望所有不同的处理器首先完成直到一个点,然后从那里继续。也就是说,一个处理器必须等待其他处理器完成代码直到该区域,然后才继续执行代码的其余部分。

例如,

int main()
{
.
.
.
  //I want all my processors to do till this and 
   wait for other processers to complete till this point, 
   and then resume the remaining part
.
.
.

}

有没有办法在 MPIch 中做到这一点?

标签: performanceparallel-processingmpihpcbarrier

解决方案


也就是说,一个处理器必须等待其他处理器完成代码直到该区域,然后才继续执行代码的其余部分。

是的,您正在寻找的是例程MPI_Barrier

阻塞,直到通信器中的所有进程都到达此例程。

笔记

阻塞调用者,直到通信器中的所有进程都调用它;也就是说,只有在通信器的所有成员都进入调用之后,调用才会在任何进程中返回。

要了解有关何时使用 MPI_Barrier 的更多信息,您可以阅读何时需要使用 MPI_Barrier()?


推荐阅读