私は MPI プログラミングの世界に不慣れで、MPI プロセス間で共有され、送受信することなく任意のプロセスからアクセスできる変数があるかどうか疑問に思っています。
ありがとう
いいえ。多くの場合、MPI コードは多数のコンピューターで同時に実行されるため、ネットワーク経由でメッセージを転送する以外にデータを共有する方法はありません。
マルチコア マシンの場合、ほとんどの MPI 実装は、プロセスが同じチップ上で実行されているかどうかを検出し、ネットワーク上の通信を回避する最適化されたメッセージ パッシング アルゴリズムを使用し、場合によってはバッファを再利用して中間メモリ コピーを回避します。
いいえ。MPI ジョブのランク間で自動的に共有される「ユーザー空間」変数やバッファーはありません。
MPI 環境によって設定され、すべてのランクで「同じ」であることが保証されているいくつかの共通変数 (ランクの総数など) がありますが、「共有」されていません (たとえば、ローカルの読み取り専用コピーがあります)。すべてのランクの値)。多くの場合、値は MPI_* 呼び出しを介してアクセスされ、実装の詳細に応じて他の方法で利用できる場合もあります。