如何使用Infiniband使用GPUDirect RDMA
我有两台机器。 每台机器上都有多个特斯拉卡。 每台机器上还有一个InfiniBand卡。 我想通过InfiniBand在不同机器上的GPU卡之间进行通信。 只要指向单播就没问题。 我当然想要使用GPUDirect RDMA,这样我就可以免除额外的复制操作。
我知道Mellanox现在有一个驱动程序可用于它的InfiniBand卡。 但它没有提供详细的开发指南。 另外我知道OpenMPI支持我所要求的功能。 但是OpenMPI对于这个简单的任务来说太重了,并且它不支持单个进程中的多个GPU。
我想知道是否能够直接使用驱动程序来进行通信。 代码示例,教程,任何事情都会很好。 另外,如果有人可以帮我找到在OpenMPI中处理这个问题的代码,我将不胜感激。
要使GPUDirect RDMA正常工作,需要安装以下内容:
Mellanox OFED安装(从http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers)
最近安装了NVIDIA CUDA套件
以上所有应该安装(按照上面列出的顺序),并加载相关模块。 之后,您应该能够注册分配给GPU视频内存的内存以进行RDMA交易。 示例代码如下所示:
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动词的更多详细信息,请参阅此文档。
链接地址: http://www.djcxy.com/p/64623.html上一篇: How to use GPUDirect RDMA with Infiniband
下一篇: RDMA CM for Windows