返回知识库

发布日期:2024年5月

作者:世纪云峰技术团队

分类:AI算力 / 环境配置

阅读时间:约 15 分钟

一、CUDA简介

CUDA(Compute Unified Device Architecture)是NVIDIA推出的并行计算平台和编程模型,允许开发者使用NVIDIA GPU进行通用计算。它是深度学习、科学计算和大规模数据处理的基础。

CUDA生态系统组件:

二、版本兼容性说明

在安装前,请确认各组件版本之间的兼容性:

CUDA版本 驱动版本要求 支持的GPU架构 推荐用途
CUDA 12.x >= 525.60.13 Ampere, Hopper, Ada 新项目首选
CUDA 11.8 >= 450.80.02 Turing, Ampere, Hopper 稳定版本
CUDA 11.3 >= 450.80.02 Pascal, Turing, Ampere 兼容性考虑
重要提示:

三、安装前准备

3.1 检查GPU信息

# 查看GPU型号
lspci | grep -i nvidia

# 查看NVIDIA驱动状态
nvidia-smi

# 查看GPU详细信息
nvidia-smi -q

3.2 系统要求

3.3 安装依赖

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y build-essential dkms

# CentOS/RHEL
sudo yum groupinstall -y "Development Tools"
sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)

四、NVIDIA驱动安装

4.1 禁用Nouveau驱动

# 创建黑名单文件
echo "blacklist nouveau
options nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf

# 更新initramfs
sudo update-initramfs -u

# 重启系统
sudo reboot

4.2 安装官方驱动

方法一:使用包管理器(推荐)

# Ubuntu - 添加graphics-drivers PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
ubuntu-drivers devices  # 查看推荐驱动
sudo ubuntu-drivers autoinstall  # 自动安装推荐驱动

# 或安装特定版本
sudo apt-get install -y nvidia-driver-535

方法二:从NVIDIA官网下载安装

# 下载驱动(以535.104.05为例)
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/535.104.05/NVIDIA-Linux-x86_64-535.104.05.run

# 进入文本模式安装
sudo systemctl isolate multi-user.target
sudo chmod +x NVIDIA-Linux-x86_64-535.104.05.run
sudo ./NVIDIA-Linux-x86_64-535.104.05.run

# 重启图形界面
sudo systemctl start graphical.target

4.3 验证驱动安装

# 检查驱动版本
nvidia-smi

# 预期输出示例
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.104.05             Driver Version: 535.104.05   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA A100 80GB               On  | 00000000:00:04.0 Off |                    0 |
| N/A   35C    P0              45W / 300W |      0MiB / 81920MiB |      0%      Default |
+-----------------------------------------+----------------------+----------------------+

五、CUDA Toolkit安装

5.1 使用runfile安装(推荐)

# 下载CUDA Toolkit 12.2
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

# 安装选项:
# - 取消勾选"Install NVIDIA Driver"(已单独安装)
# - 保持其他默认选项

5.2 使用deb包安装(Ubuntu)

# 添加NVIDIA仓库
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/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 -y cuda-toolkit-12-2

# 安装完成后,添加环境变量
echo 'export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc

5.3 验证CUDA安装

# 检查CUDA版本
nvcc --version

# 编译并运行示例程序
cp -r /usr/local/cuda/samples ~/cuda-samples
cd ~/cuda-samples/1_Utilities/deviceQuery
make
./deviceQuery

# 预期输出末尾显示:Result = PASS

六、cuDNN安装

6.1 下载cuDNN

访问 NVIDIA cuDNN下载页面,下载与CUDA版本匹配的cuDNN库。

6.2 安装cuDNN

# 解压下载的文件
tar -xvf cudnn-linux-x86_64-8.9.5.30_cuda12-archive.tar.xz

# 复制文件到CUDA目录
sudo cp cudnn-linux-x86_64-8.9.5.30_cuda12-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp cudnn-linux-x86_64-8.9.5.30_cuda12-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

# 验证安装
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

七、Python深度学习框架安装

7.1 安装Anaconda/Miniconda

# 下载Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 创建虚拟环境
conda create -n pytorch python=3.10
conda activate pytorch

7.2 安装PyTorch(GPU版本)

# CUDA 12.1版本
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

# 或使用pip
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# 验证PyTorch GPU可用
python -c "import torch; print(f'PyTorch版本: {torch.__version__}'); print(f'CUDA可用: {torch.cuda.is_available()}'); print(f'GPU数量: {torch.cuda.device_count()}')"

7.3 安装TensorFlow(GPU版本)

# TensorFlow 2.x GPU版本
pip install tensorflow

# 验证TensorFlow GPU
python -c "import tensorflow as tf; print(f'TF版本: {tf.__version__}'); print(f'GPU列表: {tf.config.list_physical_devices(\"GPU\")}')"

八、Docker GPU支持

8.1 安装NVIDIA Container Toolkit

# 添加仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
    sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安装
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

8.2 运行GPU容器

# 测试GPU容器
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi

# 运行PyTorch容器
docker run --gpus all -it --rm \
    -v $(pwd):/workspace \
    pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime

九、常见问题排查

9.1 驱动安装问题

问题 原因 解决方案
Nouveau驱动冲突 开源驱动未禁用 按4.1步骤禁用并重启
内核版本不匹配 kernel-devel版本不一致 安装匹配的内核开发包
Secure Boot阻止 UEFI安全启动 BIOS中禁用Secure Boot

9.2 CUDA运行问题

# 问题:CUDA out of memory
# 解决:设置环境变量限制显存
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512

# 问题:CUDA版本不匹配
# 解决:检查LD_LIBRARY_PATH
ldconfig -p | grep cuda

# 问题:多CUDA版本切换
# 解决:使用update-alternatives
sudo update-alternatives --config cuda

十、性能优化建议

技术支持:如遇CUDA安装问题,请联系世纪云峰科技技术支持团队
电话:156-2522-0012 | 邮箱:Roy.zhou@cloud-peak.com.cn

十一、相关文档