Windows下编译带CUDA 10.2的TensorFlow 2.2(Python3.8.2,附编译结果下载)

2023-05-16

官方教程说得基本差不多了,然而在此基础上编译还是会出问题,因此做一些补充。

环境准备

1. Python & Pip

首先是Python需要安装一些包,除了官方说的six、numpy、wheel、keras_applications和keras_preprocessing,还需要setuptools(虽然这是个基础包,但是我习惯用虚拟环境了,忘了装……)。因此安装命令如下:

pip install six numpy wheel setuptools
pip install keras_applications==1.0.6 --no-deps
pip install keras_preprocessing==1.0.5 --no-deps

注意,Python路径中不能出现空格,即Windows下默认安装路径C:\Program Files\Python38会在编译时报错,因此如果装到了这个路径,需要在一个没有空格的目录下创建一个链接(不是快捷方式),用mklink命令。

2. CUDA

这里选的CUDA 10.2,CUDA官网下载安装,没什么好说的。

不过需要注意,TensorFlow 2.2配置时能正确找到CUDA 10.2的路径,编译时却只会去找CUDA_PATH_V10_1这个环境变量,需要手动在系统环境变量里指定这个到CUDA 10.2的路径(跟CUDA自己创建的CUDA_PATH_V10_2一致即可)。

3.Bazel

然后是Bazel,bazel很简单,就一个exe,需要设置环境变量给到Path下,我偷懒直接放到CUDA的bin目录下。

4. MSYS2

再安装MSYS2,同样需要给msys64\usr\bin目录设置环境变量。

装好后再安装一些包,用的是pacman,由于默认源极慢极慢,所以建议国内换清华源。

进到msys64\etc\pacman.d目录下,修改三个mirrolist,分别在各自所有Server行前加一行:

mirrorlist.msys:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

mirrorlist.mingw32:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686

mirrorlist.mingw64:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64

官方教程少提了一个zip包,因此安装命令如下:

pacman -S git patch unzip zip

5. Visual Studio 2019

 然后是VS,下载VS安装器,必须装到C盘默认路径,否则即使设置了BAZEL_VC等环境变量,Bazel也会找不到编译器(弱智一样的bug),如果非VS用户,只需安装除必选组件外的MSVC v142 - VS 2019 C++ x64/x86生成工具(随便一个,我选的最新版本)和Windows 10 SDK(同样随便,我选的最新的)。

编译

配置编译

下载TensorFlow 2.2源码,进入解压后的根目录,执行

python ./configure.py

会出来一个个选项,先设置Python路径,如果上面创建了链接,这里就需要指定,pip路径会根据Python路径选,一般默认即可。

然后是是否启用ROCm,默认否(这是A卡对标N卡CUDA的框架,希望未来能有所发展,别再跟OpenCL一样挂了)。

然后是否启用CUDA,选择启用。

接下来是配置CUDA兼容性,默认即可(也不要修改,多个版本无法识别,后续会说怎么改)。

再就是指定优化架构,高版本的CPU可以修改为/arch:AVX2。

重写强内联就默认启用即可。

这时会在根目录下生成一个.tf_configure.bazelrc文件,存储刚写的配置,打开它,会有一行配置CUDA兼容性的:

build --action_env TF_CUDA_COMPUTE_CAPABILITIES="3.5,7.0"

TensorFlow 2.2最低适配版本是3.5,所以为了提高兼容性,我把3.5以上的全部囊括:

build --action_env TF_CUDA_COMPUTE_CAPABILITIES="3.5,3.7,5.0,5.2,6.0,6.1,7.0,7.5"

另外,不要修改默认的C++ 14编译标准,修改为C++ 17会报错。 

启动编译

构建pip包:

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
bazel-bin\tensorflow\tools\pip_package\build_pip_package.exe tfpy

第一行编译,耗时极长。

第二行构建包,会在源码根目录下创建tfpy文件夹,成功后whl包就会放到这个文件夹下,文件夹名字随意。

构建C库:

bazel build --config=opt --config=cuda //tensorflow/tools/lib_package:libtensorflow

会在源码根目录\bazel-bin\tensorflow\tools\lib_package下创建libtensorflow.tar.gz压缩包,包内就是TensorFlow的头文件和dll动态库。

结果获取

pip安装包:tensorflow-2.2.0-cp38-cp38-win_amd64.whl(466.62MB)

pip安装包流量管家版:tensorflow-2.2.0-cp38-cp38-win_amd64.rar(153.37MB,使用方法见压缩包注释)

C库:libtensorflow-2.2.0.rar(110.90MB)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows下编译带CUDA 10.2的TensorFlow 2.2(Python3.8.2,附编译结果下载) 的相关文章

  • 为什么我们从 MultiByte 转换为 WideChar?

    我习惯于处理 ASCII 字符串 但现在使用 UNICODE 我对一些术语感到非常困惑 什么是多字节字符以及什么是widechar有什么不同 多字节是指在内存中包含多个字节的字符吗 widechar只是一个数据类型来表示吗 为什么我们要从M
  • 在 Jenkins 中执行批处理文件

    我有一个简单的批处理文件 我想要从 Jenkins 调用 运行 执行该文件 Jenkins 中有同样的插件吗 如何从 Jenkins 执行批处理文件 如果有相同的教程或文档 无需为此添加新插件 在Jenkins 选择您的工作名称并转到配置部
  • conv1D 中形状的尺寸

    我尝试过构建一个只有一层的 CNN 但遇到了一些问题 事实上 编译器告诉我 ValueError 检查模型输入时出错 预期的 conv1d 1 input 具有 3 个维度 但得到形状为 569 30 的数组 这是代码 import num
  • 如何在 PowerShell 中键入 TAB 字符?

    Task 默认情况下 在 Windows 命令提示符中按 TAB 键将输出文件名 而在 PowerShell 中则不会执行任何操作 我希望能够在交互模式下键入 TAB 字符 而不是通过脚本 Research 我在这个网站上和通过谷歌搜索发现
  • 在 Windows 上将 Mercurial (hg) 存储库转换为 Git (7)

    我现在真的很沮丧 我有一个现有的 hg 存储库 其中有几个月的编码历史 我想将其放入私有 Github 存储库中 以便我可以从那里对其进行处理 不幸的是我使用的是 Windows 我似乎找不到any转换我实际上可以正常工作的存储库的方法 实
  • Python 可执行文件:py2exe 还是 PyInstaller?

    要创建可执行文件 Windows 我假设我们应该使用其中之一 Py2exe 或 PyInstaller 它们之间有什么区别 Py2exe 和 PyInstaller 都是包装器 但我注意到以下几点差异 Py2exe 与 python2 4
  • 如何让脚本执行结束后自动删除?

    是否可以制作一个Python脚本 在Windows中执行结束时删除 py文件 自删除 这种方式使您的程序不依赖于操作系统 from os import remove from sys import argv remove argv 0 奖励
  • Tensorflow seq2seq 获取序列隐藏状态

    我不久前才开始研究tensorflow 我正在研究 seq2seq 模型 并以某种方式让教程起作用 但我一直坚持获取每个句子的状态 据我了解 seq2seq 模型采用输入序列并通过 RNN 为序列生成隐藏状态 随后 模型使用序列的隐藏状态来
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • 为什么使用 boost::none 无法通过 nvcc 编译?

    我正在尝试编译以下代码 include
  • 以编程方式最小化/恢复窗口,跳过动画效果

    我需要对窗口列表执行多项操作 最小化其中一些 恢复其他 以便立即在两组或多组窗口之间切换 这样做的问题是最小化和恢复窗口时可以看到的动画 整个过程看起来很糟糕 所有这些动画都进进出出 上下移动 但是 我无法禁用这些动画 因为这是针对其他计算
  • 代码退出-1073741515 (0xc0000135)“未找到依赖的 dll”

    我正在尝试编写一个简单的程序 与 2019 年相比 Windows 10 64 位 调试 gt x64 遵循 将 Visual C 项目配置为面向 64 位平台 1 include
  • 无需安装 Tensorflow 即可服务 Tensorflow 模型

    我有一个经过训练的模型 想在 python 应用程序中使用 但我看不到任何在不安装 TensorFlow 或创建 gRPC 服务的情况下部署到生产环境的示例 有可能吗 在这种情况下 正确的做法是什么 如果不使用 TensorFlow 本身或
  • 用于验证 IIS 设置的 Powershell 脚本

    是否可以使用 Power Shell 脚本获取 IIS 设置 我希望使用脚本获取 检查以下信息 检查 Windows 身份验证提供程序是否正确列出 协商 NTLM 检查是否启用了 Windows 身份验证 Windows 身份验证高级设置
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 将 cuda 数组传递给 Thrust::inclusive_scan

    我可以对 cpu 上的数组使用包容性扫描 但是否可以对 gpu 上的数组执行此操作 注释是我知道有效但我不需要的方式 或者 是否有其他简单的方法可以对设备内存中的数组执行包含扫描 Code include
  • 取消后调用 boost::asio 异步处理程序没有错误

    我的代码在单个线程中使用 boost asio 和 io service 来执行各种套接字操作 所有操作都是异步的 每个处理程序都依赖于boost system error code 特别boost asio error operation
  • Kerberos 双跳

    我们遇到了臭名昭著的 Kerberos 双跳问题 这是一个全新的域 是从以前使用模拟和委派的另一个提供商迁移而来的 我们已将操作系统升级到最新的 SQL 服务器 2017 WPF 应用程序 使用域凭据 gt Web 服务 IIS 10 上的
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了

随机推荐

  • compilation terminated. The terminal process terminated with exit code: 1头文件包含错误解决办法

    错误描述 xff1a d coding clanguage datastruct chapterone mian1 cpp 1 46 fatal error c1 h No such file or directory include 34
  • 实践支持HTTPS SSL的七牛云存储CDN

    最近 xff0c 听说七牛云存储CDN这货支持HTTPS SSL Godaddy SSL证书 xff0c 试用了一下 xff0c 简直发现了新大陆 刚开始设置好以后 xff0c 发现HTTPS下的网页并没有采用七牛的服务 xff0c 只是H
  • 超详细,多图,PVE安装以及简单设置教程(个人记录)

    前言 写这个的目的是因为本人健忘所以做个记录以便日后再折腾时查阅 本人笔拙如有选词 xff0c 错字 xff0c 语法 xff0c 标点错误请忽视 xff0c 大概率知道了也不会修改 xff0c 本人能看懂就好 内容仅适用于本人的使用环境
  • Visual Studio 编译时moc 某些头文件找不到,编译不过,解决办法

    Visual Studio 编译时moc 某些头文件找不到 xff0c 编译不过 xff0c 解决办法 主要是不同的VS版本提交时存在的差异造成的 需要把编译时moc不过的头文件先移除掉 xff0c 然后再添加回来 xff0c 再编译就能编
  • UITableViewController使用

    列表视图控制器 xff0c 用起来很方便 xff0c 不仅可以实现分组列表 xff0c 连tem都有很多定义好的样式 xff0c 使用时基本上不需要有大的自定义的部分 xff0c 这里做一些简单的尝试 1 新建MyTableViewCont
  • TQ2440外接GPIO蜂鸣器驱动程序

    本文通过TQ2440开发板上可外接的GPIO口GPG14连接蜂鸣器 xff0c 通过控制GPG14引脚的高低电平的输出和高低电平输出之间的时间间隔来使蜂鸣器发出不同的声音 1 打开S3C2440的底板原理图找到GPIO xff0c 如下图所
  • Ubuntu下QT静态编译教程

    1 安装Ubuntu系统 xff0c 然后 root 账户登录 xff0c 不然可能会有权限问题 xff0c 避免麻烦 2 打开终端 xff0c 安装必要环境 xff1a 注 xff1a 如安装时 xff0c 遇到暂停需要输入y时 xff0
  • 用 GitHub Actions 自动打包发布 Python 项目

    用 GitHub Actions 自动打包发布 Python 项目 文章目录 用 GitHub Actions 自动打包发布 Python 项目前言在 GitHub 上保存 token创建 workflow定义工作流程的工作环境签出项目 x
  • 用 R 做数据分析

    用 R 做数据分析 Vol 0 xff1a 数据的数字特征及相关分析 导入数据 导入文本表格数据 Year Nationwide Rural Urban 1978 184 138 405 1979 207 158 434 1980 236
  • win下配置Rust及Clion开发环境

    登录官网下载最新的win安装包 地址 默认情况下 rustup安装在用户目录下 也就是C盘 这里我们通过修改环境变量的方式 安装到D盘 RUSTUP HOME 存储工具链和配置文件CARGO HOME 存储cargo的缓存 一定要在rust
  • [docker]CentOS安装docker

    文章目录 先卸载旧版本添加 Docker 软件源使用dnf安装使用yun安装 配置镜像源加速关于tencentOS系统的差异处理 先卸载旧版本 span class token function sudo span yum remove s
  • c语言printf输出格式

    最近C语言中遇到一些基础知识 xff0c 写出来分享一下 xff1a 一 一些基本输出格式小试 include lt stdio h gt include lt stdlib h gt int main int x 61 017 print
  • Linux man命令解析

    文章目录 使用方法手册页面结构手册章节说明命令选项命令参数常见用法1 man k command2 man f command man命令 英文单词manual 使用手册 的缩写 是Linux系统中的一个命令 用于显示其他命令的手册页面 它
  • Linux usr/share/doc帮助文档介绍

    文章目录 usr share doc介绍目录结构查看文档使用文档总结附录 xff1a 关于删除 usr share doc的影响 usr share doc 介绍 在Linux系统中 usr share doc目录是非常重要的 它是用来存储
  • POJ题目分类 很好很有层次感

    OJ上的一些水题 可用来练手和增加自信 poj3299 poj2159 poj2739 poj1083 poj2262 poj1503 poj3006 poj2255 poj3094 初期 一 基本算法 1 枚举 poj1753 poj29
  • Codeforces Beta Round #1

    做了好久 感觉做的有点蠢 题目总体难度不高吧应该 因为考虑的不周WA了两次 题目传送门 xff1a http codeforces com contest 1 A Theatre Square time limit per test 1 s
  • Codeforces Beta Round #2

    codeforces 2A Winner codeforces 2B The least round way codeforces 2C Commentator problem 这期题目想对感觉较难 A敲了十多分钟 B是想了很久才开始写的中
  • windows 系统下找不到kernel32.lib和windows.h等问题

    windows 系统下找不到kernel32 lib和windows h等问题 因为项目中一个硬件驱动只支持windows7 xff0c 所以找了一个硬盘重装系统 window 7 64位官方纯净版 装完之后又安装了VS2013 xff0c
  • Debian 10.1升级内核

    今天决定把Debian 10 1自带的4 19内核升级到5 2 14 需要的工具 automake make g 43 43 xff08 包含gcc xff09 bison flex libelf dev libssl dev bc 懒人命
  • Windows下编译带CUDA 10.2的TensorFlow 2.2(Python3.8.2,附编译结果下载)

    官方教程说得基本差不多了 xff0c 然而在此基础上编译还是会出问题 xff0c 因此做一些补充 环境准备 1 Python amp Pip 首先是Python需要安装一些包 xff0c 除了官方说的six numpy wheel kera