0

誰かが初心者向けのboost::mpiドキュメントを知っているかどうか尋ねたいですか? (私は既に Internet サイトから Boost.MPI のドキュメントを読んでいます)。

私のシステムについて少し説明します。約 90 ノットのクラスターがあり、各ノットには 2 つのコア (合計 4 つのコア) と 4Gb RAM を備えた 2 つの CPU があります。

各ノットに共有メモリを定義し、そこにベクトルを保存したいと思いますstd::vector<bool> occupation;。次に、各プロセスは自分の数に基づいて何かを計算する必要がありrank()ます。

ここで、すべてのマルチ プロセスは、すべてのコアが計算を完了するまで待機し、ベクトル をstd::vector<uint32_t> remove;メイン プロセス ( rank() == 0) に送信する必要があります。メイン プロセスはベクトルを更新occupationし、すべてのノットに新しいoccupationベクトルを送信します。

mpi.hの代わりに単純に使用した方がよい場合もありboost::mpiます。

私は MPI のこの分野での経験がないので、あなたの意見を聞きたいです。

4

2 に答える 2

0

larsmans が述べたように、MPI で共有メモリを実際に実行することはできません。しかし、分散共有メモリは実際には必要ないようです。すべてのタスクはoccupation、開始時に のコピーを取得し、計算を行い、その結果を の形式でマスターに送り返す必要があるように思えます。removeその後、マスターは の更新されたコピーをブロードキャストしますoccupation。MPIはそれをうまく行うことができます。

開始する方法は、マスター プロセスを使用broadcastしてデータの初期送信を行い、ワーカー プロセスを使用sendして更新をマスターに送り返し、マスターにrecv各タスクからのデータを送信することです。それが完了すると、サイクルが繰り返されます。

于 2011-03-24T19:37:24.810 に答える
0

コンパイラがサポートしている場合は共有メモリ部分に使用することを検討しOpenMP、ノードごとに 1 つのプロセスを設定して、現在のセットアップで 4 つのプロセスが行うことを行います。MPI は実際には共有メモリ用に設計されたものではありません。

于 2011-03-24T18:37:10.197 に答える