Win11配置多个CUDA环境

本文详细描述了如何在Windows上安装及配置不同版本的CUDA(如CUDA11.7和11.0),包括下载、自定义安装、cuDNN的处理,以及如何调整系统环境变量以切换和验证PyTorch对显卡的支持。
该文章已生成可运行项目,

概述

由于跑项目发现需要配置不同版本的Pytorch,而不同版本的Pytorch又对应不同版本的CUDA,于是有了在Win上装多个CUDA的打算

默认已经在电脑上装了一个CUDA

屏幕截图 2023-09-30 112423

现在开始下载第二个CUDA版本,前面下载的操作和普通安装的几乎一样

安装CUDA

CUDA下载链接

下载自己需要的CUDA版本,以我自己要安装的为例

屏幕截图 2023-09-30 095614

屏幕截图 2023-09-30 095815

下载打开exe文件进行安装,第一步不用管,直接点击确认

屏幕截图 2023-09-30 100402

后面选择自定义安装,只选择安装CUDA

屏幕截图 2023-09-30 100534

其他一路下一步就可以了

安装cuDNN

cuDNN下载链接

PS:下载需要登录一下账号

屏幕截图 2023-09-30 100047

下载下来后,把压缩包解压,得到如下文件

image-20230930100746137

bin,include文件夹中的文件,分别复制到下列地址对应的文件夹下(CUDA的安装地址,以我的地址为例),遇到提示,为全部选择覆盖和替换。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7

需要注意的是,lib文件夹里的所有文件,需要复制到

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib\x64

至此,安装工作就做完了,可以看到电脑上已经有两个CUDA版本了

image-20230930101157014

配置环境

由于CUDA11.7是后面安装的,所以可以看到系统把之前的环境覆盖了

屏幕截图 2023-09-30 103109

以作者在为例,系统变量的PATH里配置一下路径

CUDA_11.7

%CUDA_PATH_V11_7%\lib\x64
%CUDA_PATH_V11_7%\include
%CUDA_PATH_V11_7%\extras\CUPTI\lib64
%CUDA_PATH_V11_7%\bin
%CUDA_PATH_V11_7%\libnvvp

CUDA_11.0

%CUDA_PATH_V11_0%\lib\x64
%CUDA_PATH_V11_0%\include
%CUDA_PATH_V11_0%\extras\CUPTI\lib64
%CUDA_PATH_V11_0%\bin
%CUDA_PATH_V11_0%\libnvvp

配置好如下:

微信截图_20230930105036

配置好之后,默认CUDA版本是11.7的,如果要切换到11.0版本的,只需要把下面的五条整体上移到CUDA_11.7配置的前面

微信截图_20230930105411

验证

测试CUDA11.7

首先验证CUDA_11.7是否配置成功

image-20230930105601201

测试Pytorch是否可以调用显卡

python
import torch
torch.cuda.is_available()
torch.cuda.get_device_name(0)
torch.version.cuda

image-20230930120418607

测试CUDA11.0

先把系统变量里Path里相关路径上移

微信截图_20230930110409

然后重启!重启!重启!

验证CUDA_11.7是否配置成功

image-20230930112425329

测试Pytorch是否可以调用显卡

image-20230930112626663

总结

切换CUDA的时候除了要修改系统变量Path中的路径顺序,一定要记得重启!

本文章已经生成可运行项目
<think>首先,用户的问题是:我想询问是否可以安装两个CUDA版本或如何安装多个CUDA版本。请问如何在同一系统中安装多个CUDA版本我需要参考提供的引用。这些引用是关于在同一系统中安装多个CUDA版本的讨论。-引用[1]:提到在同一个主机上安装不同版本的CUDA,通过修改CUDA_HOME实现切换。但未完成,不要看。-引用[2]:讨论在Linux系统中安装多个CUDA版本,使用符号链接切换。-引用[3]:详细描述多版本CUDA共存架构,通过符号链接管理不同版本。-引用[4]:解释如何查看CUDA版本,以及是否可以安装多个版本。提到nvidia-smi显示支持的版本,nvcc-V显示当前使用的版本。-引用[5]:介绍在Ubuntu中使用docker容器管理不同CUDA版本。系统级指令要求:所有行内数学表达式用$...$,但CUDA安装不涉及数学,所以可能不适用。独立公式单独成段,但如果不需要,就省略。使用中文回答。生成相关问题。在引用的段落末尾自然地添加引用标识。回答结构要清晰、逐步解决问题,保证真实可靠。用户的问题是如何在同一系统中安装多个CUDA版本。参考引用,常见方法是:-在Linux中,通过安装不同版本到不同目录(如/usr/local/cuda-11.8,/usr/local/cuda-12.3),然后使用符号链接(如/usr/local/cuda链接到某个版本)来切换默认版本。通过设置环境变量来控制,例如设置PATH和CUDA_HOME。-另一个方法是使用docker容器(如引用[5]),每个容器有不同的CUDA版本。关键步骤:1.**安装多个版本**:下载不同的CUDAToolkit版本,安装到不同路径。例如:-/usr/local/cuda-11.8-/usr/local/cuda-12.32.**管理版本切换**:-使用符号链接:/usr/local/cuda符号链接指向当前使用的版本。切换时需要更新符号链接。-通过环境变量:设置PATH,LD_LIBRARY_PATH,CUDA_HOME等指向特定版本的目录。3.**在代码中指定路径**:如果使用特定框架(如PyTorch),编译时指定CUDA路径。4.**使用工具**:如update-alternatives在Linux中管理。5.**Docker方法**:在docker容器中隔离环境,每个容器有自己的CUDA版本(引用[5])。引用[3]提到了精确切换方案:符号链接决定默认版本。引用[4]澄清:nvidia-smi显示支持的最高版本(由GPU驱动程序决定),nvcc-V显示当前使用的CUDAToolkit版本。我的回答应该:-确认可以安装多个CUDA版本。-详细步骤在Linux系统中安装和管理多个版本。-提到docker选项作为替代方法。-由于用户提到“同一系统中”,主要讨论非容器方法。结构清晰:1.引言:确认可能性。2.步骤:如何安装、配置管理多个版本。3.示例:包括设置环境变量或更新符号链接。4.在Windows(如果引用中提到):引用[3]提到Win/Linux双平台,但用户没指定操作系统。假设主要Linux,但简要提及。5.结束:生成相关问题。生成相关问题:系统指令要求生成相关问题。回答中引用的段落末尾添加引用标识。自然地添加。例如,当解释使用符号链接时,引用[3]。当解释nvidia-smi和nvcc时,引用[4]。当提到docker时,引用[5]。最终回答用中文。大纲:-**介绍**:是的,可以在同一系统中安装多个CUDA版本。这通过安装工具包到不同目录并使用环境变量或符号链接实现切换[^2][^3]。-**为什么需要**:兼容性问题,旧代码需要特定版本。-**如何安装**:1.下载需要的CUDAToolkit版本。2.安装每个版本到不同路径,例如:-/usr/local/cuda-11.8-/usr/local/cuda-12.33.使用符号链接或环境变量切换默认版本。-**切换方法**:-Linux:创建符号链接指向/usr/local/cuda的目标。通过ln-s命令更新链接。-设置环境变量:exportPATH="/usr/local/cuda-11.8/bin:$PATH",exportLD_LIBRARY_PATH="/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH",exportCUDA_HOME="/usr/local/cuda-11.8"-使用脚本或工具如update-alternatives。-**验证**:运行nvcc-V检查当前版本[^4]。-**Docker替代方法**:使用docker容器管理不同的CUDA环境,避免冲突[^5]。-**注意事项**:确保GPU驱动程序支持所需版本(nvidia-smi显示驱动版本)[^4]。生成相关问题:例如:1.如何安装CUDAToolkit的不同版本?2.在Linux中如何更新CUDA版本的符号链接?3.使用docker管理多个CUDA环境有什么优势?确保语言流畅、专业。</think> ### 是否可以在同一系统中安装多个CUDA版本? 是的,您可以在同一个操作系统中安装多个CUDA版本,这在处理不同版本的深度学习框架或旧代码时非常有用。例如,PyTorch或TensorFlow可能要求特定CUDA版本才能兼容。关键是通过安装CUDA Toolkit到不同目录,并使用环境变量或符号链接来切换活动版本。这不仅避免版本冲突,还提升了开发灵活性。参考[^2][^3][^4],以下我将详细介绍步骤和实现方法,重点基于Linux系统(如Ubuntu),并简要提及Windows。 #### 为什么需要多版本CUDA? - **兼容性问题**:深度学习框架如PyTorch通常依赖特定CUDA版本(如PyTorch最新版可能要求CUDA 12.x,但旧代码需要CUDA 11.x)。如果您运行旧代码时重装CUDA,会很繁琐。 - **版本隔离**:通过多版本共存,您可以按需切换,减少系统干扰。 - **驱动支持**:GPU驱动决定CUDA的最高支持版本(通过`nvidia-smi`查询),但多个CUDA Toolkit可共存于一个驱动下[^4]。例如,nvidia-smi可能显示支持CUDA 12.4,而您同时安装CUDA 11.8和12.3。 #### 如何在Linux系统中安装和管理多个CUDA版本(以Ubuntu为例) 以下步骤基于Linux环境,使用符号链接和环境变量管理版本。原理是:每个CUDA版本安装在独立目录(如`/usr/local/cuda-11.8`),然后通过软链接`/usr/local/cuda`指向当前活动版本,实现无缝切换。 **步骤1:安装多个CUDA Toolkit** - 下载所需CUDA版本:访问 [NVIDIA CUDA Toolkit Archive](https://developer.nvidia.com/cuda-toolkit-archive),下载不同版本的安装包(如`cuda_11.8.run` 和 `cuda_12.3.run`)。 - 安装时指定路径:运行安装脚本时使用`--installpath`参数,避免覆盖现有版本。例如: ```bash # 安装CUDA 11.8到指定目录 sudo sh cuda_11.8.run --installpath=/usr/local/cuda-11.8 # 安装CUDA 12.3到另一个目录 sudo sh cuda_12.3.run --installpath=/usr/local/cuda-12.3 ``` - 在安装过程中,**取消勾选安装NVIDIA驱动**(除非需要更新),并**禁用创建全局符号链接**,以避免自动覆盖[^3]。 - 验证安装:检查每个版本的目录是否创建(如`ls /usr/local/cuda-11.8`)。 **步骤2:设置符号链接管理默认版本** - 创建默认符号链接:首次安装时,手动创建`/usr/local/cuda`链接到其中一个版本。例如,设CUDA 11.8为默认: ```bash sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda ``` - 切换版本:更新符号链接指向目标版本。例如,切换到CUDA 12.3: ```bash sudo rm /usr/local/cuda # 移除旧链接 sudo ln -s /usr/local/cuda-12.3 /usr/local/cuda # 创建新链接 ``` 这样,所有工具(如`nvcc`)会通过`/usr/local/cuda/bin`访问当前版本[^3]。 **步骤3:配置环境变量** - 在Bash配置文件中(如`~/.bashrc`)添加变量,确保应用能识别活动版本。例如: ```bash # 打开配置文件 nano ~/.bashrc # 添加以下内容 export PATH="/usr/local/cuda/bin:$PATH" # 优先使用当前cuda链接的路径 export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH" export CUDA_HOME="/usr/local/cuda" # 关键环境变量,框架依赖于此 ``` 重新加载配置:`source ~/.bashrc`。切换符号链接后,这些变量会自动指向新版本。 - **切换脚本**:创建快捷脚本(如`switch_cuda.sh`)简化切换: ```bash #!/bin/bash if [ "$1" = "11.8" ]; then sudo rm -f /usr/local/cuda sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda echo "Switched to CUDA 11.8" elif [ "$1" = "12.3" ]; then sudo rm -f /usr/local/cuda sudo ln -s /usr/local/cuda-12.3 /usr/local/cuda echo "Switched to CUDA 12.3" fi source ~/.bashrc ``` 使用时运行:`sudo ./switch_cuda.sh 11.8`[^3]。 **步骤4:验证和测试** - 检查当前版本: - `nvcc -V` 或 `nvcc --version`:显示当前CUDA Toolkit版本(对应于`/usr/local/cuda`)。 - `nvidia-smi`:显示GPU驱动支持的最高CUDA版本,独立于Toolkit[^4]。 - 运行测试脚本:使用PyTorch代码加载CUDA库,确认无误。 **注意事项**: - **驱动兼容性**:确保GPU驱动(`nvidia-smi`显示)支持所有安装的CUDA版本。如果驱动太旧,请先升级。 - **路径冲突**:如果`/usr/local/cuda`已被其他工具占用,优先使用环境变量`CUDA_HOME`在框架中覆盖。 - **Windows系统**:安装多版本时,通过环境变量管理。例如: - 设置`CUDA_PATH`(如`CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8`)。 - 更新`PATH`变量指向`%CUDA_PATH%\bin`。 - 推荐使用脚本工具(如Conda或Batch文件)动态切换[^3]。 #### 替代方法:使用Docker管理多版本(推荐用于容器化环境) 如果直接安装太复杂,或者系统环境要求高隔离性,建议使用Docker容器。每个容器独立运行特定CUDA版本,避免路径冲突[^5]。 - 步骤: 1. 安装Docker:`sudo apt-get install docker.io`。 2. 拉取带不同CUDA的镜像:例如: ```bash docker pull nvidia/cuda:11.8-devel # CUDA 11.8容器 docker pull nvidia/cuda:12.3-devel # CUDA 12.3容器 ``` 3. 运行容器:指定环境变量: ```bash # 启动CUDA 11.8容器 docker run --gpus all -it --rm nvidia/cuda:11.8-devel /bin/bash # 在容器内运行nvcc -V ``` - 优点:完全隔离,无需修改主机系统;缺点:需管理多个容器[^5]。 #### 常见问题解答 - **Q:安装多个CUDA会影响性能吗?** A:不会,只有当前使用的版本(通过符号链接或环境变量激活)会影响运行性能。 - **Q:如果版本切换失败怎么办?** A:检查`PATH`和`CUDA_HOME`变量是否正确指向目标目录,使用`echo $PATH`验证。确保没有多个cuda路径冲突。 - **Q:PyTorch如何识别不同CUDA版本?** A:PyTorch编译时会读取`CUDA_HOME`环境变量。安装时指定路径如:`pip install torch --index-url https://download.pytorch.org/whl/cu118`。 通过上述方法,您可以在同一系统灵活管理多个CUDA版本,专注于应用开发。如需具体框架帮助,请提供更多细节。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Otto_1027

蟹蟹你,我会继续努力的~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值