对于更新显卡驱动或系统后,如何正确安装cuda,以支持GPU计算?
首先,清理旧版 CUDA
sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*"
sudo apt-get autoremove
sudo apt-get autoclean
其次,彻底删除旧的CUDA/NVIDIA仓库配置,以及keyring,并确认 sources.list.d中没有冲突项。
1、彻底删除旧的CUDA/NVIDIA仓库配置和keyring
# 删除相关的source list 文件
sudo rm -f /etc/apt/sources.list.d/cuda*
sudo rm -f /etc/apt/sources.list.d/nvidia*
# 删除相关 keyring
sudo rm -f /usr/share/keyrings/cuda-archive-keyring.gpg
sudo rm -f /usr/share/keyrings/nvidia-archive-keyring.gpg
2、确认sources.list.d中无冲突项
运行以下命令,确认已清理干净。如果还有输出,说明还有旧残留源,需要手动删除。
grep -r "nvidia" /etc/apt/sources.list.d/
再次,重新添加CUDA 官方仓库
# 下载 NVIDIA 官方签名 key
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-archive-keyring.gpg
# 拷贝 keyring 到系统 keyring 目录
sudo mv cuda-archive-keyring.gpg /usr/share/keyrings/
# 添加 CUDA 源,绑定干净的 keyring
echo "deb [signed-by=/usr/share/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" | sudo tee /etc/apt/sources.list.d/cuda.list
再其次,更新并安装CUDA
注意:如果不是最新的NVIDIA驱动版本,最好指定cuda的适用版本(因为系统会自动拉取最新驱动,并安装 nvidia-open
)
sudo apt-get update
# 尽量不直接安装cuda完整版,因为它会直接默认安装最新版驱动的cuda
# sudo apt-get -y install cuda
sudo apt install cuda-toolkit-12-8
ps:需要下载的文件比较大(我这次是4G+),需要一段时间。
最后,进行环境配置和验证
1、配置环境变量
将CUDA路径加入环境变量,在终端运行。
默认安装的目录是 /usr/local/cuda-12.8
echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
2、验证CUDA工具链是否生效。
1)检查nvcc编译器版本
nvcc --version
如果安装正确,会看到类似如下的输出:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93
Build cuda_12.8.r12.8/compiler.35583870_0
2)检查驱动是否可用
nvidia-smi
如果能显示你的GPU和显存信息,即为正常。
3)可以进一步编译一个简单的测试测序,以确认nvcc可用
创建一个test.cu的文件:
#include <stdio.h>
__global__ void helloFromGPU() {
printf("Hello World from GPU!\n");
}
int main() {
helloFromGPU<<<1, 1>>>();
cudaDeviceSynchronize();
return 0;
}
编译并运行该文件:
nvcc test.cu -o test.out
查看test.out,如果看到 “Hello World from GPU!”,说明CUDA工具链已经完全可用。