/ / GPUDirect RDMAとInfinibandを一緒に使う方法 - cuda、openmpi、infiniband、gpudirect

InfinibandでGPUDirect RDMAを使用する方法 - cuda、openmpi、infiniband、gpudirect

私は2台のマシンを持っています。 各マシンには複数のTeslaカードがあります。各マシンにInfiniBandカードもあります。 InfiniBandを介して異なるマシン上のGPUカード間で通信したい。ポイントツーポイントユニキャストで結構です。余分なコピー操作を省くために、GPUDirect RDMAを使用したいと思います。

私は、 ドライバ InflanBandでMellanoxから現在入手可能カードしかし、それは詳細な開発ガイドを提供するものではありません。また、OpenMPIは私が求めている機能をサポートしていることも承知しています。

直接何か手助けを得られるかな?ドライバを使って通信する。コードサンプル、チュートリアル、何でもいいでしょう。また、OpenMPIでこれを扱うコードを見つけるのを手伝ってくれる人がいたら、私はそれを感謝します。

回答:

回答№1は6

GPUDirect RDMAが機能するためには、以下のものがインストールされている必要があります。

上記のすべてをインストールする必要があります(上記の順序、およびロードされた関連モジュール。 その後、RDMAトランザクション用にGPUビデオメモリに割り当てられたメモリを登録できるはずです。サンプルコードは次のようになります。

void * gpu_buffer;
struct ibv_mr *mr;
const int size = 64*1024;
cudaMalloc(&gpu_buffer,size); // TODO: Check errors
mr = ibv_reg_mr(pd,gpu_buffer,size,IBV_ACCESS_LOCAL_WRITE|IBV_ACCESS_REMOTE_WRITE|IBV_ACCESS_REMOTE_READ);

これにより、(GPUDirect RDMA対応システムで)HCAとのRDMAトランザクションに使用できる有効なメモリキーを使用して、メモリ領域が作成されます。

コード内でRDMA動詞とInfiniBand動詞を使用する方法の詳細については、こちらを参照してください。 資料.