自定义安装路径来安装多个 CUDA 版本,并通过环境变量切换不同的版本,而不影响系统默认的 CUDA 版本。(cuda11.8与cuda12.2共存)

(该操作尽量不要在公司/课题组服务器上面用sudo更改任何环境变量,不然挨领导和同事骂很正常)

1.运行 sudo sh cuda_11.8.0_520.61.05_linux.run 安装 CUDA 11.8 时,确保安装路径指向自定义目录,
sudo sh cuda_11.8.0_520.61.05_linux.run --silent --toolkit --override --installpath=/usr/local/cuda-11.8
这里
--silent:静默安装
--toolkit:仅安装 CUDA Toolkit,不安装驱动(避免影响已有驱动)
--override:忽略驱动检查
--installpath=/usr/local/cuda-11.8:指定安装路径

2.运行以下命令来列出 /usr/local 目录下的 CUDA 安装路径:ls /usr/local
输出中会列出所有在该目录下的文件夹,包括每个 CUDA 版本,例如:
cuda-12.2
cuda-11.8
cuda-10.2

3.用 update-alternatives 方便地切换 CUDA 版本:
先执行:
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.2 100
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 50
然后切换:
(sudo 不能用)update-alternatives --config cuda
系统会让你选择 CUDA 版本,例如:
There are 2 choices for the alternative cuda (providing /usr/local/cuda).

  Selection    Path                 Priority   Status
------------------------------------------------------------
* 0            /usr/local/cuda-12.2   100       auto mode
  1            /usr/local/cuda-12.2   100       manual mode
  2            /usr/local/cuda-11.8   50        manual mode

Press <enter> to keep the current choice[*], or type selection number:
输入 2 选择 CUDA 11.8。


4. 永久生效,快速全局切换 CUDA 版本:
如果你想方便地切换 CUDA 版本,可以定义一个脚本:
echo 'function switch_cuda() { sudo update-alternatives --config cuda; source ~/.bashrc; }' >> ~/.bashrc
source ~/.bashrc
以后只需要运行 switch_cuda,就可以快速全局切换 CUDA 版本


5.不影响系统的默认版本CUDA12.2环境,用环境变量手动指定 CUDA 11.8路径
方法1.
在要使用 CUDA 11.8 的 Conda 环境中(例如 czy),创建以下文件夹和脚本:
mkdir -p ~/anaconda3/envs/czy/etc/conda/activate.d
mkdir -p ~/anaconda3/envs/czy/etc/conda/deactivate.d
编写激活脚本来设置 CUDA 版本为 11.8
在 activate.d 文件夹中创建一个名为 cuda.sh 的激活脚本:
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/anaconda3/envs/czy/etc/conda/activate.d/cuda.sh
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/anaconda3/envs/czy/etc/conda/activate.d/cuda.sh
这将确保在 czy 环境被激活时,CUDA 11.8 的路径被添加到环境变量中。
在 deactivate.d 文件夹中创建一个名为 cuda.sh 的脚本,内容如下:
echo 'export PATH=/usr/local/cuda-12.2/bin:$PATH' >> ~/anaconda3/envs/czy/etc/conda/deactivate.d/cuda.sh
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH' >> ~/anaconda3/envs/czy/etc/conda/deactivate.d/cuda.sh
这样,每次退出 czy 环境时,CUDA 版本会自动切换回系统默认的 CUDA 12.2。
测试切换效果
conda activate czy
nvcc --version
显示 CUDA 11.8。
conda deactivate
nvcc --version
显示 CUDA 12.2。


方法2.
对于 czy 环境,希望使用 CUDA 11.8
激活 czy 环境:conda activate czy
将 CUDA 11.8 路径添加到该环境的 ~/.bashrc 文件中,修改 ~/.bashrc 或者 ~/.bash_profile 以确保每次激活该环境时会加载特定版本的 CUDA:nano ~/.bashrc
在文件的末尾添加以下内容:
# 设置 CUDA 11.8
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
然后运行:source ~/.bashrc
在 czy 环境中,验证 CUDA 版本:nvcc --version
应该看到 CUDA 11.8 的版本信息。


 

### 如何在 Windows 11 上同时安装和管理多个 CUDA 版本 为了实现多版本 CUDA共存方便切换,以下是详细的说明: #### 多版本 CUDA 安装方法 在 Windows 平台上支持多版本 CUDA安装主要依赖于独立的目录结构以及环境变量的动态调整。每种 CUDA 工具包会被安装不同的文件夹路径中[^3]。 - **安装过程** 需要分别下载不同版本CUDA Toolkit,按照官方指南逐步执行安装操作。确保每次安装时指定自定义路径而非默认位置,这样可以防止覆盖旧版工具链中的重要组件。 ```bash # 假设我们正在设置两个版本CUDA 10.2CUDA 11.7 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\ C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\ ``` #### 环境变量配置策略 成功部署各版本之后,通过修改系统的 PATH 环境变量来控制当前活动的 CUDA 版本。具体做法如下所示: - 创建单独用于存储特定 CUDA 路径的新变量名(例如 `CUDA_PATH_V10_2` 对应 v10.2),将这些新创建的条目加入全局 PATH 中。 ```plaintext Variable Name: CUDA_PATH_V10_2 Value : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp; Variable Name: CUDA_PATH_V11_7 Value : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libnvvp; ``` 随后依据实际需求更改 PATH 条目的顺序或者临时替换掉原有的通用项指向新的目标版本即可生效。 #### 切换机制设计建议 考虑到频繁手动编辑注册表可能带来风险,推荐编写批处理脚本来简化此流程。下面给出一段简单的例子展示如何快速转换至预选好的某个已知可用状态下的开发环境。 ```batch @echo off setlocal enabledelayedexpansion :: Define all possible cuda versions here as array elements. set "versions=(v10.2 v11.7)" for %%i in %versions% do ( set "_path=!PATH!" :: Remove any existing reference to other CUDA paths first. call :remove_from_path "!_path!" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA" :: Then add the desired version's path at front of _path variable. if /I "%%~i"=="v10.2" ( set "_path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin;!_path!" set "_path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp;!_path!" ) else if /I "%%~i"=="v11.7" ( set "_path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin;!_path!" set "_path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libnvvp;!_path!" ) echo Switching to CUDA %%~i... ) endlocal & exit /b :remove_from_path <current-path> <keyword-to-remove> set "__new=%~1" :set_loop_start if defined __new ( for /f "tokens=1,* delims=;" %%a in ("!__new!") do ( if not "%%~a"=="" ( findstr /lic:"%%~a" "%~2">nul || (set "__new=%%~b") && goto :set_loop_start ) ) ) goto :eof ``` 上述脚本实现了自动清理原有 CUDA 相关路径后再添加所请求的具体版本的功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值