2、CUDA开发环境搭建:从零开始,让你的GPU跑起来
说实话,搭建CUDA开发环境这件事,看着步骤多,其实没那么复杂。我当年第一次搞的时候,也踩过不少坑——装完驱动发现版本不对,配好环境变量结果nvcc找不到,折腾了一下午。今天我把这些经验都整理出来,你照着做,半小时内应该能搞定。
2.1 NVIDIA驱动安装:GPU的“操作系统”
驱动是GPU和操作系统之间的桥梁。没有它,你的显卡就是个摆设。
第一步:确认你的显卡型号
在终端里运行:
lspci | grep -i nvidia
或者Windows下打开设备管理器,查看显示适配器。我建议你记下型号,比如“GeForce RTX 3090”或“Tesla T4”,后面选驱动版本要用。
第二步:下载对应驱动
去NVIDIA官网(www.nvidia.com/drivers)选择你的显卡型号和操作系统。我个人习惯选“Game Ready Driver”或“Studio Driver”,其实对CUDA开发来说区别不大。
第三步:安装驱动
Linux下推荐用runfile安装:
chmod +x NVIDIA-Linux-*.run
sudo ./NVIDIA-Linux-*.run
Windows下直接双击exe,一路下一步就行。安装完成后重启系统。
验证驱动是否成功:
nvidia-smi
如果能看到GPU信息、驱动版本、CUDA版本号,说明驱动装好了。嗯,这里要注意:nvidia-smi显示的CUDA版本是驱动支持的最高版本,不是你实际安装的CUDA Toolkit版本。
2.2 CUDA Toolkit安装:核心开发工具包
CUDA Toolkit包含了编译器(nvcc)、运行时库、开发工具等。说白了,你写CUDA代码需要的一切都在这里。
下载与安装
我建议去NVIDIA官网下载cuda_*.run(Linux)或cuda_*.exe(Windows)。安装时注意:
- Linux下用runfile安装,可以自定义安装路径。我习惯装到
/usr/local/cuda-12.0,然后创建软链接/usr/local/cuda指向它,方便切换版本。 - Windows下默认路径是
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0,建议别改。
export CUDA_HOME=/usr/local/cuda-12.0,需要切换时改一下这个变量就行。
2.3 cuDNN配置:深度学习加速库
cuDNN是NVIDIA针对深度学习优化的库。如果你只做通用GPU计算,可以不装。但做深度学习的话,它是必需品。
安装步骤:
- 去NVIDIA开发者网站下载cuDNN(需要注册账号)。选择与你的CUDA版本匹配的cuDNN版本。
- 解压后,把文件复制到CUDA Toolkit目录下:
# Linux示例
tar -xzvf cudnn-linux-x86_64-8.9.0.131_cuda12-archive.tar.xz
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 /usr/local/cuda/lib64/libcudnn*
Windows下类似,把bin/、include/、lib/目录下的文件复制到CUDA安装目录对应的文件夹里。
2.4 环境变量设置:让系统找到CUDA
装完CUDA Toolkit后,系统还不知道它在哪里。你需要告诉系统:
Linux(~/.bashrc或~/.zshrc):
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
然后运行source ~/.bashrc使其生效。
Windows(系统环境变量):
- 添加
CUDA_PATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0 - 在
Path中添加:%CUDA_PATH%\bin - 添加
CUDA_LIB_PATH:%CUDA_PATH%\lib\x64
export CUDA_HOME=/usr/local/cuda-12.0,需要切换时改一下这个变量,然后重新source。这样不会污染系统。
2.5 验证安装:确认一切就绪
装完别急着写代码,先验证一下环境是否正常。
验证1:nvcc --version
nvcc --version
如果看到类似Cuda compilation tools, release 12.0, V12.0.76的输出,说明编译器装好了。
验证2:deviceQuery
CUDA Toolkit自带了一个示例程序,可以查询GPU信息:
# 找到示例代码目录
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
# 编译
make
# 运行
./deviceQuery
如果输出中能看到你的GPU型号、计算能力(Compute Capability)、显存大小等信息,说明CUDA环境完全正常。
验证3:编译一个简单的CUDA程序
写一个test.cu文件:
#include <stdio.h>
__global__ void hello() {
printf("Hello from GPU!\n");
}
int main() {
hello<<<1, 1>>>();
cudaDeviceSynchronize();
return 0;
}
编译运行:
nvcc test.cu -o test
./test
如果看到“Hello from GPU!”,恭喜你,环境搭建成功了!
- 驱动版本必须≥CUDA Toolkit要求的最低版本
- cuDNN版本必须与CUDA版本匹配
- 环境变量设置后记得source或重启终端
- 用deviceQuery做最终验证,确保GPU能被CUDA识别
嗯,环境搭建这部分就这些。我当年第一次配环境时,卡在cuDNN版本不匹配上,折腾了俩小时。后来学乖了,每次装之前先看release notes。你按这个流程走,应该不会出大问题。