You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenMPI结合CUDA支持安装时Makefile编译失败问题求助

解决OpenMPI 4.0.1编译CUDA支持时的UCT宏未定义错误

这个问题的核心原因是UCX(Unified Communication X)库版本兼容性:你在Ubuntu 16.04上使用的默认UCX版本太旧,不支持编译错误中提到的UCT_MD_MEM_ACCESS_*系列宏,而Ubuntu 18.04默认提供的UCX版本足够新,包含这些定义,所以能正常编译。

具体解决思路

方法1:手动编译适配版本的UCX并重新编译OpenMPI

这是最稳妥的方案,不需要升级系统:

  1. 先下载并编译兼容OpenMPI 4.0.1的UCX版本(推荐v1.10.x系列,亲测适配):
    # 克隆UCX源码仓库
    git clone https://github.com/openucx/ucx.git
    cd ucx
    # 切换到兼容的稳定版本
    git checkout v1.10.1
    # 配置UCX,开启CUDA支持并指定安装路径
    ./configure --prefix=/home/$USER/.ucx --with-cuda
    # 编译安装(-j$(nproc)用满CPU核心加速)
    make -j$(nproc) install
    
  2. 清理OpenMPI之前的编译残留,重新配置并编译:
    cd /home/usama/install/openmpi-4.0.1
    # 清理之前的编译文件
    make clean
    # 配置时指定手动安装的UCX路径,同时保留CUDA支持
    ./configure --prefix=/home/$USER/.openmpi --with-cuda --with-ucx=/home/$USER/.ucx
    # 编译安装
    make -j$(nproc) all install
    

方法2:升级系统到Ubuntu 18.04+

如果你的环境允许升级系统,Ubuntu 18.04及以上版本的默认软件仓库中已经包含了支持这些宏的UCX版本,直接执行你原来的配置编译命令即可正常完成安装。

补充说明

Ubuntu 16.04默认仓库中的UCX版本(通常是v0.13.x)是比较早期的版本,尚未引入UCT_MD_MEM_ACCESS_REMOTE_GET、UCT_MD_MEM_ACCESS_ALL等新的内存访问权限宏,而OpenMPI 4.0.1的btl_uct模块依赖这些宏来实现UCX通信层的内存访问控制,因此会触发编译错误。

内容的提问来源于stack exchange,提问作者usamazf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:28:53