首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Infiniband中使用GPUDirect RDMA

如何在Infiniband中使用GPUDirect RDMA
EN

Stack Overflow用户
提问于 2015-06-25 09:30:39
回答 1查看 4.2K关注 0票数 4

我有两台机器。每台机器上都有多张特斯拉牌。每台机器上都有一张InfiniBand卡。我想通过InfiniBand在不同机器上的GPU卡之间进行通信。点对点单播就行了。我当然想使用GPUDirect RDMA,这样我就可以避免额外的复制操作了。

我知道有一个司机现在可以从梅拉诺克斯为其InfiniBand卡。但它并没有提供详细的开发指南。另外,我知道OpenMPI支持我所要求的特性。但是对于这个简单的任务来说,OpenMPI太重了,它不支持单个进程中的多个GPU。

我想知道我是否能得到任何帮助,直接使用司机进行沟通。代码示例,教程,任何东西都是好的。此外,如果有人能帮助我在OpenMPI中找到处理此问题的代码,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-28 13:58:03

要使GPUDirect RDMA工作,需要安装以下程序:

  • 安装了Mellanox (来自驱动程序 )
  • 最近安装了NVIDIA CUDA套件
  • Mellanox-NVIDIA插件(从您提供的链接-作为客人提供的帖子阻止我发布链接:( )

所有这些都应该安装(按上面列出的顺序),并加载相关模块。在此之后,您应该能够为RDMA事务注册在GPU视频内存上分配的内存。示例代码如下所示:

代码语言:javascript
复制
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的系统上),该区域具有一个有效的内存密钥,您可以使用该密钥与我们的HCA一起使用RDMA事务。

有关在代码中使用RDMA和InfiniBand谓词的详细信息,可以参考此文档

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31046386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档