2017-03-24 22 views
1

mpi.hヘッダーを見ていて、PMPI_Init機能について混乱しています。これはMPI_Init宣言の直後に置かれ、まったく同じように見えます。ただし、Msmpi.dll(たとえば)にはMPI_Initのエクスポートはありません。PMPI_Initのみです。MPI_ *関数とPMPI_ *関数の違いは何ですか?

PMPI_の機能は何ですか?

答えて

0

あなたはMPIプロファイリングインターフェイスを見ています。各MPI関数についても同様のPMPI関数があります。これは接頭辞によって異なります。

ユーザーはMPIバージョンのみを呼び出し、PMPIバージョンは無視してください。

これは、ツール開発者がMPI関数への呼び出しをインターセプトし、内部でPMPIバージョンを呼び出すことができるメカニズムです。通常、これは、すべての機能がPMPI機能として実装され、MPI機能がそれらを指す弱い記号として実装されるように実装されます。このツールは弱いシンボルを独自のラッパー実装に置き換え、内部ではPMPI関数を呼び出します。

// Normal case 
user --calls--> libmpi:MPI_Init --redicrects to--> libmpi:PMPI_Init (implementation) 

// Tool case 
user --calls--> libtool:MPI_Init (does tool things) --calls--> libmpi:PMPI_Init (implementation) 

詳細は、MPI standardの14.2項を参照してください。一般的には、ヘッダーの代わりに関数の署名など​​の標準を調べることを強くお勧めします。

1

PMPI_エントリポイントはMPI Profiling Interfaceの一部です。

これらのシンボルはデフォルトで単にMPI_関数の名前を参照していますが、APIの一部として定義することで、MPI呼び出しの周りにツールを挿入して簡単なパフォーマンスプロファイリングやトレースを簡単に実行できます。彼らがどのように動作し、どのように使用するのかについてlotsexamplesがあります。

Mostprofiling MPIコード用のツールは、ユーザーコードを変更することなく、時間MPI通信ルーチン、特定のサイズで送受信されるメッセージ数をカウントするためにこれを使用します。プロファイリングライブラリにリンクするだけです。

プロファイリングインターフェイスは、プロファイリングのために厳密に使用する必要はありません。通信の正確性チェック(送受信の一致を確認するためのプロファイリングインターフェイス)、単純なヒューリスティックデッドロックテスト、

プロファイリングインターフェイスは、しばらくの間、MPIライブラリへの唯一の標準ツールインターフェイスでしたが、より豊富なTools interfaceもあります。

関連する問題