Ubuntu系统CUDA完整安装指南

在深度学习、高性能计算等领域,CUDA作为NVIDIA推出的并行计算平台,是发挥GPU算力的核心工具。对于Ubuntu用户而言,CUDA的安装过程虽不算复杂,但版本匹配、驱动兼容等问题常让人踩坑。下面以Ubuntu 20.04/22.04为基础,详细讲解CUDA的安装流程,同时梳理高频报错的解决思路。

一、安装前必做:基础检查与准备

CUDA安装的核心前提是"硬件支持+版本匹配",跳过准备步骤直接安装,大概率会导致失败。请务必逐一完成以下检查。

1.1 确认GPU是否支持CUDA

CUDA仅支持NVIDIA显卡,且需为"计算能力≥3.5"的型号(最新CUDA版本对计算能力要求更高,如CUDA 12.x需≥5.2)。

操作步骤

  1. 通过命令查看显卡型号:

    bash 复制代码
    lspci | grep -i nvidia

    输出结果如"NVIDIA Corporation GP104 [GeForce GTX 1080 Ti]"。

  2. NVIDIA官方列表中查询显卡的计算能力,确认是否支持目标CUDA版本。

1.2 匹配Ubuntu与CUDA版本

不同Ubuntu版本对CUDA的支持存在限制,比如Ubuntu 22.04不支持CUDA 11.4及以下版本。下表为常见版本对应关系(更新至2025年5月):

Ubuntu版本 支持的CUDA版本范围 推荐版本
22.04 LTS 11.5 - 12.9 12.4(兼容性最优)
20.04 LTS 11.0 - 12.9 11.8(兼顾老项目与新功能)
18.04 LTS 10.2 - 12.2 11.6(最后一个长期支持版本)

提示:若需适配特定框架(如TensorFlow 2.10需CUDA 11.2),需优先满足框架的CUDA版本要求,再反向匹配Ubuntu系统。

1.3 禁用开源驱动nouveau

Ubuntu默认的nouveau开源驱动会与NVIDIA闭源驱动冲突,导致CUDA安装失败或运行异常,必须提前禁用。

操作步骤

  1. 创建禁用配置文件:

    bash 复制代码
    sudo tee /etc/modprobe.d/blacklist-nouveau.conf << EOF blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 EOF
  2. 更新initramfs并重启:

    bash 复制代码
    sudo update-initramfs -u sudo reboot
  3. 验证禁用结果:重启后执行如下命令,无输出则表示禁用成功。

    bash 复制代码
    lsmod | grep nouveau

1.4 系统更新与依赖安装

确保系统组件最新,同时安装CUDA所需的编译工具和依赖库:

bash 复制代码
​sudo apt update && sudo apt upgrade -y
sudo apt install build-essential gcc g++ make -y

二、两种主流安装方式:Deb包 vs Run文件

NVIDIA官方提供Deb包和Run文件两种安装方式,Deb包适合新手(自动配置源),Run文件适合需要自定义安装路径的场景。以下分别详解。

方式一:Deb包安装

以Ubuntu 22.04安装CUDA 12.4为例,步骤如下:

2.1.1 下载对应Deb包

  1. 访问CUDA Toolkit归档页面,选择"CUDA 12.4.0",系统选择"Linux x86_64 Ubuntu 22.04",安装方式选择"deb (local)"。

  2. 复制页面提供的下载链接,通过wget命令下载(避免浏览器下载中断):

    bash 复制代码
    wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.15-1_amd64.deb

2.1.2 安装并配置软件源

  1. 安装本地Deb包:

    bash 复制代码
    sudo dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.15-1_amd64.deb
  2. 导入GPG公钥(解决"签名无效"问题): 页面会提示公钥文件路径,形如:

    bash 复制代码
    sudo cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/
  3. 更新软件源:

    bash 复制代码
    sudo apt update

2.1.3 安装CUDA Toolkit

执行安装命令,该过程会自动安装匹配的NVIDIA驱动:

bash 复制代码
sudo apt install cuda -y

安装完成后重启系统:

bash 复制代码
sudo reboot

方式二:Run文件安装(自定义需求)

若需指定安装路径或仅安装部分组件,选择Run文件安装。以Ubuntu 20.04安装CUDA 11.8为例:

2.2.1 下载Run文件

在CUDA归档页面选择"CUDA 11.8.0",系统选择"Linux x86_64 Ubuntu 20.04",安装方式选择"runfile (local)",复制下载命令:

bash 复制代码
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

为避免下载中断,可添加-c参数支持断点续传:

bash 复制代码
wget -c https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

2.2.2 执行安装程序

  1. 添加执行权限:

    bash 复制代码
    chmod +x cuda_11.8.0_520.61.05_linux.run
  2. 执行安装(需sudo权限):

    bash 复制代码
    sudo sh cuda_11.8.0_520.61.05_linux.run
  3. 安装界面操作: 同意协议:输入"accept"并回车。

  4. 组件选择:若已单独安装过NVIDIA驱动,取消勾选"Driver";保留"CUDA Toolkit 11.8"及相关组件。

  5. 指定路径:默认安装在/usr/local/cuda-11.8,如需自定义路径,在"Options"中修改。

  6. 确认安装:选择"Install"等待完成。

三、环境变量配置:让系统识别CUDA

安装完成后,需配置环境变量才能让系统调用CUDA工具(如nvcc编译器)。根据所使用的Shell(bash或zsh)选择配置文件。

3.1 bash用户(默认)

  1. 编辑~/.bashrc文件:

    bash 复制代码
    nano ~/.bashrc
  2. 在文件末尾添加以下内容(将"12.4"替换为实际安装的CUDA版本):

    bash 复制代码
    export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  3. 保存并生效配置:

    bash 复制代码
    source ~/.bashrc

3.2 zsh用户(如使用oh-my-zsh)

编辑~/.zshrc文件并生效:

bash 复制代码
nano ~/.zshrc

(添加同上环境变量)

bash 复制代码
source ~/.zshrc

3.3 多版本CUDA切换

若系统中安装多个CUDA版本(如11.8和12.4),可通过update-alternatives工具管理默认版本:

  1. 注册版本到系统:

    bash 复制代码
    sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 1 sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.4 2

    (数字2表示优先级,越大越优先)

  2. 切换默认版本:

    bash 复制代码
    sudo update-alternatives --config cuda

    根据提示输入对应编号即可。

四、安装验证:确认CUDA可用

通过以下4步验证,确保CUDA驱动、工具包、运行时均正常工作。

4.1 验证NVIDIA驱动

执行命令查看驱动版本和支持的CUDA版本:

bash 复制代码
nvidia-smi

输出结果中"Driver Version"为驱动版本,"CUDA Version"为驱动支持的最高CUDA版本(如550.54.15对应CUDA 12.4)。

4.2 验证CUDA编译器

查看nvcc版本,确认环境变量配置生效:

bash 复制代码
nvcc -V

若输出"nvcc: NVIDIA (R) Cuda compiler driver"及对应版本信息,说明编译器可用。

4.3 运行CUDA示例程序

通过官方示例验证CUDA运行时是否正常:

  1. 复制示例代码到本地目录:

    bash 复制代码
    cp -r /usr/local/cuda-12.4/samples ~/cuda-samples
  2. 编译设备查询程序:

    bash 复制代码
    cd ~/cuda-samples/1_Utilities/deviceQuery make
  3. 运行程序:

    bash 复制代码
    ./deviceQuery

若输出"Result = PASS",表示CUDA已完全适配GPU;若为"FAIL",则需检查驱动与CUDA版本匹配性。

4.4 测试带宽性能

运行带宽测试程序验证GPU与内存的数据传输能力:

bash 复制代码
cd ~/cuda-samples/1_Utilities/bandwidthTest make && ./bandwidthTest

输出"Result = PASS"即为正常。

五、高频报错及解决方案(实战总结)

结合大量安装案例,梳理出10类常见报错,涵盖下载、安装、运行全流程,附具体解决步骤。

报错1:CUDA Toolkit下载速度极慢或中断

现象 :浏览器或wget下载时速度低于100KB/s,频繁断开。 原因 :NVIDIA官方服务器在境外,网络链路不稳定。 解决方案:使用国内镜像源,如清华大学开源镜像站:

  1. 访问清华CUDA镜像,找到对应版本的deb包或run文件。

  2. 复制镜像链接,用wget下载:

    bash 复制代码
    wget -c https://mirrors.tuna.tsinghua.edu.cn/nvidia-cuda/ubuntu2204/x86_64/cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.15-1_amd64.deb

报错2:安装时提示"依赖关系不足"

现象 :dpkg安装deb包时出现"Unmet dependencies",如缺少libssl1.1。 原因 :系统缺少CUDA依赖的库文件。 解决方案

  1. 自动修复依赖关系:

    bash 复制代码
    sudo apt --fix-broken install -y
  2. 手动安装缺失的依赖(以libssl1.1为例,Ubuntu 22.04需单独安装):

    bash 复制代码
    wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb

报错3:nvidia-smi命令无输出或"command not found"

现象 :重启后执行nvidia-smi无反应,或提示命令不存在。 原因 :驱动未安装成功,或nouveau驱动未彻底禁用。 解决方案

  1. 重新禁用nouveau(参考1.3节步骤),确保lsmod无输出。

  2. 单独安装驱动(以550版本为例):

    bash 复制代码
    sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update && sudo apt install nvidia-driver-550 -y
  3. 重启后再次验证:

    bash 复制代码
    nvidia-smi

报错4:nvcc -V提示"command not found"

现象 :驱动正常,但无法识别nvcc编译器。 原因 :环境变量配置错误或未生效。 解决方案

  1. 检查环境变量配置是否正确:

    bash 复制代码
    cat ~/.bashrc | grep cuda

    确认路径与实际安装路径一致。

  2. 重新生效配置:

    bash 复制代码
    source ~/.bashrc

    (zsh用户执行source ~/.zshrc)。

  3. 若仍无效,直接指定nvcc路径测试:

    bash 复制代码
    /usr/local/cuda-12.4/bin/nvcc -V

    若能输出则说明环境变量配置问题。

报错5:驱动版本与CUDA版本不匹配

现象 :nvidia-smi显示CUDA Version为12.4,但安装的CUDA是12.5,运行程序时提示"driver version is insufficient for cuda runtime version"。 原因 :驱动版本低于CUDA所需的最低驱动版本。 解决方案

  1. 查询CUDA对应的最低驱动版本(如CUDA 12.5需驱动≥555.42.02)。

  2. 升级驱动至对应版本:

    bash 复制代码
    sudo apt install nvidia-driver-555 -y sudo reboot

报错6:deviceQuery测试提示"no CUDA-capable device is detected"

现象 :nvcc正常,但示例程序无法识别GPU。 原因 :GPU未被系统识别,或BIOS中禁用了GPU。 解决方案

  1. 检查GPU硬件连接(台式机),笔记本需确认未切换至核显模式。

  2. 进入BIOS,在"Security"或"Display"中启用NVIDIA GPU。

  3. 检查系统是否识别GPU:若无输出则可能硬件故障。

    bash 复制代码
    lspci | grep -i nvidia

报错7:安装时"权限被拒绝"

现象 :执行sudo sh run文件时提示"Permission denied"。 原因 :文件无执行权限,或磁盘空间不足。 解决方案

  1. 添加执行权限:

    bash 复制代码
    chmod +x cuda_*.run
  2. 检查根目录空间:

    bash 复制代码
    df -h /

    确保剩余空间≥20GB。

报错8:多版本CUDA切换后环境变量失效

现象 :使用update-alternatives切换版本后,nvcc版本未变化。 原因 :环境变量直接指定了固定版本路径,未使用软链接。 解决方案

  1. 修改环境变量为软链接路径: 将~/.bashrc中的"cuda-12.4"改为"cuda"(软链接路径):

    bash 复制代码
    export PATH=/usr/local/cuda/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  2. 生效配置后重新切换版本:

    bash 复制代码
    sudo update-alternatives --config cuda

注意事项

  • 安装前务必确认GPU兼容性、Ubuntu与CUDA版本对应关系,禁用nouveau是前提。

  • 新手优先选择Deb包安装,减少配置成本;进阶用户可使用Run文件自定义安装。

  • 环境变量配置后需立即生效,多版本管理建议使用update-alternatives工具。

  • 报错时优先查看日志(如/var/log/nvidia-installer.log),根据具体提示定位问题,版本不匹配和环境变量是最常见诱因。

若遇到本文未覆盖的问题,可参考NVIDIA官方安装指南

相关推荐
学历真的很重要2 小时前
PyTorch 零基础入门:从张量到 GPU 加速完全指南
人工智能·pytorch·后端·深度学习·语言模型·职场和发展
q***11652 小时前
在Nginx上配置并开启WebDAV服务的完整指南
java·运维·nginx
Bdygsl2 小时前
Linux小程序(1)—— 简单进度条
linux·运维·服务器
cccyi72 小时前
Linux 序列化技术、自定义协议实现及守护进程
linux·serialization·daemon
adnyting2 小时前
【Linux日新月异(十)】CentOS 7 文件系统结构深度解剖:从根到叶的完整指南
linux·运维·centos
李玮豪Jimmy2 小时前
Day18:二叉树part8(669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树)
java·服务器·算法
大锦终2 小时前
【Linux】高级IO
linux·服务器·网络·c++
xiaoxue..3 小时前
用 Node.js 手动搭建 HTTP 服务器:从零开始的 Web 开发之旅!
服务器·前端·http·node.js
LCG元3 小时前
Linux 下高效开发环境搭建:VSCode Remote + 容器开发
linux