2016-04-12 6 views
1

OpenMPIでは、すべての集合操作(​​たとえばMPI_Reduce)のコールスタックに従うと、send()という関数が呼び出されます。send()はOpenMPIでどこに実装されていますか?

grepを多くの後、私は、send()が実装されている場所がわからないんだけど。私はsend()がある種のマクロやあいまいなシム層の中に埋め込まれている可能性があると思います。 OpenMPIのコードベースにある送信の実装(s)は(ある

)?

私はOpenSMS v1.8.1を見ていますが、ソーサツリーの構成はバージョン間であまり変わっていないと思われます。

+1

は、最も可能性の高いPOSIXシステムコールである - それは、オペレーティングシステムではなく、MPI内に実装されています。 –

答えて

2

send(2)ネットワークソケットを介してデータを送信するためのBSDソケットシステムコールです。これは、Open MPIのtcp BTLによって最終的に、あるプロセスから別のプロセスへの実際のネットワーク転送を実行するために使用され、実装は標準CライブラリのソースコードとOSカーネルにあります。

Open MPIがTCP/IPネットワークを介してあるランクから別のランクにメッセージを送信するために使用する実際の上位メカニズムに興味がある場合、tcp BTL自体は$OMPI_SOURCE/ompi/mca/btl/tcp/にあります(古いOpen MPIバージョン)または$OMPI_SOURCE/opal/mca/btl/tcp/(新しいバージョンの場合)。 ()を送る

関連する問題