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 调小解决。

相关推荐
惊讶的猫6 分钟前
langchain-agent的基础使用
python·langchian
把我格子衫拿来1 小时前
VTK 体绘制入门到排错:传递函数、采样距离与透明度的关系
python·vtk·可视化·医学影像·体绘制
张张123y7 小时前
后端第一课:输入 URL 后发生了什么?我用手写 Socket 把全链路跑通了
python·websocket·ai·socket·url·后端开发
全栈弄潮儿9 小时前
Python实战第7期:字典与集合
后端·python·编程语言
2603_965148119 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
小虎AI生活9 小时前
ChatGPT for Chrome 扩展升级解读:从「你复制给它」到「替你操作浏览器」(附三步上手流程)
aigc·ai编程
wangruofeng9 小时前
GPT-6.1 辅助我半天完成架构升级:GPT Image 提示词网站 9K+ 图片迁入 Cloudflare R2
aigc·ai编程
xixiaoyunya10 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
把我格子衫拿来10 小时前
Dice 很高就够了吗?分割评价中的 IoU、表面距离与 HD95
python·图像分割·模型评估·医学影像·dice
曲径海盗10 小时前
【Python 学习第 31 天】复习:变量与数据类型 等 3 题
python·学习笔记·编程入门