资讯动态

CUDA环境搭建避坑指南:驱动、Toolkit与cuDNN关系详解

发布时间:2026/10/26 21:40:10 来源:尧图企业网站定制
1. 搞懂 CUDA 和 N 卡驱动到底在装什么很多人第一次接触深度学习环境搭建上来就是一句“CUDA 怎么装”然后照着某篇教程一顿复制粘贴最后nvcc报错、nvidia-smi不认、TensorFlow 找不到 GPU折腾一整天环境还是废的。我踩过这个坑不止一次后来才明白装 CUDA 之前你得先搞清楚自己在装什么、它们之间是什么关系。这一节就把这件事讲透后面所有操作都建立在这个认知之上。1.1 驱动、CUDA Toolkit、cuDNN 三者的真实关系先把三个东西的角色分清楚这是整个环境搭建的地基。N 卡驱动Driver是操作系统和显卡硬件之间的桥梁。没有它系统根本不知道你插了一张显卡。驱动里包含了一个关键组件叫CUDA Driver它提供了运行 CUDA 程序所需的最底层接口。你平时用nvidia-smi看到的驱动版本就是这个东西。CUDA Toolkit是开发工具包里面包含编译器nvcc、各种库cuBLAS、cuFFT 等、头文件、以及调试工具。你写 CUDA C 代码、编译 PyTorch 的自定义算子靠的就是它。nvcc --version查的就是 Toolkit 版本。cuDNN是专门为深度学习优化的加速库全称 CUDA Deep Neural Network library。它建立在 CUDA 之上提供了卷积、池化、归一化等深度学习常用操作的高度优化实现。TensorFlow、PyTorch 这些框架在 GPU 上跑底层调用的就是 cuDNN。它们的关系可以这样理解驱动是地基CUDA Toolkit 是盖在地基上的房子框架cuDNN 是房子里专门为深度学习定制的家具。地基没打好房子盖不起来房子框架不对家具放不进去。这里有个特别容易搞混的点驱动版本和 CUDA Toolkit 版本不是一回事。驱动版本是550.144.03这种CUDA Toolkit 版本是12.4、11.8这种。一个驱动可以支持多个 CUDA Toolkit 版本但有一个上限。比如驱动550.x最高支持到 CUDA 12.4你想装 CUDA 12.6 就得先升级驱动。注意nvidia-smi右上角显示的CUDA Version: 12.4指的是这个驱动最高支持的 CUDA 版本不是你当前安装的 CUDA Toolkit 版本。很多人看到这个就以为自己装了 CUDA 12.4其实根本没装 Toolkit。这是新手最容易误解的地方。1.2 为什么版本匹配是绕不过去的坎深度学习环境搭建 90% 的坑都来自版本不匹配。为什么这么麻烦因为整条链路是层层依赖的TensorFlow/PyTorch → cuDNN → CUDA Toolkit → 驱动 → 显卡硬件每一层都对上一层有版本要求。比如 TensorFlow 2.5.0 官方要求 CUDA 11.2 cuDNN 8.1你如果装了 CUDA 12.x它直接找不到 GPU。PyTorch 稍微好一点因为它会把 CUDA 运行时打包进 wheel 里但驱动版本仍然要满足最低要求。我见过太多人犯这个错显卡是 4060 Ti驱动是新的就随手装了最新的 CUDA 12.6然后 pip 装了个 TensorFlow 2.5.0跑起来发现tf.config.list_physical_devices(GPU)返回空列表一脸懵。问题就出在 TensorFlow 2.5.0 根本不认识 CUDA 12。所以正确的顺序是倒推先确定你要用什么框架的什么版本查官方文档看它要求哪个 CUDA 和 cuDNN再根据 CUDA 版本去确定驱动的最低版本要求最后检查你的显卡是否支持。这个顺序不能反。1.3 不同显卡对 CUDA 版本的支持边界不是所有显卡都能装所有 CUDA 版本这里有个Compute Capability计算能力的概念。每张 N 卡都有一个计算能力版本号CUDA Toolkit 对最低计算能力有要求。显卡系列计算能力支持的 CUDA 版本范围GTX 10 系1080Ti 等6.1CUDA 8.0 - 12.xRTX 20 系2080Ti 等7.5CUDA 10.0 - 12.xRTX 30 系3090 等8.6CUDA 11.1 - 12.xRTX 40 系4060Ti、4090 等8.9CUDA 11.8 - 12.x4060 Ti 的计算能力是 8.9最低要求 CUDA 11.8。如果你硬要装 CUDA 11.6编译时会报unsupported gpu architecture的错误。这一点在选版本时一定要先确认。另外较新的 CUDA 版本会逐步放弃对老架构的支持。比如 CUDA 12.x 已经不再支持计算能力 3.5 和 3.7 的老卡Kepler 架构。所以老显卡用户选版本时要格外小心别盲目追新。2. 装之前必须做的三件准备工作我见过太多人跳过准备工作直接开装结果装到一半发现驱动版本不对、磁盘空间不够、或者旧版本没清干净导致冲突。这一节说的三件事花你十分钟能省你半天。2.1 用 nvidia-smi 摸清当前环境底细第一步永远是先看现状。打开终端Windows 用 CMD 或 PowerShellLinux 用终端输入nvidia-smi正常输出大概长这样----------------------------------------------------------------------------- | NVIDIA-SMI 550.144.03 Driver Version: 550.144.03 CUDA Version: 12.4 | |--------------------------------------------------------------------------- | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | || | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A | | 30% 45C P8 20W / 200W | 500MiB / 12288MiB | 5% Default | ---------------------------------------------------------------------------重点看三个信息Driver Version驱动版本、CUDA Version驱动支持的最高 CUDA 版本、GPU 型号和显存。如果nvidia-smi报command not found或者不是内部或外部命令说明驱动没装或者没装好。Windows 上还有一种情况是驱动装了但环境变量没配nvidia-smi.exe在C:\Windows\System32下正常情况下应该能直接调用。提示Windows 上如果nvidia-smi找不到先确认C:\Windows\System32在 PATH 里。Linux 上如果找不到可能是驱动装在了非标准路径用which nvidia-smi或find / -name nvidia-smi 2/dev/null找一下。2.2 确认驱动版本能撑起你要装的 CUDA拿到驱动版本后对照 NVIDIA 官方的驱动-CUDA 兼容表。这里给几个常用的对应关系驱动版本区间最高支持 CUDA450.x - 460.xCUDA 11.0 - 11.2470.xCUDA 11.4510.x - 520.xCUDA 11.6 - 11.8525.x - 535.xCUDA 12.0 - 12.2545.x - 550.xCUDA 12.3 - 12.4555.x 及以上CUDA 12.5假设你的驱动是550.144.03最高支持 CUDA 12.4。那你想装 CUDA 11.8 完全没问题向下兼容想装 CUDA 12.4 也行但想装 CUDA 12.6 就必须先升级驱动。这里有个经验驱动尽量装新一点但不要装最新的。太新的驱动有时候会有兼容性问题尤其是和某些老框架搭配时。我一般推荐装比最新版落后一到两个小版本的驱动稳定性最好。2.3 清理旧版本避免多版本打架如果你之前装过 CUDA强烈建议先清理干净再装新的。多版本共存虽然理论可行但环境变量一乱nvcc指向哪个版本就说不准了排查起来非常痛苦。Windows 清理步骤控制面板 → 程序和功能卸载所有名字带NVIDIA CUDA Toolkit的项卸载NVIDIA cuDNN如果单独装过手动删除残留目录C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA检查环境变量CUDA_PATH、CUDA_HOME删掉指向旧版本的项检查 PATH 里有没有旧的 CUDA bin 和 libnvvp 路径删掉Linux 清理步骤# 查看已安装的 CUDA 相关包 dpkg -l | grep cuda # 卸载 CUDA Toolkit以 11.8 为例 sudo apt-get --purge remove *cuda* *cublas* *cufft* *cufile* *curand* *cusolver* *cusparse* *npp* *nvjpeg* cuda* nsight* # 清理残留 sudo apt-get autoremove sudo apt-get autoclean # 删除残留目录 sudo rm -rf /usr/local/cuda*注意卸载 CUDA Toolkit 不会卸载驱动这是好事。驱动单独管理除非你要升级驱动否则不用动它。Linux 上卸载驱动用sudo apt-get --purge remove *nvidia*但这个操作有风险可能导致图形界面起不来新手慎用。清理完之后重启一次机器确保所有残留进程和句柄都释放了再开始装新版本。3. Windows 平台完整安装实操Windows 是大多数人的主力开发环境但也是坑最多的。这一节我把 Windows 上装 CUDA 的完整流程拆开讲每一步都说明为什么这么做。3.1 驱动安装优先用官方安装器Windows 上装驱动有两种方式GeForce Experience 自动更新或者去官网下载手动安装。我强烈推荐手动下载安装原因有两个一是 GeForce Experience 经常给你推最新驱动可能和你的 CUDA 版本不匹配二是手动安装可以选择“自定义安装”只装你需要的组件避免装一堆用不上的东西。去 NVIDIA 官网驱动下载页面选择你的显卡型号下载对应的驱动安装包。安装时选择“自定义高级”然后勾选“执行清洁安装”。这个选项会把旧驱动彻底清掉再装新的避免残留冲突。安装过程中有一个组件叫NVIDIA Graphics Driver这个是必须装的。其他的如 GeForce Experience、PhysX 系统软件按需勾选。如果你只做深度学习GeForce Experience 可以不装。装完重启打开 CMD 输入nvidia-smi能看到显卡信息就说明驱动 OK 了。3.2 CUDA Toolkit 安装自定义路径和组件选择去 NVIDIA 官网的 CUDA Toolkit 下载页选择你的系统版本下载对应的安装包。这里有个选择用exe (local)还是exe (network)。推荐用 local因为它是完整离线包装的时候不需要联网速度稳定不会因为网络问题中断。下载完运行安装程序第一步是解压路径默认就行。然后会检测系统兼容性如果提示驱动版本不够说明你驱动太老了先升级驱动。关键步骤在“自定义安装”这里。展开 CUDA 组件你会看到一堆选项CUDA核心组件必装Graphics Driver驱动如果你已经装了更新的驱动这里取消勾选否则会覆盖你的新驱动Other components包括 Nsight 系列调试工具按需勾选我一般只勾CUDA下面的 Runtime、Development、Documentation 三个其他都取消。这样装出来最干净。安装路径默认是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4。建议保持默认路径因为很多框架和脚本会去这个默认路径找 CUDA。如果你非要改记住改完之后环境变量也要跟着改。3.3 环境变量配置CUDA_PATH 和 PATH 的正确写法安装程序通常会自动配好环境变量但有时候会漏。装完一定要手动检查一遍。打开“系统属性 → 高级 → 环境变量”检查以下几项系统变量里应该有CUDA_PATH C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4 CUDA_PATH_V12_4 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4PATH 里应该有%CUDA_PATH%\bin %CUDA_PATH%\libnvvp如果缺了手动补上。补完之后一定要重启 CMD因为环境变量是启动时加载的不重启不生效。验证一下nvcc --version正常输出会显示 CUDA 版本信息。如果报nvcc 不是内部或外部命令说明 PATH 没配好回去检查。提示nvcc报错是最高频的问题。90% 的情况是 PATH 没配或者没重启终端。剩下 10% 是安装时没勾 Development 组件导致nvcc.exe根本没装。回去重新运行安装程序勾上 Development 再装一次。3.4 cuDNN 安装复制粘贴也有讲究cuDNN 从 8.x 开始下载的是一个压缩包需要手动把文件复制到 CUDA 目录里。这一步看着简单但复制错了位置照样不生效。去 NVIDIA 开发者网站下载 cuDNN需要注册登录选择和你 CUDA 版本匹配的 cuDNN 版本。比如 CUDA 12.4 就选 cuDNN 8.9.x 或 9.x 对应 CUDA 12 的版本。下载下来是个 zip 包解压后里面有bin、include、lib三个文件夹。把这三个文件夹里的内容分别复制到 CUDA 安装目录对应的文件夹里cudnn/bin/*.dll → C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin\ cudnn/include/*.h → C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\include\ cudnn/lib/x64/*.lib → C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\lib\x64\注意是复制内容不是复制文件夹本身。很多人直接把bin文件夹拖进去结果变成CUDA\v12.4\bin\bin\这样是找不到的。复制完之后验证一下 cuDNN 是否生效。可以跑一个简单的测试程序或者直接用框架测试。最直接的方法是检查文件是否存在dir C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin\cudnn*.dll能看到一堆cudnn64_8.dll之类的文件就说明复制成功了。4. Linux 与 WSL2 环境安装要点Linux 是生产环境的主流WSL2 则是 Windows 用户跑 Linux 环境最方便的方案。这两个环境的安装逻辑和 Windows 不太一样单独拎出来讲。4.1 Linux 上用 runfile 还是 apt 安装Linux 上装 CUDA 有几种方式apt 包管理、runfile 安装包、conda 安装。各有优劣。apt 安装最省事一条命令搞定但版本受限于源里提供的版本而且容易和系统其他包产生依赖冲突。适合对版本要求不严格、追求省事的场景。runfile 安装最灵活可以精确控制版本和安装路径不依赖系统包管理。缺点是卸载麻烦需要手动清理。适合需要特定 CUDA 版本、或者多版本共存的场景。conda 安装最干净完全隔离在 conda 环境里不污染系统。缺点是某些框架对 conda 装的 CUDA 支持不好而且 conda 源的 CUDA 版本更新滞后。适合用 conda 管理所有依赖的场景。我个人的选择是生产服务器用 runfile本地开发用 conda。runfile 装一次管很久conda 装方便切换。runfile 安装的关键步骤# 下载 runfile以 CUDA 12.4 为例 wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run # 赋予执行权限 chmod x cuda_12.4.0_550.54.14_linux.run # 运行安装程序 sudo sh cuda_12.4.0_550.54.14_linux.run安装过程中会问你几个问题是否安装驱动选 No因为驱动你已经装好了这里再装会冲突是否安装 CUDA Toolkit选 Yes安装路径默认/usr/local/cuda-12.4建议保持是否创建符号链接/usr/local/cuda选 Yes方便版本切换装完之后配置环境变量编辑~/.bashrcexport PATH/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda/lib64:$LD_LIBRARY_PATH然后source ~/.bashrc生效。4.2 WSL2 装 CUDA 的特殊之处WSL2 装 CUDA 和纯 Linux 有个本质区别WSL2 不需要在 Linux 里装驱动。驱动是装在 Windows 宿主机的WSL2 通过一个特殊的机制直接调用宿主机的驱动。所以 WSL2 装 CUDA 的步骤是Windows 宿主机装好驱动就是前面 Windows 那节说的WSL2 里只装 CUDA Toolkit不装驱动不要装 Linux 版的 NVIDIA 驱动装了反而会出问题WSL2 里装 CUDA Toolkit 用 apt 最方便# 添加 NVIDIA 的 apt 源 wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update # 安装 CUDA Toolkit sudo apt-get install cuda-toolkit-12-4装完之后nvidia-smi应该能正常显示宿主机的显卡信息。如果显示不了检查 Windows 宿主机驱动是否正常以及 WSL2 版本是否够新wsl --version查看。注意WSL2 里nvidia-smi显示的 CUDA Version 是宿主机驱动支持的版本和你在 WSL2 里装的 CUDA Toolkit 版本可能不一样这是正常的。以nvcc --version为准。4.3 多版本 CUDA 共存的切换技巧有时候你需要在同一台机器上跑不同 CUDA 版本的项目比如一个项目要 CUDA 11.8另一个要 CUDA 12.4。这时候多版本共存就派上用场了。Linux 上多版本共存很简单因为 CUDA 装在/usr/local/cuda-11.8和/usr/local/cuda-12.4两个独立目录通过软链接/usr/local/cuda指向当前使用的版本。切换版本就是改软链接# 切换到 CUDA 11.8 sudo rm -rf /usr/local/cuda sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda # 切换到 CUDA 12.4 sudo rm -rf /usr/local/cuda sudo ln -s /usr/local/cuda-12.4 /usr/local/cuda但这样切换是全局的影响所有终端。更优雅的方式是用环境变量在单个终端里临时切换# 临时用 CUDA 11.8 export PATH/usr/local/cuda-11.8/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH这样只影响当前终端不影响其他终端和系统全局配置。我一般会写几个 alias 放在.bashrc里alias cuda11export PATH/usr/local/cuda-11.8/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH alias cuda12export PATH/usr/local/cuda-12.4/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH需要哪个版本就敲哪个 alias非常方便。Windows 上多版本共存稍微麻烦一点因为环境变量是全局的。但可以通过修改CUDA_PATH和 PATH 来切换或者用批处理脚本在启动时设置。不过 Windows 上多版本共存的需求相对少一般一个版本够用。5. 验证安装与常见报错排查装完了不代表能用必须验证。这一节讲怎么验证以及遇到报错怎么排查。5.1 三步验证法确认环境可用第一步验证驱动nvidia-smi能看到显卡信息、驱动版本、CUDA Version说明驱动 OK。第二步验证 CUDA Toolkitnvcc --version能看到release 12.4之类的信息说明 Toolkit OK。第三步验证 cuDNN 和框架写一个简单的 Python 脚本测试import tensorflow as tf print(TensorFlow version:, tf.__version__) print(GPU available:, tf.config.list_physical_devices(GPU))或者 PyTorchimport torch print(PyTorch version:, torch.__version__) print(CUDA available:, torch.cuda.is_available()) print(CUDA version:, torch.version.cuda) print(GPU name:, torch.cuda.get_device_name(0))如果GPU available返回非空列表或者torch.cuda.is_available()返回 True说明整条链路都通了。5.2 nvcc 找不到的三种原因和对策nvcc 不是内部或外部命令是最高频的报错。原因通常有三种原因一PATH 没配。这是最常见的。检查 PATH 里有没有%CUDA_PATH%\binWindows或/usr/local/cuda/binLinux。没有就加上然后重启终端。原因二没装 Development 组件。CUDA Toolkit 安装时如果只勾了 Runtime是不会装nvcc的。回去重新运行安装程序勾上 Development。原因三装在了非默认路径。如果你改了安装路径环境变量也要跟着改。检查CUDA_PATH是否指向正确的目录。排查顺序先看 PATH再看文件是否存在最后看安装组件。5.3 框架检测不到 GPU 的排查思路框架检测不到 GPU可能的原因比较多按这个顺序排查驱动是否正常nvidia-smi能不能跑CUDA 版本是否匹配框架要求的 CUDA 版本和你装的是否一致cuDNN 是否正确安装文件是否复制到了正确位置框架版本是否支持你的显卡老框架可能不支持新显卡是否装成了 CPU 版本pip install tensorflow默认装的是 CPU 版要装tensorflow-gpu或者指定版本我遇到过一个典型案例用户装了 TensorFlow 2.5.0CUDA 装的是 12.4结果检测不到 GPU。原因是 TensorFlow 2.5.0 只支持 CUDA 11.2版本不匹配。解决办法是降级 CUDA 到 11.2或者升级 TensorFlow 到支持 CUDA 12 的版本。5.4 常见报错速查表报错信息可能原因解决方法nvcc: command not foundPATH 未配置添加 CUDA bin 到 PATHnvidia-smi: command not found驱动未安装安装 NVIDIA 驱动CUDA driver version is insufficient驱动版本过低升级驱动no CUDA-capable device is detected驱动问题或显卡不支持检查驱动和显卡计算能力libcudnn.so not foundcuDNN 未安装或路径不对检查 cuDNN 文件位置和 LD_LIBRARY_PATHunsupported gpu architectureCUDA 版本不支持显卡升级 CUDA 或换显卡CUDA out of memory显存不足减小 batch size 或清理显存这张表建议收藏遇到报错先查表能解决 80% 的问题。6. 版本选型与升级迁移的实战经验环境搭好只是开始后续版本升级、迁移、兼容性处理才是长期要面对的。这一节分享一些实战经验。6.1 如何根据框架反推 CUDA 版本前面说过要倒推这里给一个具体的操作流程。假设你要用 PyTorch先去 PyTorch 官网看它的安装命令。官网会给出几个选项比如pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121cu118就是 CUDA 11.8cu121就是 CUDA 12.1。你选哪个就装对应的 CUDA 版本。TensorFlow 的话去官网看兼容性表格。比如 TensorFlow 2.15 要求 CUDA 12.2 cuDNN 8.9TensorFlow 2.5.0 要求 CUDA 11.2 cuDNN 8.1。确定框架要求的 CUDA 版本后再查这个 CUDA 版本要求的最低驱动版本。比如 CUDA 11.8 要求驱动 450.80.02CUDA 12.4 要求驱动 550.54.14。最后检查你的显卡是否支持这个 CUDA 版本。4060 Ti 支持 CUDA 11.8 及以上所以 CUDA 11.8 和 12.4 都能装。6.2 升级 CUDA 时驱动要不要一起升这个问题取决于目标 CUDA 版本是否超出当前驱动的支持范围。如果当前驱动支持目标 CUDA 版本那不用升驱动直接装新 CUDA 就行。比如驱动 550.x 支持 CUDA 12.4你想从 CUDA 11.8 升到 12.4驱动不用动。如果目标 CUDA 版本超出当前驱动支持范围那就必须先升驱动。比如驱动 525.x 最高支持 CUDA 12.0你想装 CUDA 12.4就得先把驱动升到 550.x。升级驱动的顺序是先升驱动重启再装新 CUDA。不要反过来否则新 CUDA 装完发现驱动不支持还得重来。提示升级驱动有风险尤其是 Linux 上可能导致图形界面起不来。升级前建议先确认当前驱动版本记下来万一出问题可以回滚。Linux 上可以用sudo apt-get install nvidia-driver-550这种命令装指定版本驱动。6.3 迁移到新机器时的环境复刻清单换机器或者迁移环境时最怕的就是新机器上装出来的环境和旧机器不一致。我一般会维护一个环境清单记录以下信息操作系统版本显卡型号驱动版本CUDA Toolkit 版本cuDNN 版本Python 版本框架版本TensorFlow/PyTorch关键依赖包版本迁移时按这个清单逐项核对安装。可以用pip freeze requirements.txt导出 Python 依赖但 CUDA 和驱动这些系统级的东西没法导出只能手动记录。我还会写一个简单的验证脚本在新机器上跑一遍确认所有关键组件版本都对import subprocess import torch import tensorflow as tf print( 驱动 ) subprocess.run([nvidia-smi]) print( CUDA ) subprocess.run([nvcc, --version]) print( PyTorch ) print(Version:, torch.__version__) print(CUDA available:, torch.cuda.is_available()) print( TensorFlow ) print(Version:, tf.__version__) print(GPU:, tf.config.list_physical_devices(GPU))这个脚本跑一遍环境是否完整一目了然。6.4 关于 AMD 显卡和其他非 N 卡方案的说明网上偶尔能看到“AMD 显卡完美运行 CUDA”这类说法这里需要澄清一下。CUDA 是 NVIDIA 的专有技术原生只能在 N 卡上运行。AMD 显卡要跑 CUDA 程序需要通过一些转换层如 HIP但兼容性和性能都有损失不是所有 CUDA 程序都能跑。如果你手头是 AMD 显卡做深度学习建议用 ROCm 生态PyTorch 和 TensorFlow 都有 ROCm 版本。但 ROCm 的支持范围比 CUDA 窄很多很多库和工具不支持踩坑概率高。如果预算允许深度学习还是建议用 N 卡省心。至于 SLI 和 CUDA 的关系SLI 是游戏多卡互联技术和 CUDA 计算没关系。CUDA 多卡计算靠的是 NCCL 和框架自身的多卡支持不需要 SLI。这一点很多人搞混以为多卡跑深度学习要开 SLI其实完全不用。7. 我踩过的坑和几条实在建议最后分享几条我这些年踩坑总结出来的经验都是文档里不会写的。第一条装之前先截图记录当前环境。nvidia-smi、nvcc --version、pip list都截个图。万一装崩了至少知道原来是什么样方便回滚。第二条不要迷信最新版本。CUDA 和驱动都不是越新越好。新版本可能有兼容性问题尤其是和老框架搭配时。我一般选比最新版落后一到两个版本的稳定性最好。第三条环境变量改完一定要重启终端。这个坑我踩过无数次改完 PATH 发现不生效折腾半天才想起来没重启终端。Windows 上尤其要注意CMD 和 PowerShell 都要重启。第四条cuDNN 复制文件时用命令行。Windows 上手动拖拽容易拖错层级用xcopy或robocopy命令复制更可靠xcopy /y /e cudnn\bin\* C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin\第五条多版本共存时用 alias 切换。前面说过的 alias 方法比改软链接方便而且不影响其他终端。第六条遇到问题先查官方文档。NVIDIA 的官方文档其实写得很详细包括兼容性表格、安装指南、已知问题。很多人遇到问题就到处搜博客其实官方文档里都有。我一般先查官方文档再查社区。第七条WSL2 里不要装 Linux 驱动。这个坑很隐蔽装了之后nvidia-smi会报错而且很难排查。记住 WSL2 的驱动是宿主机提供的Linux 里只装 Toolkit。第八条显存不够先降 batch size。CUDA out of memory是最常见的运行时错误90% 的情况是 batch size 太大。先降 batch size再考虑其他优化。环境搭建这件事说难不难说简单也不简单。核心就是搞清楚各个组件的关系按正确的顺序装装完验证。把这套流程走顺了以后换机器、升级版本都是半小时的事。我现在的习惯是每台新机器都按这个流程走一遍基本不会出问题。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑