行列を計算するためのスキームについて考えるのに時間を費やしましたが、すべてが理にかなっていますが、処理方法がわからない最後の部分が 1 つあります。
これが私がやろうとしていることです(シナリオ):
- 10(w)x5(h) 行列を計算するように求められました。
- 10 個のプロセッサが利用可能です。
- ランク 0 の proc を含む個々のプロセッサで 1x5 行列を宣言します。
- 各プロセッサの各サブマトリックスをオフセットして計算します。
- MPI_Barrier は、10 個のプロセッサすべてが計算を終了するまで待機します。
完全な行列を表示します。
ステップ 5 までは順調に進んでいますが、障壁を越えて何をすればよいかわかりません。完全な 10x5 マトリクスを備えたプロセッサはありません。最初は、必要ないと思っていたのですが、次のようなものが欲しかったのです。
foreach(procX in proc(0-9)) showColumn(procX)
しかし、MPI_Barrier の後にどのプロセッサが呼び出されるのかわかりません。また、プロセッサの順序を念頭に置いて印刷する方法もわかりません (そうしないと、行列が正しく印刷されません)。
これを通常に処理する方法について誰かが考えを持っていますか? 各プロセッサがマトリックスの一部で動作するようにすることについて多くのことを読みましたが、それらの異なる部分を組み合わせる方法については何も見つかりませんでした.
コードでスキャッターを使用していない (つまり、マスター スレーブ手法を使用していない)
ありがとう