3

私の質問は、この分野に長い間携わってきた人にとってはばかげているように思えるかもしれませんが、私のために詳しく説明してくださったことに感謝します。

MPICH は MPI の「実装」であると彼らが言うとき、それはどういう意味ですか?

次のアナロジーは正しいですか?: MPI を FORTRAN コンパイラの標準セットと考えると、MPICH と OPENMPI は、Intel.Fortran、Compaq.Fortran、GNU.Fortran、およびすぐ。

4

1 に答える 1

6

MPI は標準です。分散システムにおけるメッセージ パッシングの特定のモデルの概要を示しています。ただし、一連の要件のみを示します。実際にはコードは含まれておらず、これらの要件をどのように満たす必要があるかを正確に指定していません。たとえば、公式の MPI 2.2 仕様 (今日の時点) からのこの抜粋を見てください。

有効な MPI 実装は、このセクションで説明するポイント ツー ポイント通信の特定の一般的なプロパティを保証します。

順序メッセージは追い越しを行いません: 送信者が 2 つのメッセージを同じ宛先に連続して送信し、両方が同じ受信に一致する場合、最初のメッセージがまだ保留中の場合、この操作では 2 番目のメッセージを受信できません。

次に、この要件の背後にある理論的根拠を説明し、例を示しますが、要件自体については何も述べていません。

MPI 実装は、上記のような MPI 仕様のすべての要件を満たすライブラリです。ただし、この標準には、どの言語構造、OS 呼び出し、サードパーティ ライブラリなどを使用できる/使用できない/すべきかに関する要件はまったく含まれていません。時折、次のように実装者にアドバイスを提供します。

実装者へのアドバイス。実装は、いつ解放するかを決定するために、データ型を使用するアクティブな通信の参照カウントを保持する場合があります。また、派生データ型のコンストラクターを実装して、データ型引数へのポインターをコピーするのではなく保持することもできます。この場合、いつデータ型オブジェクトを解放できるかを知るために、アクティブなデータ型定義参照を追跡する必要があります。(実装者へのアドバイスの終わり)

ただし、これらは依然として曖昧で、言語に依存せず、推奨事項にすぎません。実装は、これらのアドバイスをすべて無視しても、標準に準拠することができます。

そうです、本質的には、コンパイラのさまざまな実装に似ています。プログラムが言語の有効なソース コードを取得し、元のソース コードが与えられた場合に言語仕様が行うべきことをすべて実行するバイナリ コードを生成する場合、そのプログラムはその言語に適合したコンパイラです。同様に、ライブラリを使用して、MPI 仕様の規則に違反しない方法でメッセージを渡すことができる場合、それは有効な MPI 実装です。

于 2012-07-02T22:14:09.893 に答える