ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CUDA与NVIDIA驱动的版本依赖关系详解

CUDA与NVIDIA驱动的版本依赖关系详解 1. 这不是“装个驱动”那么简单CUDA 与 NVIDIA 显卡驱动的本质关系你搜“CUDA 安装”页面上跳出来的全是“下载官网包→双击运行→下一步→完成”的截图教程点开“N卡驱动安装”又是一堆“去 NVIDIA 官网下载最新版→勾选 GeForce Experience→一路确定”。但真正跑过深度学习训练、编译过 CUDA C 项目、或者在 WSL2 里反复折腾过 PyTorch 的人很快就会发现驱动没装对CUDA 根本跑不起来CUDA 版本选错了TensorFlow 直接报错找不到 libcudnn.soWSL2 里装了 CUDA宿主机驱动却还是旧的结果连 nvidia-smi 都不认——这根本不是“装两个软件”能解决的事而是一套环环相扣的硬件-固件-内核-运行时协同系统。核心关键词“CUDA”和“N卡驱动”从来就不是并列关系而是上下依赖关系NVIDIA 驱动Driver是底层操作系统与 GPU 硬件之间的翻译官它把 Linux 内核或 Windows 的系统调用翻译成 GPU 能听懂的指令流而 CUDA Toolkit 是一套开发工具链它依赖驱动提供的运行时接口如libcuda.so才能调用 GPU 执行计算任务。打个比方驱动是 GPU 的“操作系统内核模块”CUDA Toolkit 是“GPU 上的 GCC glibc 标准库”——没有前者后者连进程都起不来。这也是为什么所有热词里反复出现“兼容性”问题“4060ti 支持的 CUDA 版本”、“tensorflow 2.5.0 cuda cudnn nvidia 驱动 driver version: 550.144.03”、“cuda llama.cpp non compatible”——这些不是用户操作失误而是版本矩阵断裂导致的硬性失败。NVIDIA 官方明确标注了每一代驱动支持的最高 CUDA 版本例如 Driver 535 支持 CUDA 12.2但不支持 12.3而每个 CUDA Toolkit 版本又规定了最低驱动要求例如 CUDA 12.4 要求 Driver ≥ 535.104.05。一旦你装了 CUDA 12.4 却只更新到 Driver 530nvcc --version能显示版本号但nvidia-smi可能报错torch.cuda.is_available()返回 False甚至./deviceQuery直接 segmentation fault。更麻烦的是环境碎片化Windows 原生、WSL2、Docker 容器、VMware 虚拟机、Linux 物理机——每种环境的驱动加载机制、CUDA 运行时路径、GPU 设备节点暴露方式都完全不同。比如 WSL2 并不直接运行 NVIDIA 驱动而是通过 Windows 主机的驱动 WSL2 内核模块nvidia-fs实现 GPU 透传Docker 里要用--gpus all参数挂载设备但前提是宿主机驱动必须支持容器 GPU 访问需开启nvidia-container-toolkitVMware 则根本无法直通 CUDA只能靠 CPU 模拟或第三方插件效果极差。所以所谓“CUDA 安装教程”本质是在特定环境约束下构建一条从硬件到应用的完整可信链路。我见过太多人花三天时间重装系统就因为没看清自己用的是 RTX 4090 还是 A100也没查清 Ubuntu 22.04 默认内核是否兼容 Driver 535——结果apt install nvidia-driver-535直接把系统 X server 弄崩连图形界面都进不去。因此这篇内容不教你“点几下鼠标”而是带你拆解这套系统从显卡型号如何决定驱动上限到驱动版本如何锁死 CUDA 工具链选择从 WSL2 的特殊加载路径到 Docker 容器里如何验证 GPU 是否真被挂载从nvidia-smi和nvcc --version的输出差异到ldconfig -p | grep cuda查看动态库真实链接状态。你会明白为什么“cuda samples 找不到”不是路径问题而是CUDA_PATH环境变量没被nvcc编译器识别为什么“pytorch 安装后 cuda.is_available() 为 False”根源可能在libcudart.so.12和libcudnn.so.8的 ABI 版本不匹配。这不是玄学是可验证、可调试、可复现的工程逻辑。2. 驱动与 CUDA 的版本锁链一张表看懂所有兼容性陷阱很多人以为“装最新版就最稳”结果在 RTX 4060 Ti 上装了 CUDA 12.5却发现 PyTorch 官方 wheel 只提供到 CUDA 12.1 支持或者在 Ubuntu 20.04 上强行升级 Driver 550结果内核模块编译失败系统启动卡在黑屏。问题出在 NVIDIA 维护的三张关键兼容性表格上Driver → CUDA 最高支持版本、CUDA Toolkit → 最低 Driver 要求、深度学习框架 → 推荐 CUDA/cuDNN 组合。这三者构成一个三角约束缺一不可。先看最底层的驱动支撑能力。NVIDIA 每发布一个驱动版本都会明确标注其支持的 CUDA Toolkit 最高版本。例如 Driver 535.104.052023年10月发布支持 CUDA 12.2但不支持 12.3Driver 550.144.032024年4月发布则支持 CUDA 12.4。这个限制不是软性的——CUDA 12.3 的运行时库libcudart.so.12.3会调用 Driver 535 中不存在的新内核函数导致dlopen失败。你可以用命令验证当前驱动支持的 CUDA 版本上限# Linux 下查看驱动版本及支持的 CUDA 最高版本 nvidia-smi --query-gpudriver_version --formatcsv,noheader,nounits # 输出示例535.104.05 # 对照 NVIDIA 官方文档https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html # 查得 Driver 535.x 支持 CUDA 最高 12.2再看 CUDA Toolkit 的反向约束。每个 CUDA Toolkit 安装包都内置了minimum_driver_version.txt文件里面写着“此版本 CUDA 要求 Driver ≥ xxx.xxx.xx”。例如 CUDA 12.4 的最低要求是 Driver 535.104.05如果你装了 535.104.04nvcc编译时可能不报错但运行时cudaMalloc就会返回cudaErrorInsufficientDriver。这个检查发生在 CUDA 运行时初始化阶段不是编译期能发现的。实测中我们曾用strace -e traceopenat nvcc --version抓取nvcc启动时打开的库文件发现它会尝试读取/usr/lib/nvidia/current/libcuda.so如果该文件版本低于要求直接 abort。第三层是深度学习框架的适配。PyTorch、TensorFlow、ONNX Runtime 等不是直接调用 CUDA而是通过 cuDNN、NCCL 等中间库封装。它们发布的预编译 wheel 包是在特定 CUDA/cuDNN 组合下编译的。比如 PyTorch 2.3.0 的torch-2.3.0cu121表示它链接了 CUDA 12.1 的运行时库若你本地装的是 CUDA 12.4即使驱动满足要求import torch时也会因libcudart.so.12.1找不到而失败。官方推荐组合表如 PyTorch 的 https://pytorch.org/get-started/locally/本质是告诉你“我们只保证在这个组合下测试通过”而不是“其他组合一定不行”。我把主流组合整理成一张可执行验证的对照表。注意所有版本号必须精确匹配小数点后位数Driver 535.104.05 ≠ 535.104.04CUDA 12.1.1 ≠ 12.1.0cuDNN 8.9.7 ≠ 8.9.6。生产环境务必用nvidia-smi、nvcc --version、python -c import torch; print(torch.__version__, torch.version.cuda)三重校验。环境场景NVIDIA Driver 版本CUDA Toolkit 版本cuDNN 版本PyTorch 推荐版本关键验证命令RTX 4090 Ubuntu 22.04535.104.05CUDA 12.2cuDNN 8.9.22.1.0cu121nvidia-smi显示 535.104.05nvcc --version显示 V12.2.123python -c import torch; print(torch.version.cuda)输出 12.1WSL2 Windows 11 23H2Windows 主机 Driver 550.144.03WSL2 CUDA 12.4cuDNN 8.9.72.3.0cu121wsl -l -v确认 WSL2 内核 ≥ 5.15.133.1nvidia-smi在 WSL2 中应显示 Driver 550.144.03cat /proc/driver/nvidia/version应与 Windows 主机一致Docker A100Host Driver 535.104.05CUDA 12.2 Base ImagecuDNN 8.9.22.1.0cu121docker run --rm --gpus all nvidia/cuda:12.2.2-devel-ubuntu22.04 nvidia-smi必须成功ldconfig -p | grep cuda在容器内应列出libcudart.so.12RTX 4060 Ti Windows 11536.67CUDA 12.3cuDNN 8.9.52.2.0cu121nvidia-smi显示 536.67nvcc --version显示 V12.3.54注意PyTorch 2.2.0 官方 wheel 仍基于 CUDA 12.1需手动编译或使用pip install torch2.2.0cu121 --extra-index-url https://download.pytorch.org/whl/cu121提示不要迷信“最新版”。RTX 40 系列显卡Ada Lovelace 架构在 Driver 525 之前根本不被支持强行装旧驱动会导致nvidia-smi不识别设备而 Ampere 架构A100/3090在 Driver 515 之后才获得完整 FP8 支持。你的显卡型号决定了驱动下限驱动版本决定了 CUDA 上限CUDA 版本又锁死了框架选择——这是不可绕过的物理事实。3. 实操全流程从物理机到 WSL2 的四类环境安装策略安装 CUDA 不是“下载安装包→运行→完事”而是根据目标环境选择对应的技术路径。我将实操分为四类典型场景Linux 物理机Ubuntu/CentOS、Windows 原生、WSL2 子系统、Docker 容器。每种路径的底层机制、关键步骤、易错点都截然不同。下面以 Ubuntu 22.04 RTX 4090 为例完整演示 Linux 物理机安装并对比说明其他环境的差异要点。3.1 Linux 物理机Ubuntu 22.04 RTX 4090 全流程含避坑细节第一步永远不是装 CUDA而是确认内核兼容性。Ubuntu 22.04 默认内核是 5.15而 Driver 535 要求内核 ≥ 5.10表面看没问题但实际安装时可能因 Secure Boot 或 DKMS 模块编译失败。先禁用 Secure BootBIOS 设置再更新系统sudo apt update sudo apt upgrade -y sudo apt install linux-headers-$(uname -r) build-essential -y # 验证内核头文件是否完整 ls /lib/modules/$(uname -r)/build/include/generated/uapi/linux/version.h # 若缺失需安装对应 linux-headers 包第二步安装 NVIDIA 驱动。绝对不要用ubuntu-drivers autoinstall——它会装一个“安全驱动”通常是旧版且不支持新架构。正确做法是去 https://www.nvidia.com/Download/index.aspx 选择你的显卡型号GeForce RTX 4090、操作系统Linux 64-bit、语言下载.run文件如NVIDIA-Linux-x86_64-535.104.05.run。然后# 关闭图形界面否则驱动安装会失败 sudo systemctl stop gdm3 # Ubuntu 22.04 默认显示管理器是 gdm3 # 或 sudo systemctl stop lightdmUbuntu 20.04 # 赋予执行权限并安装--no-opengl-files 避免覆盖 Mesa 库 sudo chmod x NVIDIA-Linux-x86_64-535.104.05.run sudo ./NVIDIA-Linux-x86_64-535.104.05.run --no-opengl-files --silent --dkms # 重启后验证 sudo reboot nvidia-smi # 应显示驱动版本和 GPU 状态注意--silent参数让安装无交互--dkms确保内核更新后驱动自动重建。如果nvidia-smi报错“NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver”说明驱动未加载执行sudo modprobe nvidia并检查dmesg | grep -i nvidia是否有错误。第三步安装 CUDA Toolkit。NVIDIA 提供三种方式.run安装包、.deb本地包、APT 仓库。推荐使用 APT 仓库因为它能自动处理依赖和路径配置# 下载 CUDA 12.2 的 APT 仓库配置对应 Driver 535 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda-repo-ubuntu2204-12-2-local_12.2.2-535.104.05-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2204-12-2-local_12.2.2-535.104.05-1_amd64.deb sudo apt-key add /var/cuda-repo-ubuntu2204-12-2-local/7fa2af80.pub sudo apt update sudo apt install cuda-toolkit-12-2 -y # 自动创建 /usr/local/cuda-12.2 符号链接 ls -l /usr/local/cuda # 应指向 cuda-12.2第四步配置环境变量。这是最容易出错的环节。.bashrc中添加export CUDA_HOME/usr/local/cuda export PATH$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH$CUDA_HOME/lib64:$LD_LIBRARY_PATH # 注意不要写成 export LD_LIBRARY_PATH/usr/local/cuda/lib64:$LD_LIBRARY_PATH # 因为 /usr/local/cuda 是符号链接实际路径是 /usr/local/cuda-12.2/lib64然后source ~/.bashrc验证nvcc --version # 应输出 release 12.2, V12.2.123 nvidia-smi # 驱动版本应为 535.104.05 # 测试 CUDA Samples需先编译 cd /usr/local/cuda-12.2/samples/1_Utilities/deviceQuery sudo make ./deviceQuery # 最后一行应显示 Result PASS实操心得deviceQuery编译失败最常见的原因是gcc版本过高Ubuntu 22.04 默认 gcc-11CUDA 12.2 要求 ≤ gcc-11.3。解决方案是临时降级sudo apt install gcc-11 g-11然后sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g g /usr/bin/g-11。编译完再切回默认版本。3.2 Windows 原生避免 GeForce Experience 的三大陷阱Windows 安装看似简单但隐藏着三个致命陷阱GeForce Experience 自动更新覆盖、CUDA 安装包自带旧驱动、Visual Studio 版本不匹配。首先禁用 GeForce Experience 的驱动自动更新。它会静默升级到最新驱动但可能破坏 CUDA 兼容性。右键任务栏图标 → Settings → Drivers → 关闭 “Automatically download and install driver updates”。其次不要直接运行 CUDA 官网的cuda_12.2.2_535.104.05_windows.exe。这个安装包包含驱动、Toolkit、Samples 三合一但它捆绑的驱动版本是 535.104.05而你可能已装了 536.67支持 4060 Ti。正确做法是先去 NVIDIA 官网单独下载对应显卡的最新驱动如 536.67安装时勾选“自定义安装”→取消勾选“NVIDIA GeForce Experience”和“HD Audio”只保留“Graphics Driver”然后单独下载 CUDA Toolkit 的cuda_12.2.2_535.104.05_network.exe网络安装包安装时取消勾选“NVIDIA Driver”只选“CUDA Toolkit”和“CUDA Samples”。最后Visual Studio 版本必须匹配。CUDA 12.2 要求 VS2019 或 VS202217.4且需安装“C build tools”。如果 VS 版本太低nvcc编译会报错error MSB8065: Custom build for item xxx.cu。验证方法打开 VS Installer → 修改 → 勾选 “C build tools” 和 “Windows 10/11 SDK”。3.3 WSL2Windows 主机驱动才是关键WSL2 的 CUDA 不是“在 Linux 里装驱动”而是完全依赖 Windows 主机的 NVIDIA 驱动。WSL2 内核通过nvidia-fs模块访问主机 GPU因此Windows 主机必须安装Driver ≥ 510WSL2 GPU 支持起始版本且推荐 ≥ 535WSL2 发行版必须是Ubuntu 22.04 或更高版本内核 ≥ 5.10.102.1Windows 11 版本必须 ≥ 22H2Build 22621。安装步骤Windows 主机安装 Driver 535.104.05或更高WSL2 中执行# 更新 WSL2 内核 wsl --update # 重启 WSL2 wsl --shutdown # 进入 Ubuntu wsl -d Ubuntu-22.04 # 安装 CUDA Toolkit必须用 WSL2 专用包 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda-wsl-ubuntu-2204-12-2-local_12.2.2-535.104.05-1_amd64.deb sudo dpkg -i cuda-wsl-ubuntu-2204-12-2-local_12.2.2-535.104.05-1_amd64.deb sudo apt update sudo apt install cuda-toolkit-12-2 -y验证nvidia-smi在 WSL2 中应显示与 Windows 主机相同的 Driver 版本nvcc --version显示 CUDA 12.2。常见问题nvidia-smi报错 “Failed to initialize NVML: Driver/library version mismatch”。这是因为 WSL2 内核模块未加载。执行sudo /usr/lib/wsl/lib/nvidia-smi强制调用主机驱动或重启 WSL2。3.4 Docker容器内 GPU 访问的三重验证Docker 里启用 GPU 不是加个--gpus all就完事。必须确保宿主机已安装nvidia-container-toolkitNVIDIA Container ToolkitDocker daemon 配置了default-runtime nvidia使用的 base image 支持对应 CUDA 版本。安装nvidia-container-toolkit# Ubuntu curl -sSL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -sSL https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install -y nvidia-docker2 sudo systemctl restart docker验证 Docker GPU 支持# 运行官方测试镜像 docker run --rm --gpus all nvidia/cuda:12.2.2-devel-ubuntu22.04 nvidia-smi # 应输出与宿主机相同的 nvidia-smi 结果构建自己的镜像时Dockerfile 必须指定 CUDA base imageFROM nvidia/cuda:12.2.2-devel-ubuntu22.04 # 不要 FROM ubuntu:22.04 然后 apt install cuda-toolkit RUN apt-get update apt-get install -y python3-pip RUN pip3 install torch2.1.0cu121 --extra-index-url https://download.pytorch.org/whl/cu121注意nvidia/cuda:12.2.2-devel-ubuntu22.04镜像已预装 CUDA 12.2 和对应驱动兼容层--gpus all会自动挂载/dev/nvidiactl、/dev/nvidia-uvm等设备节点。如果用FROM ubuntu:22.04自己装 CUDA容器内nvidia-smi会显示 “No devices were found”因为设备节点未挂载。4. 故障排查实战从nvidia-smi无输出到torch.cuda.is_available()为 False 的全链路诊断当nvidia-smi不显示 GPU或torch.cuda.is_available()返回 False很多人第一反应是“重装驱动”。但实际问题可能出现在链路的任意一环硬件层、驱动层、CUDA 层、框架层。下面是我整理的故障树按优先级从高到低排列每一步都有可执行的验证命令。4.1 硬件与 BIOS 层GPU 是否被系统识别这是最基础的检查。如果主板 BIOS 没启用 PCIe 或 GPU 插槽供电后续所有步骤都是徒劳。# 查看 PCIe 设备列表确认 GPU 存在 lspci | grep -i nvidia # 正常输出示例01:00.0 VGA compatible controller: NVIDIA Corporation AD102 [GeForce RTX 4090] (rev a1) # 如果无输出检查 BIOS 中 PCIe 设置如 Above 4G Decoding、Resizable BAR # 检查电源是否足够RTX 4090 建议 ≥ 850W4.2 驱动层内核模块是否加载nvidia-smi无输出90% 的原因是nvidia内核模块未加载。# 查看内核模块状态 lsmod | grep nvidia # 正常应输出多行如 nvidia_uvm、nvidia_drm、nvidia # 如果无输出手动加载 sudo modprobe nvidia sudo modprobe nvidia_modeset sudo modprobe nvidia_uvm sudo modprobe nvidia_drm # 检查 dmesg 日志 dmesg | grep -i nvidia # 常见错误nvidia: disagrees about version of symbol module_layout → 内核头文件版本不匹配4.3 CUDA 层运行时库是否可链接驱动正常但nvcc --version报错或python -c import torch失败问题在 CUDA 运行时库。# 检查 CUDA 动态库路径 ldconfig -p | grep cuda # 正常应显示 libcudart.so.12 - libcudart.so.12.2.123 等 # 如果无输出检查 /usr/local/cuda/lib64 是否在 /etc/ld.so.conf.d/cuda.conf 中 echo /usr/local/cuda/lib64 | sudo tee /etc/ld.so.conf.d/cuda.conf sudo ldconfig # 检查 nvcc 调用的库 ldd $(which nvcc) | grep cuda # 应显示 libcudart.so.12 /usr/local/cuda-12.2/lib64/libcudart.so.124.4 框架层Python 包是否链接正确 CUDA 版本PyTorch/TensorFlow 的 wheel 包是静态链接 CUDA 运行时的版本错配会导致ImportError。# 查看 PyTorch 编译信息 python -c import torch; print(torch.__config__.show()) # 关键字段CUDA used to build PyTorch: 12.1CUDA runtime version: 12.1.105 # 如果显示 CUDA runtime version: 12.2.123但 PyTorch 编译用的是 12.1则必然失败 # 解决方案卸载当前 PyTorch安装匹配版本 pip uninstall torch torchvision torchaudio pip install torch2.1.0cu121 --extra-index-url https://download.pytorch.org/whl/cu1214.5 WSL2/Docker 专属问题设备节点挂载验证WSL2 和 Docker 的问题往往在设备节点挂载。# WSL2 中检查设备节点 ls -l /dev/nvidia* # 应显示 /dev/nvidia0、/dev/nvidiactl、/dev/nvidia-uvm # 如果缺失重启 WSL2wsl --shutdown # Docker 中检查 docker run --rm --gpus all nvidia/cuda:12.2.2-devel-ubuntu22.04 ls -l /dev/nvidia* # 应与宿主机一致我把高频问题整理成速查表按现象归类现象可能原因验证命令解决方案nvidia-smi命令未找到PATH 未包含/usr/bin或驱动未安装which nvidia-smi安装驱动或检查apt install nvidia-utils-535nvidia-smi显示 “NVIDIA-SMI has failed…”内核模块未加载或版本不匹配lsmod | grep nvidiadmesg | grep -i nvidiasudo modprobe nvidia重装匹配内核头文件的驱动nvcc --version报错 “command not found”CUDA PATH 未配置或安装失败echo $PATH | grep cudals /usr/local/cuda*配置~/.bashrc重新安装 CUDA Toolkitnvcc --version显示版本但./deviceQuery报错GCC 版本不兼容或缺少依赖gcc --versionsudo apt install build-essential降级 GCC安装 build-essentialtorch.cuda.is_available()返回 FalsePyTorch wheel 与 CUDA 版本不匹配python -c import torch; print(torch.version.cuda)卸载重装匹配 CUDA 版本的 PyTorchWSL2 中nvidia-smi显示 Driver 版本但nvcc找不到WSL2 CUDA Toolkit 未安装which nvcc安装cuda-wsl-ubuntu-2204专用包Docker 中nvidia-smi无输出nvidia-container-toolkit未安装或 Docker daemon 未配置docker info | grep -i runtime安装 toolkit修改/etc/docker/daemon.json添加default-runtime: nvidia实操心得我遇到过最隐蔽的问题是 SELinux。CentOS/RHEL 系统默认开启 SELinux它会阻止nvidia-smi访问/dev/nvidiactl设备节点导致nvidia-smi报错但dmesg无提示。解决方案sudo setsebool -P nvidia_modprobe_exec_t on或临时设为 permissive 模式sudo setenforce 0。这种问题在日志里完全不体现只能靠排除法。5. 进阶技巧多版本 CUDA 共存、CUDA 降级、以及 AMD 显卡运行 CUDA 的真相“CUDA 多版本安装”是搜索热词但多数教程只教你怎么装多个版本却不告诉你如何安全切换。真正的多版本共存不是靠软链接来回改/usr/local/cuda而是用update-alternatives管理让nvcc、nvidia-smi、libcudart.so各自独立。5.1 多版本 CUDA 共存update-alternatives实战假设你同时需要 CUDA 11.8用于旧项目和 CUDA 12.2用于新项目。先分别安装# 安装 CUDA 11.8 sudo apt install cuda-toolkit-11-8 # 安装 CUDA 12.2 sudo apt install cuda-toolkit-12-2然后用update-alternatives注册# 注册 nvcc sudo update-alternatives --install /usr/local/cuda/bin/nvcc nvcc /usr/local/cuda-11.8/bin/nvcc 118 --slave /usr/local/cuda/bin/nvcc-config nvcc-config /usr/local/cuda-11.8/bin/nvcc-config sudo update-alternatives --install /usr/local/cuda/bin/nvcc nvcc /usr/local/cuda-12.2/bin/nvcc 122 --slave /usr/local/cuda/bin/nvcc-config nvcc-config /usr/local/cuda-12.2/bin/nvcc-config # 配置默认版本 sudo update-alternatives --config nvcc # 选择序号即可切换同理注册libcudart.so# 创建符号链接 sudo ln -sf /usr/local/cuda-11.8/lib64/libcudart.so.11.8 /usr/local/cuda-11.8/lib64/libcudart.so sudo ln -sf /usr/local/cuda-12.2/lib64/libcudart.so.12.2 /usr/local/cuda-12.2/lib64/libcudart.so # 注册到 alternatives sudo update-alternatives --install /usr/local/cuda/lib64/libcudart.so libcudart /usr/local/cuda-11.8/lib64/libcudart.so 118 sudo update-alternatives --install /usr/local/cuda/lib64/libcudart.so libcudart /usr/local/cuda-12.2/lib64/libcudart.so 122 sudo update-alternatives --config libcudart注意update-alternatives管理的是/usr/local/cuda下的符号链接但LD_LIBRARY_PATH仍需指向具体版本目录。建议在项目根目录下创建.env文件export CUDA_HOME/usr/local/cuda-11.8 export LD_LIBRARY_PATH$CUDA_HOME/lib64:$LD_LIBRARY_PATH然后source .env激活。5.2 CUDA 降级为什么不能直接卸载新版很多人想从 CUDA 12.4 降级到 12.2直接apt remove cuda-toolkit-12-4会导致依赖冲突因为cuda-toolkit-12-2和cuda-toolkit-12-4共享cuda-toolkit-12元包。正确降级流程# 先卸载所有 CUDA 相关包 sudo apt remove --purge ^cuda-.* ^nvidia-.* sudo apt autore
返回列表