等待其他处理器在MPI中完成其任务

问题描述:

使用MPI,您如何等待线程完成?等待其他处理器在MPI中完成其任务

例如:

for (int i = localstart; i < localend; i++) 
{ 
    // do stuff that is computationally intensive 
} 
// I need to wait for all other threads to finish here 
if (rank == 0) do_something(); 

如果线程你的意思流程/行列,那么答案是MPI_Barrier。但是也要看看其他集体操作:它们在您的应用程序中可能有意义,并且提供比手动编码通信更好的性能。例如,您可以使用MPI_Allgather将所有数据传递给所有职级,依此类推。

如果你的意思是线程(如pthreads),那么你必须使用线程库提供的任何东西。

+0

我的意思是进程/排名。谢谢,那正是我正在寻找的。 – 2012-04-24 21:45:59