1

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();
4

1 に答える 1

4

スレッドがプロセス/ランクを意味する場合、答えはMPI_Barrierです。

ただし、他の集合的な操作も見てください。これらはアプリケーションで意味があり、ハンドコーディング通信よりも優れたパフォーマンスを提供する可能性があります。たとえば、MPI_Allgatherすべてのデータをすべてのランクに伝達するために使用できます。

スレッド(pthreadなど)を意味する場合は、スレッドライブラリが提供するものをすべて使用する必要があります。

于 2012-04-24T19:33:17.040 に答える