Windows10 下 CUDA 新旧多版本共存

前言

为了运行一个 Tensorflow1.6.0 的项目,CPU 跑了三个多小时才完成一个 epoch,还得用 GPU。但这个版本的 TF 只能在 10 以下的 CUDA 平台,但是以前的 Pytorch 也要继续啊。所以需要在本地 Windows 下安装多个版本 CUDA,其实有两种方式让 CUDA 共存。一种是英伟达的工具包安装,还一种是 CUDA 的动态链接库通过 conda 安装。

由于是 Windows,配置 CUDA 多版本环境变量可能还会出现 "此环境变量太大,此对话框允许将值设置为最长 2047 个字符" 和安装后运行项目 "If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info" 等报错,接下来就开始一一介绍了。

安装

动态链接库方式

相比英伟达官方提供的 CUDA Toolkit,这种方式显得特别轻便。因为前者是一个完整的工具安装包,其中还提供了英伟达驱动程序(可以不勾选)和开发 CUDA 程序的工具。而对于使用深度学习框架的话,训练使用 GPU 确实只需要使用 CUDA 的动态链接库就可以,而且只需要用 conda 安装就可以。

创建环境并激活

这里还是用 conda 创建一个新环境专门用于一个版本的 CUDA,要几个就创建几个,然后激活并进入,当然也要看看当前 conda 支持哪些 cuda 和 cudnn。

ini 复制代码
conda create -n tensorflow-cu python=3.6
conda activate tensorflow-cu

查看支持的 cuda

sql 复制代码
conda search cudatoolkit --info

查看支持的 cudnn

安装 cuda 和 cudnn

ini 复制代码
conda install cudatoolkit=9.01
conda install cudnn=7.1.4

工具包方式

这种方法就是先明确自己需要安装的版本,然后去英伟达官网下载安装包。我上面也有文章介绍,不过在以前基础上再加一低版本,需要注意的就是不要勾选驱动程序,然后切换版本要配置环境变量。

流程安装

切记只勾选 CUDA,切记

重新选择位置

安装完毕后,他会自动在环境变量里新增 CUDA_PATH_V9_0 和 NVCUDASAMPLES9_0_ROOT,并且 CUDA_PATH 和 NVCUDASAMPLES 也会替换成最后安装的版本,但当前依然还是之前的 CUDA11,这个时候还要去 Path 里设置一下。

要让版本切换到 v9,需要手动添加 CUDA9 的 development 下 bin 和 libnvvp,并放 v11 前面,但是保存时报 "此环境变量太大"。这个是因为 Patch 变量的值只有 2047 字符大小,解决方法可以修改注册表,在 Path 里删除没用的环境变量和用外边的变量做一个引入。就是 bin 和 libvvp 都是 CUDA9 下,只需要引入这个就可以节省更多字符占用了。

perl 复制代码
%CUDA_PATH_V11_4%\bin
%CUDA_PATH_V11_4%\libnvvp

虽然可以保存了,但是想切换 CUDA 版本要再次打开 Path,发现这个弹窗变成了一行,而不是像之前那样按变量展开。这是因为刚刚为了让 V9 版本在前面,我把他顶到了最上面,而最顶上如果有变量方式的引入,Path 就会变成一行,我们只需要把一个其他绝对位置的变量放在顶部就可以解决了。

其他

当切换后安装 tensorflow-gpu 开始训练时,出现 "Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info",因为当前显卡 GTX 750Ti,显存太小,可以将批次 batch_size 调小解决。

相关推荐
忧郁的橙子.1 天前
26期_01_Pyhton基本语法
python
sunfove1 天前
实战篇:用 Python 徒手实现模拟退火算法解决 TSP 问题
开发语言·python·模拟退火算法
我是菜鸟0713号1 天前
Qt + Python 算法集成的一种低耦合实践:FastAPI 服务化方案
python·qt·fastapi
我是一只小青蛙8881 天前
TraeCNIDE Python开发全流程指南
python
欣然~1 天前
法律案例 PDF 批量转 TXT 工具代码
linux·前端·python
季布,1 天前
本地Windows测试:钉钉群消息/文件传输到Python服务(完整教程)
windows·python·钉钉
zm-v-159304339861 天前
最新AI-Python自然科学领域机器学习与深度学习技术
人工智能·python·机器学习
qwerasda1238521 天前
Mask-RCNN右转交通标志识别训练与优化
python
郝学胜-神的一滴1 天前
何友院士《人工智能发展前沿》全景解读:从理论基石到产业变革
人工智能·python·深度学习·算法·机器学习
划水的code搬运工小李1 天前
自制py功能包解析IMU航迹推算
python·imu·航迹推算