ARTICLE DETAIL

资讯详情

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

CUDA 12.0与cuDNN安装教程:版本兼容性、环境变量配置及多版本共存实战

CUDA 12.0与cuDNN安装教程:版本兼容性、环境变量配置及多版本共存实战 1. 为什么CUDA 12.0和cuDNN的版本匹配这么让人头疼搞深度学习环境搭建的人几乎都经历过这样的场景兴冲冲地拿到一块新显卡准备跑个大模型或者训练个网络结果第一步装CUDA就卡住了。要么是驱动版本对不上要么是cuDNN和CUDA版本不匹配要么是装完了环境变量没配好nvcc -V一敲发现还是旧版本。更让人崩溃的是网上搜到的教程五花八门有的让你用apt装有的让你下runfile有的说用conda一把梭看完反而更迷糊了。我自己从CUDA 8.0时代一路折腾到现在的CUDA 12.x踩过的坑可以说能写一本书。这篇文章就围绕CUDA 12.0以及对应版本cuDNN的安装把整个流程从头到尾讲清楚。不管你是刚入手RTX 40系显卡的新手还是需要给团队批量部署环境的老手这篇内容都能直接拿来用。核心关键词就几个CUDA、cuDNN、安装教程、版本兼容性、环境变量我会把每个环节的“为什么”和“怎么做”都说明白。先说一个基本认知CUDA是NVIDIA的并行计算平台和编程模型cuDNN是建立在CUDA之上的深度神经网络加速库。你可以把CUDA理解成发动机cuDNN理解成变速箱两者必须匹配才能让深度学习框架跑得顺畅。而CUDA 12.0是一个比较大的版本更新引入了对新一代GPU架构的更好支持很多新框架比如PyTorch 2.x、TensorFlow 2.13都开始要求CUDA 12.x。所以搞清楚这套组合怎么装是很有实际价值的。2. 安装前的版本兼容性梳理与方案选型2.1 CUDA 12.0到底支持哪些显卡和驱动在动手之前必须先确认你的硬件和驱动是否满足条件。CUDA 12.0对显卡架构的要求是Kepler及以上但实际上Kepler在12.0里已经被移除了所以实际支持的是Maxwell、Pascal、Volta、Turing、Ampere和Ada Lovelace架构。翻译成人话就是GTX 900系列及以上基本都支持包括大家常用的GTX 1060、RTX 2060、RTX 3060、RTX 4090等等。驱动方面CUDA 12.0要求Linux平台驱动版本不低于525.60.13Windows平台不低于527.41。这里有个很多人搞混的点CUDA Toolkit的版本和显卡驱动版本是两回事。驱动是向下兼容的也就是说你装了更新的驱动可以跑旧版本的CUDA Toolkit。但反过来不行旧驱动跑不了新CUDA。所以如果你打算装CUDA 12.0先把驱动更新到525以上。注意很多人以为装了CUDA Toolkit就等于装了驱动其实不是。CUDA Toolkit的runfile安装包里虽然包含驱动但如果你已经装了更新的驱动安装时记得取消勾选驱动那一项否则可能把驱动降级导致问题。2.2 cuDNN版本怎么和CUDA 12.0对应cuDNN的版本命名规则是cuDNN v8.x.x for CUDA 12.x也就是说每个cuDNN版本会明确标注它适配哪个CUDA大版本。对于CUDA 12.0你需要选择cuDNN 8.7.x或8.8.x系列中标注“for CUDA 12.x”的版本。具体来说cuDNN 8.7.0、8.8.0、8.8.1这几个版本都有对应的CUDA 12.x构建。这里有个容易踩的坑cuDNN的下载页面会列出多个版本每个版本下面又分“for CUDA 11.x”和“for CUDA 12.x”两个包。如果你下错了装上去之后框架会报找不到cudnn库或者版本不匹配的错误。所以下载的时候一定要看清楚文件名里的cuda12字样。cuDNN版本适配CUDA版本适用框架举例cuDNN 8.7.0CUDA 11.x / 12.xPyTorch 1.13, TF 2.11cuDNN 8.8.0CUDA 11.x / 12.xPyTorch 2.0, TF 2.12cuDNN 8.8.1CUDA 11.x / 12.xPyTorch 2.0, TF 2.13cuDNN 8.9.xCUDA 11.x / 12.xPyTorch 2.12.3 安装方式的选择runfile、deb还是condaCUDA在Linux上有三种主流安装方式runfile、deb包和conda。每种方式适合不同场景我分别说一下我的使用体验。runfile方式是最灵活的下载一个.run文件直接执行安装过程中可以自定义安装路径、选择是否安装驱动、是否创建符号链接。缺点是安装完需要手动配置环境变量而且卸载的时候要用cuda-uninstaller。我一般推荐用这种方式因为可控性最强出问题也好排查。deb方式是通过apt包管理器安装优点是自动处理依赖和环境变量缺点是版本更新可能滞后而且多个CUDA版本共存时管理起来比较麻烦。如果你只打算装一个CUDA版本deb方式其实挺省心的。conda方式是最省事的conda install cudatoolkit12.0一行命令搞定但要注意conda安装的CUDA Toolkit不包含完整的开发工具链比如nvcc可能没有或者版本不对。如果你只是跑推理不需要编译自定义算子conda方式够用。但如果要编译CUDA扩展还是得用runfile或deb装完整版。实操心得我个人的习惯是系统层面用runfile装一个完整的CUDA Toolkit作为主力然后在conda环境里用cudatoolkit做版本隔离。这样既能保证编译环境完整又能在不同项目间切换CUDA版本。3. CUDA 12.0详细安装步骤与实操记录3.1 安装前的系统检查与依赖准备在开始安装之前先做几项检查。第一确认系统版本Ubuntu 20.04和22.04是最常见的CentOS 7/8也可以但要注意glibc版本。第二确认gcc版本CUDA 12.0支持的gcc版本是6.x到12.x太新或太旧都不行。第三确认内核头文件是否安装runfile安装需要编译内核模块。# 检查系统版本 lsb_release -a # 检查gcc版本 gcc --version # 检查内核头文件 ls /usr/src/linux-headers-$(uname -r) # 如果没有内核头文件先安装 sudo apt install linux-headers-$(uname -r)如果gcc版本不对可以用update-alternatives切换。比如你系统默认是gcc 13但CUDA 12.0最高支持gcc 12那就需要装一个gcc-12并切换过去。sudo apt install gcc-12 g-12 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12 sudo update-alternatives --install /usr/bin/g g /usr/bin/g-12 12还有一个容易被忽略的点nouveau驱动。Ubuntu默认会加载开源的nouveau驱动它会和NVIDIA驱动冲突。安装CUDA之前需要禁用nouveau。# 创建禁用nouveau的配置文件 sudo bash -c echo blacklist nouveau /etc/modprobe.d/blacklist-nouveau.conf sudo bash -c echo options nouveau modeset0 /etc/modprobe.d/blacklist-nouveau.conf # 更新initramfs sudo update-initramfs -u # 重启 sudo reboot重启后用lsmod | grep nouveau确认没有输出说明禁用成功。3.2 下载与执行CUDA 12.0 runfile安装包到NVIDIA官方开发者页面找到CUDA Toolkit 12.0的下载页选择Linux、x86_64、Ubuntu、20.04、runfile(local)。下载下来的文件名类似cuda_12.0.0_525.60.13_linux.run大小在4GB左右。下载完成后给执行权限并运行chmod x cuda_12.0.0_525.60.13_linux.run sudo ./cuda_12.0.0_525.60.13_linux.run安装过程中会出现几个关键选择第一个是是否安装驱动。如果你已经装了525以上的驱动这里选no。如果没装驱动选yes让安装包帮你装。我一般建议先单独装好驱动再装CUDA这样更清晰。第二个是是否安装CUDA Toolkit这个必须选yes。第三个是安装路径默认是/usr/local/cuda-12.0建议保持默认。第四个是是否创建符号链接/usr/local/cuda选yes。这样以后切换CUDA版本只需要改这个软链接指向就行。安装完成后会显示一个摘要告诉你哪些组件装成功了哪些跳过了。如果看到驱动那一项显示skipped说明你选择了不装驱动这是正常的。3.3 环境变量配置的三种方式与避坑指南环境变量配置是CUDA安装中最容易出问题的环节。很多人装完了发现nvcc -V显示的还是旧版本或者Python里torch.cuda.is_available()返回False八成是环境变量没配对。第一种方式是在~/.bashrc里添加export PATH/usr/local/cuda-12.0/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH export CUDA_HOME/usr/local/cuda-12.0然后source ~/.bashrc生效。这种方式只对当前用户有效适合个人开发机。第二种方式是在/etc/profile.d/下创建一个cuda.sh文件写入同样的内容。这种方式对所有用户生效适合服务器。第三种方式是用update-alternatives管理多版本sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.0 120 sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 118切换时用sudo update-alternatives --config cuda选择版本。注意LD_LIBRARY_PATH这个变量很关键但也很危险。如果你把它设得太宽泛可能会影响系统其他库的加载。建议只把CUDA的lib64目录加进去不要加整个/usr/local目录。另外有些框架会自己管理CUDA库路径这时候LD_LIBRARY_PATH设了反而可能冲突需要根据实际情况调整。配置完成后验证nvcc -V # 应该输出 Cuda compilation tools, release 12.0, V12.0.140 nvidia-smi # 应该显示驱动版本和GPU信息如果nvcc -V显示的不是12.0检查一下PATH里是不是有旧版本的路径在前面。可以用which nvcc看看实际调用的是哪个。4. cuDNN对应版本安装与验证全流程4.1 cuDNN 8.8.1的下载与文件结构说明cuDNN的下载需要注册NVIDIA开发者账号登录后在cuDNN下载页选择“for CUDA 12.x”的版本。以cuDNN 8.8.1为例Linux下有两种包tar包和deb包。我推荐用tar包因为解压后直接复制文件就行不依赖包管理器也不会有版本冲突。下载下来的文件名类似cudnn-linux-x86_64-8.8.1.3_cuda12-archive.tar.xz。解压后目录结构是这样的cudnn-linux-x86_64-8.8.1.3_cuda12-archive/ ├── include/ │ └── cudnn*.h ├── lib/ │ └── libcudnn*.so* └── LICENSEinclude目录下是头文件lib目录下是动态库和静态库。安装的本质就是把这些文件复制到CUDA的对应目录下。4.2 复制文件与权限设置的正确姿势复制操作看起来简单但有几个细节要注意。第一目标目录要对应你实际安装的CUDA版本如果你用的是符号链接/usr/local/cuda复制到那里也行但要注意符号链接指向的版本。第二复制后要确保文件权限正确否则运行时可能报权限错误。# 解压 tar -xvf cudnn-linux-x86_64-8.8.1.3_cuda12-archive.tar.xz # 进入解压目录 cd cudnn-linux-x86_64-8.8.1.3_cuda12-archive # 复制头文件 sudo cp include/cudnn*.h /usr/local/cuda-12.0/include/ # 复制库文件 sudo cp lib/libcudnn* /usr/local/cuda-12.0/lib64/ # 设置权限 sudo chmod ar /usr/local/cuda-12.0/include/cudnn*.h sudo chmod ar /usr/local/cuda-12.0/lib64/libcudnn*复制完成后可以用ls /usr/local/cuda-12.0/lib64/libcudnn*确认文件存在。正常情况下应该看到libcudnn.so、libcudnn.so.8、libcudnn.so.8.8.1以及对应的静态库文件。实操心得如果你之前装过旧版本的cuDNN复制新版本之前最好先把旧的删掉否则可能出现版本混乱。可以用ls -la /usr/local/cuda-12.0/lib64/libcudnn*看看有没有残留的旧版本文件有的话先删掉再复制。4.3 验证cuDNN是否安装成功cuDNN没有像nvcc那样的命令行工具验证方式主要有两种。第一种是检查文件是否存在第二种是编译一个简单的测试程序。文件检查cat /usr/local/cuda-12.0/include/cudnn_version.h | grep CUDNN_MAJOR -A 2应该输出类似#define CUDNN_MAJOR 8 #define CUDNN_MINOR 8 #define CUDNN_PATCHLEVEL 1编译测试程序的方式更可靠。创建一个test_cudnn.c文件#include cudnn.h #include stdio.h int main() { printf(cuDNN version: %d\n, CUDNN_VERSION); return 0; }编译并运行gcc test_cudnn.c -o test_cudnn -I/usr/local/cuda-12.0/include -L/usr/local/cuda-12.0/lib64 -lcudnn ./test_cudnn如果输出了版本号比如8801说明cuDNN安装成功且可以被正常链接。5. 多版本CUDA共存与切换的实战经验5.1 为什么需要多版本共存实际工作中你很可能需要同时维护多个项目有的项目依赖CUDA 11.8有的依赖CUDA 12.0。如果每次切换项目都要重装CUDA那效率太低了。多版本共存的核心思路是每个CUDA版本装在独立的目录下通过修改环境变量或符号链接来切换。CUDA默认安装到/usr/local/cuda-版本号目录这本身就支持多版本共存。你只需要装多个版本然后通过切换/usr/local/cuda这个软链接的指向或者直接改PATH里的路径来切换。5.2 用update-alternatives管理CUDA版本update-alternatives是Linux下管理多版本软件的标准工具。配置好之后切换CUDA版本只需要一条命令。# 注册CUDA 12.0 sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.0 120 # 注册CUDA 11.8 sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 118 # 查看当前配置 sudo update-alternatives --display cuda # 交互式切换 sudo update-alternatives --config cuda执行--config后会列出所有已注册的版本输入对应编号即可切换。切换后/usr/local/cuda会指向你选择的版本环境变量里只要用/usr/local/cuda就能自动跟随。注意update-alternatives切换的是符号链接但已经打开的终端会话里的环境变量不会自动更新。切换后需要重新source ~/.bashrc或者开新终端。另外如果你在conda环境里conda可能会覆盖PATH导致系统CUDA被屏蔽这时候需要检查which nvcc的实际路径。5.3 conda环境中的CUDA版本隔离conda提供了一种更轻量的版本隔离方式。你可以在每个conda环境里安装不同版本的cudatoolkit这样不同环境使用不同的CUDA运行时互不干扰。# 创建环境并安装CUDA 12.0运行时 conda create -n project_a python3.10 conda activate project_a conda install cudatoolkit12.0 cudnn8.8 # 创建另一个环境用CUDA 11.8 conda create -n project_b python3.9 conda activate project_b conda install cudatoolkit11.8 cudnn8.6这种方式的好处是环境隔离彻底坏处是conda安装的cudatoolkit不包含nvcc如果你需要编译CUDA代码还是得依赖系统安装的完整版CUDA Toolkit。我的做法是系统装完整版CUDA作为编译环境conda环境里装cudatoolkit作为运行时两者配合使用。6. 常见报错与排查技巧实录6.1 nvcc版本不对的排查思路这是最高频的问题。你明明装了CUDA 12.0但nvcc -V显示的是11.8或者更旧的版本。排查步骤是这样的第一步which nvcc看实际调用的路径。如果输出是/usr/bin/nvcc而不是/usr/local/cuda/bin/nvcc说明系统里有一个通过apt安装的旧版本nvcc它的优先级更高。第二步检查PATH环境变量。echo $PATH看看/usr/local/cuda-12.0/bin是不是在/usr/bin前面。如果不是调整顺序。第三步如果PATH没问题但还是显示旧版本检查/usr/local/cuda符号链接指向哪里。ls -la /usr/local/cuda看看指向的是不是cuda-12.0。第四步如果以上都没问题可能是shell缓存了命令路径。执行hash -r清除缓存再试。6.2 libcudnn.so找不到的解决方法运行程序时报error while loading shared libraries: libcudnn.so.8: cannot open shared object file这是LD_LIBRARY_PATH没配好或者cuDNN没装对。先确认文件存在ls /usr/local/cuda-12.0/lib64/libcudnn.so*。如果文件不存在说明cuDNN没复制成功重新复制。如果文件存在检查LD_LIBRARY_PATH是否包含/usr/local/cuda-12.0/lib64。还有一个可能你装的是cuDNN for CUDA 11.x的版本库文件名可能不匹配。确认下载的是cuda12版本的cuDNN。# 检查动态库依赖 ldd /usr/local/cuda-12.0/lib64/libcudnn.so.8 # 如果显示not found手动指定路径测试 LD_LIBRARY_PATH/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH python -c import torch; print(torch.cuda.is_available())6.3 驱动版本不匹配的报错处理报错信息类似CUDA driver version is insufficient for CUDA runtime version这说明你的显卡驱动太旧不支持当前CUDA版本。CUDA 12.0需要驱动525以上。解决方法就是更新驱动。可以用apt装sudo apt install nvidia-driver-525或者到NVIDIA官网下载对应的驱动runfile手动安装。更新驱动后重启再用nvidia-smi确认驱动版本。实操心得更新驱动之前最好先记录当前驱动版本万一新驱动有问题可以回滚。另外如果你用的是云服务器或者虚拟机驱动更新可能受限于平台需要联系管理员或者使用平台提供的驱动管理工具。6.4 常见问题速查表报错信息可能原因解决方法nvcc: command not foundPATH未配置添加/usr/local/cuda-12.0/bin到PATHlibcudnn.so.8: cannot openLD_LIBRARY_PATH未配置添加/usr/local/cuda-12.0/lib64到LD_LIBRARY_PATHCUDA driver version is insufficient驱动版本过低更新驱动到525以上no CUDA-capable device is detected驱动未加载或GPU被占用检查nvidia-smi重启或释放GPUundefined reference to cudnnXXX链接时未指定cuDNN库编译时加-lcudnnversion mismatch: libcudnn.so.8 vs 8.7cuDNN版本与编译时不一致统一cuDNN版本重新编译7. 安装后的环境验证与框架适配7.1 用PyTorch验证CUDA和cuDNN是否可用装完CUDA和cuDNN之后最直接的验证方式是用PyTorch。安装对应CUDA 12.0的PyTorch版本pip install torch torchvision --index-url https://download.pytorch.org/whl/cu120然后运行验证脚本import torch print(PyTorch version:, torch.__version__) print(CUDA available:, torch.cuda.is_available()) print(CUDA version:, torch.version.cuda) print(cuDNN version:, torch.backends.cudnn.version()) print(GPU count:, torch.cuda.device_count()) print(GPU name:, torch.cuda.get_device_name(0)) # 简单计算测试 x torch.randn(1000, 1000).cuda() y torch.randn(1000, 1000).cuda() z torch.mm(x, y) print(Matrix multiplication on GPU succeeded:, z.shape)如果torch.cuda.is_available()返回Truetorch.version.cuda显示12.0torch.backends.cudnn.version()显示8801左右说明整套环境配置成功。7.2 TensorFlow的CUDA 12.0适配注意事项TensorFlow对CUDA版本的要求比较严格。TensorFlow 2.13及以上版本才开始支持CUDA 12.0。如果你用的是更早的TF版本需要降级CUDA到11.8。# TensorFlow 2.13 对应CUDA 12.0 pip install tensorflow2.13.0 # 验证 python -c import tensorflow as tf; print(tf.config.list_physical_devices(GPU))如果输出显示GPU设备说明配置成功。如果显示空列表检查CUDA和cuDNN版本是否匹配以及LD_LIBRARY_PATH是否正确。7.3 编译自定义CUDA扩展的完整流程很多项目需要编译自定义CUDA算子这时候需要确保nvcc可用且版本正确。以编译一个简单的CUDA扩展为例# 确认nvcc版本 nvcc -V # 编译一个简单的CUDA程序 cat test_cuda.cu EOF #include stdio.h __global__ void hello() { printf(Hello from GPU thread %d\n, threadIdx.x); } int main() { hello1, 5(); cudaDeviceSynchronize(); return 0; } EOF nvcc test_cuda.cu -o test_cuda ./test_cuda如果输出5行Hello信息说明CUDA编译和运行环境都正常。编译PyTorch扩展时通常用torch.utils.cpp_extension它会自动读取CUDA_HOME环境变量来定位nvcc。注意编译CUDA扩展时gcc版本和nvcc版本的兼容性很重要。CUDA 12.0支持gcc 6-12如果你系统默认gcc是13编译时会报错。解决方法是用update-alternatives切换到gcc-12或者在编译命令中指定CCgcc-12 CXXg-12。8. 虚拟机与WSL环境下的特殊处理8.1 VMware虚拟机中安装CUDA的注意事项在VMware虚拟机里装CUDA最大的问题是GPU直通。默认情况下虚拟机使用的是虚拟显卡不支持CUDA。你需要配置PCIe直通把物理GPU直接分配给虚拟机。配置步骤大致是在VMware的虚拟机设置里添加PCI设备选择你的NVIDIA显卡然后启动虚拟机安装驱动和CUDA。这个过程有几个坑第一宿主机不能再使用这块GPU否则直通会失败。第二直通后虚拟机的显卡驱动需要重新安装。第三不是所有显卡都支持直通消费级显卡在部分平台上可能受限。如果只是学习CUDA编程而不需要真实GPU性能可以用CPU模拟的方式但很多功能会受限。我的建议是如果条件允许尽量用物理机或者云服务器虚拟机方案折腾成本太高。8.2 WSL2环境下CUDA 12.0的安装要点WSL2下安装CUDA和原生Linux有些不同。WSL2不需要在Linux侧安装显卡驱动驱动由Windows侧提供。你只需要在Windows上装好NVIDIA驱动然后在WSL2里装CUDA Toolkit即可。# WSL2里安装CUDA 12.0 wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda_12.0.0_525.60.13_linux.run sudo sh cuda_12.0.0_525.60.13_linux.run安装时注意取消勾选驱动安装因为WSL2不需要在Linux侧装驱动。安装完成后配置环境变量和原生Linux一样。WSL2的一个好处是Windows侧的驱动更新后WSL2里自动就能用新驱动不需要重新配置。但要注意WSL2的CUDA版本不能超过Windows驱动支持的版本。9. 卸载与重装的正确操作9.1 彻底卸载CUDA Toolkit如果你装错了版本需要重装先要卸载干净。runfile安装的CUDA自带卸载工具sudo /usr/local/cuda-12.0/bin/cuda-uninstaller执行后会列出所有已安装的组件选择要卸载的。卸载完成后手动删除残留目录sudo rm -rf /usr/local/cuda-12.0如果是deb方式安装的用apt卸载sudo apt remove --purge cuda-* sudo apt autoremove卸载后记得清理环境变量把~/.bashrc或/etc/profile.d/里相关的PATH和LD_LIBRARY_PATH删掉。9.2 重装时的注意事项重装之前确认旧版本已经卸载干净。检查/usr/local/下有没有残留的cuda目录检查which nvcc是否还有输出。如果还有残留手动删除。重装时如果之前装过驱动安装CUDA时记得取消勾选驱动避免驱动被覆盖。如果驱动也需要重装先卸载旧驱动再装新的。实操心得我一般会在重装之前把环境变量配置文件备份一下重装后对比看看有没有遗漏。另外重装完成后一定要重新开一个终端窗口确保环境变量完全刷新避免旧的环境变量残留导致奇怪的问题。10. 版本选择建议与长期维护策略10.1 不同显卡的CUDA版本推荐RTX 40系显卡Ada Lovelace架构建议用CUDA 12.0及以上因为新架构的特性在旧版本CUDA上可能支持不完整。RTX 30系Ampere用CUDA 11.8或12.0都可以看框架要求。RTX 20系Turing和GTX 16系用CUDA 11.x就够12.0也支持但没必要追新。GTX 10系Pascal建议用CUDA 11.x12.0虽然支持但部分新特性用不上。10.2 如何跟进CUDA版本更新CUDA的更新节奏大概是每年一个大版本中间有若干小版本。跟进策略取决于你的项目需求。如果是生产环境建议锁定一个稳定版本不要频繁升级。如果是开发环境可以跟进新版本但要注意框架兼容性。关注NVIDIA的官方文档和框架的release notes了解新版本的支持情况。比如PyTorch每次发版都会说明支持的CUDA版本跟着框架走一般不会错。10.3 环境配置的文档化与自动化如果你需要给团队批量部署环境建议把安装步骤写成脚本。把下载链接、安装命令、环境变量配置都固化下来新机器一键执行。这样既能保证一致性又能减少人为错误。#!/bin/bash # install_cuda.sh set -e CUDA_VERSION12.0.0 CUDA_RUNFILEcuda_12.0.0_525.60.13_linux.run CUDNN_ARCHIVEcudnn-linux-x86_64-8.8.1.3_cuda12-archive.tar.xz # 下载 wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/${CUDA_RUNFILE} # 安装CUDA chmod x ${CUDA_RUNFILE} sudo ./${CUDA_RUNFILE} --silent --toolkit --no-opengl-libs # 配置环境变量 echo export PATH/usr/local/cuda-12.0/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH ~/.bashrc echo export CUDA_HOME/usr/local/cuda-12.0 ~/.bashrc # 安装cuDNN tar -xvf ${CUDNN_ARCHIVE} sudo cp cudnn-*/include/cudnn*.h /usr/local/cuda-12.0/include/ sudo cp cudnn-*/lib/libcudnn* /usr/local/cuda-12.0/lib64/ sudo chmod ar /usr/local/cuda-12.0/include/cudnn*.h sudo chmod ar /usr/local/cuda-12.0/lib64/libcudnn* echo Installation complete. Please source ~/.bashrc and verify with nvcc -V这种脚本化的方式特别适合需要频繁重装环境的场景比如实验室的公共服务器或者公司的开发机。我在实际使用中发现CUDA环境配置这件事第一次装可能会花半天时间踩坑但把流程跑通之后后面就是十分钟的事。关键是要理解每个步骤在做什么而不是机械地复制命令。遇到报错不要慌按照“检查版本、检查路径、检查权限”这个顺序排查大部分问题都能解决。另外保持环境干净很重要不要在一个系统里堆太多版本的CUDA和cuDNN能用容器就用容器能隔离就隔离这样出问题的概率会小很多。
返回列表