コレスキー分解を実行するためにpdpotrf()を使用しています。次に、行列を反転するためにpdpotri()を呼び出したいと思います。この関数は、 の直後に、すべてのプロセスから呼び出されますpdpotrf()
。そこに障壁を置いて、すべてのプロセスがコレスキー分解で完了したことを確認してから、反転部分に進むべきですか、それとも必要ありませんか?
小さな入力でいくつかの例を書きましたが、それは必要ないことを示していますが、私は単に (不) 運が悪く、大きな入力で問題に直面しているのではないことを確認したいと思います。
バリアとは、次のことを意味することに注意してください。MPI_Barrier(MPI_COMM_WORLD);
編集
他のプロセスがコレスキー分解を終了する前に、反転が開始されるのではないかと心配しています。pdpotri()
これは気をつけますか?つまり、必要に応じてチェックして待機します。それともpdpotri()
、呼び出しプロセスのサブマトリックスでのみ機能しますか? もしそうなら、障壁は必要ありません。