第二章:CUDA开发环境搭建
说实话,搭建开发环境这事儿,看着简单,但坑是真不少。我见过太多同学卡在这一步,明明代码写得没问题,结果一跑就报错——八成是环境没配好。今天我就带你一步步把这事儿搞定。
2.1 NVIDIA驱动安装
驱动是GPU和操作系统之间的桥梁。没有它,CUDA根本跑不起来。
第一步:确认你的GPU型号
在终端里敲这个命令:
lspci | grep -i nvidia
或者用更直观的方式:
nvidia-smi # 如果已经装了驱动,这个命令直接看
第二步:下载对应驱动
去NVIDIA官网,找到「驱动程序下载」页面。选你的GPU型号和操作系统。我个人习惯选「生产分支」的驱动,稳定第一。
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
# 写入这两行:
blacklist nouveau
options nouveau modeset=0
第三步:安装驱动
sudo chmod +x NVIDIA-Linux-*.run
sudo ./NVIDIA-Linux-*.run
安装过程中会提示你是否安装32位兼容库——我一般选「是」,因为有些老库需要它。
装完重启,跑一下:
nvidia-smi
看到GPU信息列表,驱动就装好了。
2.2 CUDA Toolkit安装
驱动装好了,接下来装CUDA Toolkit。它包含了编译器、库文件、调试工具等。
选择版本
去NVIDIA官网下载CUDA Toolkit。我建议你选和驱动匹配的版本。怎么看?
nvidia-smi | grep "CUDA Version"
比如显示CUDA Version: 12.2,那你就装12.x系列的Toolkit。
安装方式
我推荐用runfile方式安装,灵活可控:
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
sudo sh cuda_12.2.0_535.54.03_linux.run
安装时注意:
- 不要勾选「Driver」——我们已经装过了
- 勾选「CUDA Toolkit」和「CUDA Samples」
- 安装路径我习惯用默认的
/usr/local/cuda-12.2
/usr/local/cuda 会是一个软链接,指向你刚装的版本。这样切换版本时只需要改软链接就行。
2.3 cuDNN配置
cuDNN是NVIDIA针对深度神经网络的加速库。说白了,就是帮你把卷积、池化这些操作跑得更快。
下载cuDNN
需要注册NVIDIA开发者账号才能下载。选和CUDA版本匹配的cuDNN版本。比如CUDA 12.2,就选cuDNN for CUDA 12.x。
安装步骤
# 解压
tar -xzvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
# 复制文件到CUDA目录
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
# 设置权限
sudo chmod a+r /usr/local/cuda/include/cudnn*.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
2.4 环境变量设置
环境变量不配好,系统就找不到CUDA的工具和库。我习惯把配置写在 ~/.bashrc 里:
# 打开配置文件
vim ~/.bashrc
# 在文件末尾添加:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
# 保存后生效
source ~/.bashrc
为什么这么配?
PATH:让系统能找到nvcc编译器LD_LIBRARY_PATH:让动态链接器能找到CUDA运行时库CUDA_HOME:很多第三方库(比如PyTorch)会读取这个变量
CUDA_HOME 指向的软链接。我一般用:
sudo rm -f /usr/local/cuda
sudo ln -s /usr/local/cuda-12.2 /usr/local/cuda
2.5 验证安装
环境配好了,怎么知道对不对?三步验证法:
第一步:检查驱动
nvidia-smi
看到GPU型号、驱动版本、CUDA版本就对了。
第二步:检查CUDA Toolkit
nvcc --version
会输出CUDA编译器的版本信息。
第三步:编译并运行示例
这是最实在的验证方式:
# 进入示例目录
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
# 编译
sudo make
# 运行
./deviceQuery
如果看到 Result = PASS,恭喜你,环境搭建成功了!
你想想看,环境搭建这事儿,说白了就是「驱动→Toolkit→cuDNN→环境变量→验证」这条链。每一步都走对了,后面写代码就顺了。要是卡住了,别急,回头检查一下哪一步漏了。
嗯,下一章我们就要开始写第一个CUDA程序了。到时候你会觉得,今天搭环境的辛苦都是值得的。