6

私はインフィニバンドに慣れ始めたばかりで、インフィニバンドノードに対処するために使用できる方法を理解したいと思っています。

コードに基づくのは、次の例です。IB動詞を使用したRDMAの読み取りと書き込み IPoIBを使用して、IPまたはホスト名で個々のノードをアドレス指定できます。

もう1つの方法は、ポートGUIDアドレスを直接使用することです。しかし、それらを調べる必要があるように見え、イーサネットMACアドレス指定に似ています。

次に、LIDアドレスと呼ばれるものがあります。これは、ファブリックマネージャーによって割り当てられた16ビットのローカルアドレスです。実行時にLIDアドレスを使用および決定するにはどうすればよいですか?たとえば、ibaddrを実行して、GID fe80 :: 1a:4bff:ff0c:34e5 LID start 0x6end0x6を取得します。

基本的に、IPoIBを使用していない場合、ホスト名をアドレスなどにどのように変換しますか?ホストファイルまたはそれに相当するものはありますか?

4

1 に答える 1

8

リストしているさまざまなアドレス指定方法には、基本的な違いがあります。

  1. 純粋なIB動詞によるアドレス指定
  2. ある程度の抽象化による対処

パケットがIBファブリックに「注入」されると、パケットのローカルルーティングヘッダーの一部であるLIDによってのみルーティングされます。LIDは、OpenSMによって割り当てられた16ビットのローカルIDです(GIDとグローバルルーティングヘッダーの場合もありますが、この場合は脇に置いておきます-説明が簡単になることはなく、明らかにこれは必要ありません点)。

つまり、純粋なIB動詞を使用してアプリケーションを作成している場合は、LIDでエンドポイントをアドレス指定する必要があります。ローカルポートのLIDは、ibv_query_port()を使用して取得できます。これはポート属性フィールドの一部です。

ただし、すべての汚い作業を自分で行う必要はありません。librdmacm(RDMA接続マネージャー)などの抽象化ライブラリを使用してエンドポイント間の接続を作成し(「エンドポイント」とはRC QPを意味します)、純粋な動詞を使用して実際にデータを送受信します。

基本的に、IPoIBを使用していない場合、ホスト名をアドレスなどにどのように変換しますか?ホストファイルまたはそれに相当するものはありますか?

あなたはできません、そしてありません:(あなたがリンクしたそのブログの以前の投稿を通過するならば、あなたはあなたがする必要があることがわかります:

  • キューペアのアドレスを決定します。
  • アドレスを他のノードに通信します(帯域外メカニズムを介して)。

ここで重要なのは「帯域外」です。たとえば、MPIはSSHを介してこれらすべてのアドレスを交換し(ところで、IPoIB上で実行することもできます)、この情報が交換され、すべてのQPが接続されると、データはこれらのRCQPを介して流れ始めます。

于 2012-12-08T23:28:51.847 に答える