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

相关推荐
l1t2 小时前
DeepSeek辅助利用搬移底层xml实现快速编辑xlsx文件的python程序
xml·开发语言·python·xlsx
大飞记Python2 小时前
部门管理|“编辑部门”功能实现(Django5零基础Web平台)
前端·数据库·python·django
查士丁尼·绵4 小时前
笔试-羊狼过河
python
摸鱼的老谭4 小时前
构建Agent该选Python还是Java ?
java·python·agent
墨风如雪4 小时前
DeepSeek OCR:用'眼睛'阅读长文本,AI记忆新纪元?
aigc
鄃鳕4 小时前
python 字典 列表 类比c++【python】
c++·python
可触的未来,发芽的智生5 小时前
新奇特:黑猫警长的纳米世界,忆阻器与神经网络的智慧
javascript·人工智能·python·神经网络·架构
程序员三藏5 小时前
Jmeter接口测试与压力测试
自动化测试·软件测试·python·测试工具·jmeter·接口测试·压力测试
烛阴5 小时前
用 Python 揭秘 IP 地址背后的地理位置和信息
前端·python
大宝剑1705 小时前
python环境安装
开发语言·python