使用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();
答案 0 :(得分:4)
如果您通过线程表示流程/排名,则答案为MPI_Barrier
。
但是看看其他集体操作:它们可能在您的应用程序中有意义,并提供比手动编码通信更好的性能。例如,您可以使用MPI_Allgather
将所有数据传达给所有等级,依此类推。
如果你的意思是线程(比如pthreads),那么你必须使用线程库提供的任何东西。