0 前言
CUDA(统一计算设备架构)是NVIDIA推出的通用并行计算平台,允许开发者使用C/C++等高级语言对GPU进行编程。代码经CUDA编译器转译后,即可在NVIDIA GPU上高效运行。当前大火的神经网络模型训练,正是CUDA最典型的应用场景之一。
1. 前提条件
1.1 实验环境
开始前,先介绍本次实验的环境配置,方便大家对照参考,避免因环境不一致而踩坑。
- Windows 11 操作系统
- CUDA 版本:12.6
- WSL2 (Windows Subsystem for Linux 2)
- Ubuntu 22.04 发行版
1.1.1 查看显卡驱动支持的CUDA版本
安装CUDA的第一步,是确认NVIDIA显卡驱动支持哪个CUDA版本。操作很简单:按下Win + R,输入cmd打开命令行终端,然后执行nvidia-smi命令。输出信息中会明确显示当前驱动能兼容的CUDA最高版本。
从上图可以看出,这里的CUDA Version显示为12.6。这意味着,之后安装的CUDA工具包版本必须不高于12.6。例如,如果系统显示CUDA Version是11.7,但你想安装12.2,就必须先升级显卡驱动才行。
1.1.2 通过NVIDIA控制面板确认版本
除了命令行,通过图形界面也能确认版本信息。打开NVIDIA控制面板,依次点击“帮助” -> “系统信息” -> “组件”,即可看到当前驱动的详细版本号。
从图中可以看到,这台机器支持NVIDIA CUDA 12.6.41版本的驱动。两个地方都确认一下,信息会更准确。
1.1.3 在Windows下安装WSL2子系统
WSL2是运行Linux环境的基石,官方文档提供了非常详细的步骤:
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
需要提醒一点:整个操作过程中,请务必以管理员身份打开命令行终端,这样才能获得足够的执行权限。另外,在安装后续的Linux内核更新包之前,最好先重启一下电脑。
1.1.3.1 启用适用于Linux的Windows子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
1.1.3.2 启用虚拟机功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
1.1.3.3 安装Linux内核更新包
首先,下载WSL2 Linux内核更新包:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
下载完成后,双击安装即可。
1.1.3.4 将WSL2设置为默认版本
wsl --set-default-version 2
现在主流的用法都是基于WSL2,因为它拥有完整的Linux内核,功能更强大。
1.2 安装版本
本次安装会用到以下两个核心组件:
- CUDA 12.2
- CUDNN v8.9.6
1.3 CUDA 下载
CUDA的安装包可以从NVIDIA官方存档中获取:
https://developer.nvidia.com/cuda-toolkit-archive
本教程选用CUDA 12.2.2版本。进入页面后,需要根据环境依次进行选择:Linux -> x86_64 -> WSL-Ubuntu -> 2.0 -> runfile(local)。
最后,在Ubuntu终端中执行以下命令进行下载:
wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run
下载成功后,你会得到这样一个文件:cuda_12.2.2_535.104.05_linux.run
1.4 CUDNN 下载
CUDNN的版本需要与CUDA保持一致。这里有个小细节:下载CUDNN需要先登录NVIDIA账号,如果没有的话,花几分钟注册一个即可。
下载地址在此:
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse51b
下载后得到的文件是:cudnn-linux-x86_64-8.9.6.50_cuda12-archive.tar.xz
现在,安装包已准备就绪,下一步就是安装了。
2. CUDA和CUDNN安装
2.1 CUDA 安装与验证
2.1.1 安装
首先,运行安装脚本:
sudo sh cuda_12.2.2_535.104.05_linux.run
输入accept接受协议。在后续的选择界面中,按空格键可以勾选或取消选项(带X表示选中)。如果之前安装过其他版本且没卸载干净,这里需要把旧版本也勾选上,否则直接选择Install即可。
接下来等待安装完成。安装成功后,还需要配置环境变量。编辑~/.bashrc文件:
vim ~/.bashrc
在文件末尾添加以下两行:
export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
编辑时,按i进入插入模式,编辑完成后按ESC,再输入:wq保存退出。
小技巧:可以用cd /usr/local/和ls命令来确认cuda目录的路径。
2.1.2 验证
让环境变量生效:
source ~/.bashrc
然后输入nvcc -V。如果能正常显示CUDA的版本信息,就说明安装成功了。
2.2 CUDNN 安装与验证
2.2.1 安装
首先,解压缩下载好的安装包:
tar -xvf cudnn-linux-x86_64-8.9.6.50_cuda12-archive.tar.xz
进入解压后的目录:
cd cudnn-linux-x86_64-8.9.6.50_cuda12-archive/
将相关的头文件和动态库复制到CUDA的安装目录下:
sudo cp ./include/cudnn*.h /usr/local/cuda-12.2/include sudo cp -P lib/libcudnn* /usr/local/cuda-12.2/lib64
最后,为这些文件赋予读取权限,让系统可以正常调用它们:
sudo chmod a+r /usr/local/cuda-12.2/include/cudnn*.h sudo chmod a+r /usr/local/cuda-12.2/lib64/libcudnn*
2.2.2 验证
执行以下命令,查看CUDNN的版本号:
cat /usr/local/cuda-12.2/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
如果能返回类似图中的版本信息,就说明CUDNN也安装成功了。
3. CUDA和CUDNN卸载
如果在安装过程中遇到问题,或者想更换版本,了解如何干净地卸载也很重要。
3.1 使用Ubuntu的卸载工具卸载
3.1.1 CUDA与CUDNN卸载
首先,通过apt移除CUDA相关包:
sudo apt remove cuda -y
sudo apt autoremove -y
sudo apt remove cuda* -y
然后,手动删除CUDA的安装目录:
cd /usr/local/
sudo rm -r cuda-11.7/
最后,使用dpkg命令检查是否还有残留包:
dpkg -l | grep cuda
如果还有残留,会像下面的例子一样列出。依次用sudo dpkg -P <包名>将它们彻底删除即可。
sudo dpkg -P cuda-repo-wsl-ubuntu-11-7-local sudo dpkg -P cuda-toolkit-11-7
