nvcc -V无法显示?nvcc和nvidia-smi显示的版本不一致?

本文讲述了在构建代码时遇到CUDA版本需求与实际驱动版本不符的问题,介绍了如何安装指定版本的CUDAToolkit、检查驱动版本以及如何编辑环境变量以确保nvcc正确显示版本的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期构建代码的时候发现,需要cuda>11.7, 但是nvidia-smi显示driver已经12.3,于是使用nvcc -V查看cuda的版本,发现了两个问题:

【1】nvcc -V无法显示

(sel) server1:~$ nvcc --version
Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit

发现需要安装nvidia-cuda-toolkit,这一步需要使用sudo权限;需要注意,直接运行命令

# 安装特定版本的话不要运行该命令!!!
sudo apt install nvidia-cuda-toolkit

会安装最新版本的cuda-toolkit版本(安装特定版本的话不要运行以上命令行!!!),所以需要查看显卡的驱动版本是多少,以安装最合适的版本;

nvidia-cuda-toolkit相关版本查看地址:

cuda-toolkiticon-default.png?t=N7T8https://developer.nvidia.com/cuda-toolkit-archive选择自己相关的cuda-toolkit,然后选择相应的版本信息,注意:一定要选择runfile!!! 如下图:

安装根据命令进行安装即可!!!注意,除非你想改driver的版本,否则在安装cuda-toolkit的时候不要附带update driver版本!!!(在安装cuda-toolkit的时候会让你选择)

如何判断需要安装哪一个cuda-toolkit版本?最简单的办法:比nvidia-smi 显示的cuda-driver版本小就行!!! 比如cuda-toolkit == 11.7, nvidia-smi显示CUDA Version: 12.2;

【2】安装了之后,nvcc -V仍然没反应?或者版本信息不是自己安装的

需要编辑环境变量,让安装的cuda-toolkit生效!

  • 找到cuda-toolkit安装路径!一般都在路径:/usr/local 下
(base) server1:/usr/local$ ls
bin  cuda  cuda-11.8  cuda_11.8.0_520.61.05_linux.run  cuda-12.3  cuda_12.3.2_545.23.08_linux.run  etc  games  include  lib  man  sbin  share  src

可以看到,cuda-11.8是cuda-toolkit的安装文件夹,cuda文件夹是对应的软连接!

  • 编辑~/.bashrc文件,在文件末尾加入如下两句
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
  • 让其生效:
source ~/.bashrc

大功告成:

(base) server1:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

如果你想要安装多个版本,请重复以上过程,最后使用的时候使用软连接修改

ln -s ./cuda ./cuda-11.8

然后重新让~/.bashrc文件生效就好啦~ 

参考链接:

1. 一文讲清楚CUDA、CUDA toolkit、CUDNN、NVCC关系

2. 【CUDA】nvcc和nvidia-smi显示的版本不一致?

### 可能原因 `nvcc -v` `nvidia-smi` 显示同的 CUDA 版本通常是由以下几个因素引起的: 1. **安装环境差异** `nvcc` 是 CUDA 工具链的一部分,其版本由本地安装的 CUDA Toolkit 决定;而 `nvidia-smi` 则依赖于 NVIDIA 驱动程序及其支持的功能集。如果系统中存在多个 CUDA Toolkit 安装路径或者 PATH 环境变量配置当,则可能导致调用到版本的工具[^2]。 2. **驱动与 CUDA 的兼容性问题** 版本的 CUDA 对应特定范围内的 NVIDIA 驱动版本。例如,某些情况下,即使驱动满足最低要求,也可能因为未更新至推荐版本而导致功能受限或检测异常[^1]。 3. **服务状态影响** 当出现 “NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver” 错误时,表明 GPU 设备可能尚未被正确初始化或加载所需模块失败。这会影响 `nvidia-smi` 正常工作并造成显示偏差[^3]。 4. **软件冲突或其他干扰源** 如操作系统层面的服务设置、第三方应用程序占用资源等情况都可能间接引发此类现象[^4]。 --- ### 解决方案 #### 方法一:确认实际使用的 CUDA 路径 通过以下命令验证当前环境中默认调用的是哪个版本的 `nvcc`: ```bash which nvcc ``` 若结果显示为非预期目录下的可执行文件位置,则需调整 `$PATH` 或指定完整路径来运行目标版本的编译器。例如,在终端前缀加入具体地址后再测试版本号输出一致性: ```bash export PATH=/usr/local/cuda-9.0/bin:$PATH nvcc --version ``` #### 方法二:核对驱动版本匹配情况 访问官方文档查询所部署 CUDA 平台所需的最小及建议最大驱动编号,并据此升级/降级现有驱动以达到最佳适配效果: ```bash nvidia-smi | grep "Driver Version" ``` #### 方法三:修复潜在的服务启动障碍 尝试重启相关组件确保硬件连接无误以及必要守护进程处于活动状态: ```bash sudo modprobe nvidia sudo systemctl restart nvidia-persistenced.service ``` 对于部分特殊场景下还需额外卸载重置整个图形栈才能彻底解决问题][^[^34]: #### 方法四:针对框架集成状况单独调试 当涉及高级库如 PyTorch 使用时发现矛盾行为(即 API 报告设备可用但基础指令反馈正常),可能是由于构建选项设定失误引起。此时参照最新发行说明重新定制适合当前架构特性的安装包能够有效缓解上述难题[^5]. --- ### 总结 综上所述,“`nvcc -v` `nvidia-smi` 显示同 CUDA 版本”的根本原因是多方面的综合体现,包括但限于开发套件布局混乱、底层支撑设施老化过期或是高层应用接口设计缺陷等方面的影响。采取逐一排查法逐步定位根源所在并将相应措施付诸实践往往可以获得满意的结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值