0

並列に実行できるが共有メモリ メソッドを使用できる C++ コードがあります。コードを PETSc にリンクすると、PETSc はコードを並列に実行できますが、分散メモリ方式を使用します。コード (PETSc にリンクされた c++) を並行して実行すると、すべてのプロセッサが同じジョブを繰り返しているように見えます。たとえば、プロセッサ数が 4 の場合、境界条件と初期条件が 4 回読み込まれます。または、printf コマンドを使用すると、何かが 4 回出力されます。したがって、ジョブがプロセッサ間で分散されておらず、すべてのプロセッサがジョブの一部ではなくジョブ全体を実行していることを意味します。誰かが同じ経験をしていますか?この問題を解決するためにあなたの提案は何ですか? たとえば、以下のコードでは、メッシュを 1 回ではなく 2 回読み取っていることがわかります。

メッシュ ファイル Mesh_cavity2d.txt の読み取り:

メッシュ ファイル Mesh_cavity2d.txt の読み取り:

また:

4

1 に答える 1