Mellanox官方gpu_direct_rdma_access测试ibv_reg_mr返回空指针原因咨询
ibv_reg_mr注册GPU内存返回空指针的常见原因
- 驱动兼容性问题
RTX TITAN为消费级GPU,部分旧版本CUDA驱动对GPU Direct RDMA的支持存在缺陷,同时Connect-X5网卡需要搭配4.7-1.0.0.1及以上版本的MLNX_OFED驱动才能稳定支持GDR功能。此外必须保证nvidia-peermem内核模块处于正常加载状态,该模块是RDMA栈能够直接访问GPU显存的核心依赖,缺失的情况下内存注册必然失败。 - 待注册内存属性不符合要求
传入ibv_reg_mr的地址必须是通过cudaMalloc分配的标准GPU设备内存,不能是cudaMallocHost分配的锁页主机内存、GPU共享内存、纹理内存等特殊内存,同时要检查传入的内存长度不为0、且不超过当前GPU的可用显存上限。 - 系统内存锁定权限不足
RDMA内存注册需要进程持有足够的内存锁定权限,普通用户默认的memlock上限通常过低,可检查/etc/security/limits.conf文件中对应用户的memlock配置,建议设置为unlimited后重新登录测试。 - HCA PCIe BAR空间配置不足
Connect-X5的PCIe预取BAR空间如果小于待注册的GPU内存大小,会导致注册失败。可通过lspci命令查看网卡的预取BAR大小,若尺寸不足需要进入主板BIOS开启「Above 4G Decoding」选项释放更大的PCIe地址空间。 - 硬件拓扑与配置限制
首先要确保GPU和Connect-X5网卡挂载在同一个CPU的PCIe根复合体下,跨CPU Socket的PCIe设备做GDR在旧版本内核中存在兼容性问题。其次可检查RTX TITAN的ECC功能状态,部分场景下ECC开启会限制外部设备直接访问GPU显存,临时关闭ECC测试验证是否为该原因导致。 - 接口参数配置错误
检查调用ibv_reg_mr时传入的访问权限标志是否和后续的RDMA操作匹配,用于GPU Direct RDMA的内存注册需要至少配置IBV_ACCESS_LOCAL_WRITE,如果需要远端读写还要对应开启IBV_ACCESS_REMOTE_WRITE或IBV_ACCESS_REMOTE_READ权限,标志位配置错误会直接返回注册失败。
内容的提问来源于stack exchange,提问作者Ccfeiker
相关产品推荐
相关产品推荐

