Hot*_*PxL 4 cuda openmpi infiniband gpudirect
我有两台机器.每台机器上都有多张特斯拉卡.每台机器上都有一张InfiniBand卡.我想通过InfiniBand在不同机器上的GPU卡之间进行通信.只需点对点单播即可.我当然希望使用GPUDirect RDMA,这样我就可以省去额外的复制操作.
我知道Mellanox现在有一款可用于其InfiniBand卡的驱动程序.但它没有提供详细的开发指南.另外我知道OpenMPI支持我要求的功能.但OpenMPI对于这个简单的任务来说太重了,它不支持单个进程中的多个GPU.
我想知道我是否可以直接使用驱动程序进行通信.代码示例,教程,任何事情都会很好.此外,如果有人能帮助我在OpenMPI中找到处理此问题的代码,我将不胜感激.
小智 6
要使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);
Run Code Online (Sandbox Code Playgroud)
这将创建(在GPUDirect RDMA启用的系统上)一个内存区域,其中包含一个有效的内存密钥,可用于与我们的HCA进行RDMA事务.
有关在代码中使用RDMA和InfiniBand谓词的更多详细信息,请参阅此文档.
| 归档时间: |
|
| 查看次数: |
2539 次 |
| 最近记录: |