普通网友 2025-10-10 04:50 采纳率: 98.4%
浏览 2
已采纳

Ubuntu下如何验证CUDA是否正常运行?

在Ubuntu系统中安装CUDA后,如何验证其是否正常运行是一个常见问题。用户常遇到nvidia-smi显示正常,但CUDA程序无法执行或编译报错“nvcc not found”等问题。典型疑问包括:如何确认CUDA驱动、运行时和开发工具链正确安装?如何通过deviceQuery和bandwidthTest样例程序验证GPU计算能力?此外,环境变量PATH和LD_LIBRARY_PATH配置不当也会导致CUDA无法识别。需检查CUDA版本与NVIDIA驱动兼容性,并确保已安装cuda-toolkit及相关依赖。
  • 写回答

1条回答 默认 最新

  • 祁圆圆 2025-10-10 04:51
    关注

    Ubuntu系统中CUDA安装后验证的完整指南

    1. 初步检查:确认NVIDIA驱动与GPU识别状态

    在安装CUDA之前,必须确保NVIDIA专有驱动已正确加载。使用以下命令检查:

    sudo nvidia-smi

    若输出包含GPU型号、驱动版本、温度及显存使用情况,则说明驱动层已正常工作。注意记录显示的CUDA Version字段,它代表当前驱动支持的最高CUDA运行时版本。

    常见误区是认为nvidia-smi显示CUDA版本即表示开发工具链可用,实际上这只是运行时兼容性指标。

    2. 验证CUDA驱动、运行时与开发工具链的完整性

    CUDA生态由三部分构成:

    • Driver API:由nvidia.ko内核模块提供,通过nvidia-smi验证
    • Runtime API:cuda-runtime库(libcudart.so),用于程序执行
    • Development Tools:包括nvcc编译器、调试器、性能分析工具等

    若出现“nvcc not found”,通常是因为未安装cuda-toolkit或环境变量未配置。

    3. 检查CUDA Toolkit安装与环境变量配置

    确认是否已安装CUDA开发组件:

    dpkg -l | grep cuda-toolkit

    若无输出,需安装对应版本,例如:

    sudo apt install cuda-toolkit-12-4

    然后配置环境变量。编辑~/.bashrc~/.zshrc

    export PATH=/usr/local/cuda-12.4/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH

    重新加载配置:source ~/.bashrc,再执行nvcc --version应能显示编译器版本。

    4. 验证CUDA版本与NVIDIA驱动兼容性

    不同CUDA Toolkit版本对最低驱动版本有要求。参考NVIDIA官方兼容性表:

    CUDA ToolkitMinimum Driver Version
    12.4550.54.06
    12.3545.23.08
    12.2535.86.05
    12.1530.30.02
    12.0525.60.13
    11.8520.61.05
    11.7515.48.07
    11.6510.47.03
    11.5495.29.05
    11.4470.42.01

    5. 编译并运行CUDA样例程序:deviceQuery与bandwidthTest

    NVIDIA CUDA Samples提供了标准验证程序。获取方式:

    wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda-samples-linux-12.4.0-1.run
    sudo sh cuda-samples-linux-12.4.0-1.run

    进入Samples目录并编译:

    cd /usr/local/cuda-12.4/samples/1_Utilities/deviceQuery
    make
    ./deviceQuery

    成功输出应包含“Result = PASS”及GPU计算能力(如sm_86)。

    同样测试带宽:

    cd ../bandwidthTest
    make
    ./bandwidthTest

    6. 使用Mermaid流程图展示诊断逻辑

    graph TD A[开始验证CUDA] --> B{nvidia-smi是否正常?} B -->|否| C[重装NVIDIA驱动] B -->|是| D{nvcc --version是否成功?} D -->|否| E[检查PATH与cuda-toolkit安装] D -->|是| F[编译deviceQuery] F --> G{deviceQuery是否PASS?} G -->|否| H[检查CUDA与驱动兼容性] G -->|是| I[运行bandwidthTest] I --> J{带宽是否合理?} J -->|是| K[CUDA环境正常] J -->|否| L[排查GPU频率或PCIe链路问题]

    7. 常见故障排查清单

    1. 确认nvidia-smi输出中CUDA Version ≥ 所用Toolkit版本
    2. 检查/usr/local/cuda-<version>/bin/nvcc是否存在
    3. 验证which nvcc是否指向正确路径
    4. 使用ldconfig -p | grep cuda确认动态库注册
    5. 若使用Conda环境,避免与系统CUDA冲突
    6. 多版本CUDA共存时,通过软链接切换/usr/local/cuda
    7. 检查BIOS中是否启用Above 4G Decoding和Resizable BAR
    8. PCIe链路宽度可通过nvidia-smi topo -m查看
    9. 确保没有残留的nouveau驱动干扰
    10. 使用dmesg | grep NVRM排查内核级错误
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 10月10日