1

MPI-3 リモート メモリ アクセス機能を備えたハイブリッド MPI/OpenMP コードを作成しています。MPI_THREAD_SERIALIZED が利用可能であると想定しています。

これはできますか?

 MPI_Win_lock_all(0, win);
 #pragma omp parallel 
 {
      ...
      #pragma omp critical(getRemoteData)
      {
           MPI_Get(buf, len, MPI_UINT64_T, t_rank, localOffset, len, MPI_UINT64_T, win);
           MPI_Win_flush(t_rank, win);
      }
      ...

 }
 MPI_Win_unlock_all(win);

ここで、メイン スレッドは、MPI プロセス全体に対して lock と unlock を 1 回呼び出します。OMP スレッドは、必要に応じて MPI_Get を呼び出します。MPI_Get ごとに lock と unlock を呼び出すこともできますが、時間がかかると思います。

動作しているようです。しかし、これが正しい使い方かどうかはわかりません。

4

0 に答える 0