如何将MPI_Barrier与另一个通信器一起使用?

时间:2013-10-17 01:18:20

标签: process mpi communicator

我是MPI编程的新手(mpich2 fedora)。 我正在编写原因,当使用MPI_Barrier与另一个与MPI_COMM_WORLD不同的通讯器时,我得到了死锁。

我像这样做2个传播者:

MPI_Comm_split(MPI_COMM_WORLD,颜色,等级和& split_comm);

如果我把MPI_Barrier放在所有颜色都可以通过的地方,那就没问题了。

但是如果我把MPI_Barrier只有颜色== 1可以通过,我就会死锁。

如何将MPI_Barrier与其他通讯器一起使用? 我也在使用MPI_Bcast()(与另一个不同的通信器MPI_COMM_WORLD)但是当没有人也调用MPI_Bcast时它没有被阻止。 MPI_COMM_WORLD的一个不同的通信器可以同步您自己的进程吗?

1 个答案:

答案 0 :(得分:1)

如果您可以发布代码段,将会很有帮助。单从你的话语中调试死锁很难。

无论如何,您将要阻止的通信器作为参数传递给MPI_Barrier: http://mpi.deino.net/mpi_functions/mpi_barrier.html http://www.mcs.anl.gov/research/projects/mpi/www/www3/MPI_Barrier.html

MPI_Bcast是一种阻止功能。因此,如果一个或多个排名未达到MPI_Bcast调用,则可能会出现死锁。

请记住,即使在MPI_Comm_Split呼叫之后,MPI_COMM_WORLD也包括所有等级。