Ubuntu 22.04 多版本 CUDA 安装与快速切换(以 CUDA 12.8 与 11.8 为例)
本教程适用于在 Ubuntu 22.04 下安装多个版本的 CUDA(示例:CUDA 12.8 与 CUDA 11.8),并实现一键快速切换 CUDA 环境。
前提条件
- 已安装 NVIDIA 显卡驱动
- 已安装 CUDA(可选)
1. 下载与安装 CUDA
本例默认系统已安装 CUDA 12.8,以下演示如何补充安装 CUDA 11.8。
CUDA下载地址:CUDA Toolkit Archive

1.1 下载安装包(CUDA 11.8)
Ubuntu 22.04 可向下兼容 Ubuntu 20.04 版本 CUDA,因此选择 Linux → x86_64 → Ubuntu → 20.04 → runfile(local)。

直接下载 CUDA 11.8:
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
1.2 安装过程说明
安装向导步骤:
-
输入 accept(接受协议)
-
取消安装显卡驱动(重要)

- 第一项为 NVIDIA Driver(由于已安装显卡驱动,应取消选中:按回车取消)
-
关于 a symbol xxx 的提示选择:no
- 如提示是否再次配置驱动,务必选择 no
安装成功会出现如下提示:
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-11.8/
Please make sure that
- PATH includes /usr/local/cuda-11.8/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-11.8/lib64
...
至此,CUDA 11.8 安装完成。
2. 将 CUDA 注册到 alternatives 管理系统
为了方便多版本切换,将已安装的 CUDA 注册到系统 alternatives:
# 注册 CUDA 11.8
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 118
# 注册 CUDA 12.8(如未注册)
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.8 128
之后可以通过以下命令切换系统级 /usr/local/cuda 链接:
sudo update-alternatives --config cuda
3. 配置环境变量
编辑 .bashrc:
sudo vim ~/.bashrc
在文件末尾加入以下内容(如已存在可跳过或按需调整版本号):
# NVIDIA CUDA Toolkit Environment Variables
# 默认 PATH 指向 /usr/local/cuda(由 alternatives 管理)
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使环境变量生效:
source ~/.bashrc
4. 创建增强版 CUDA 切换脚本
在 /usr/local/bin/ 下创建切换脚本,支持直接传版本号或交互选择。
sudo vim /usr/local/bin/cuda_switch
写入以下内容:
#!/bin/bash
# ============================================
# CUDA 多版本切换增强脚本
# ============================================
# 扫描系统中所有 /usr/local/cuda-* 目录
CUDA_DIRS=($(ls -d /usr/local/cuda-* 2>/dev/null | sort))
if [ ${#CUDA_DIRS[@]} -eq 0 ]; then
echo "❌ 没有找到 /usr/local/cuda-* 目录"
return 1
fi
# 如果传了参数,直接切换
if [ -n "$1" ]; then
VERSION="$1"
SELECTED_CUDA="/usr/local/cuda-$VERSION"
if [ ! -d "$SELECTED_CUDA" ]; then
echo "❌ CUDA $VERSION 未找到!"
return 1
fi
else
# 显示版本列表
echo "可用 CUDA 版本:"
for i in "${!CUDA_DIRS[@]}"; do
VERSION=$(basename "${CUDA_DIRS[$i]}" | sed 's/cuda-//')
echo " [$i] $VERSION"
done
# 用户选择版本
read -p "请选择要切换的版本编号: " idx
if ! [[ "$idx" =~ ^[0-9]+$ ]] || [ "$idx" -lt 0 ] || [ "$idx" -ge ${#CUDA_DIRS[@]} ]; then
echo "❌ 无效选择"
return 1
fi
SELECTED_CUDA="${CUDA_DIRS[$idx]}"
VERSION=$(basename "$SELECTED_CUDA" | sed 's/cuda-//')
fi
echo "🔄 切换到 CUDA $VERSION ..."
# 修改 /usr/local/cuda 软链接
sudo rm -f /usr/local/cuda
sudo ln -s "$SELECTED_CUDA" /usr/local/cuda
# 修改 PATH
export PATH="$SELECTED_CUDA/bin${PATH:+:${PATH}}"
# 修改 LD_LIBRARY_PATH
export LD_LIBRARY_PATH="$SELECTED_CUDA/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
# 显示 nvcc 版本
echo "✅ nvcc version:"
nvcc -V
# 尝试显示 cuDNN 版本
if [ -f "$SELECTED_CUDA/include/cudnn_version.h" ]; then
echo "✅ cuDNN version:"
grep CUDNN_MAJOR "$SELECTED_CUDA/include/cudnn_version.h" -A 2
else
echo "⚠️ cuDNN 未安装或找不到 cudnn_version.h"
fi
echo "🎉 CUDA 切换完成!"
赋予可执行权限:
sudo chmod +x /usr/local/bin/cuda_switch
5. CUDA 版本快速切换方法
5.1 交互选择
source /usr/local/bin/cuda_switch
然后根据提示选择要切换的版本编号。
5.2 直接传版本号
source /usr/local/bin/cuda_switch 11.8
source /usr/local/bin/cuda_switch 12.8
可选:添加 alias 到 ~/.bashrc:
alias cuda_switch="source /usr/local/bin/cuda_switch"
以后直接执行 cuda_switch 即可。
6. 验证当前 CUDA 版本
切换后使用:
nvcc -V
以及查看 cuDNN 版本(如果已安装):
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
如果显示对应版本号,则切换成功。
原创
Ubuntu 22.04 安装多版本 CUDA (附快速切换)
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
赞赏支持
如果觉得文章对你有帮助,可以请作者喝杯咖啡 ☕
评论交流
欢迎留下你的想法