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,附编译结果下载) 的相关文章

  • 按名称显示进程的命令行

    我在cmd中使用以下命令来获取进程命令行 它提供了所有流程的详细信息 WMIC OUTPUT C ProcessList txt PROCESS get Caption Commandline Processid 我想在记事本中按名称获取特
  • LSTM - 一段时间后预测相同的常数值

    我有一个变量 我想预测未来 30 年的情况 不幸的是我没有很多样品 df pd DataFrame FISCAL YEAR 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 199
  • 具有 Cuda Thrust 的多个 GPU?

    如何将 Thrust 与多个 GPU 一起使用 这只是使用 cudaSetDevice deviceId 的问题吗 然后运行相关的 Thrust 代码 使用 CUDA 4 0 或更高版本 cudaSetDevice deviceId 接下来
  • tensorflow:检查标量布尔张量是否为 True

    我想使用占位符控制函数的执行 但不断收到错误 不允许使用 tf Tensor 作为 Python bool 这是产生此错误的代码 import tensorflow as tf def foo c if c print This is tr
  • 在按顺序读取的多个特征文件上训练 Keras 模型以节省内存

    当我尝试读取大量功能文件时 我遇到了内存问题 见下文 我想我应该分割训练文件并按顺序读取它们 做到这一点的最佳方法是什么 x train np load path features x train npy y train np load p
  • .NET 中安全身份的本地化

    我想在 NET 中实现一个用于服务 客户端通信的命名管道 并遇到了这段代码 http code msdn microsoft com windowsdesktop CSNamedPipeCommunication 33b2485c view
  • Windows批处理脚本启动程序并退出控制台

    我有一个用于启动程序的批处理脚本 例如notepad exe 当我双击这个批处理文件时 记事本正常启动 但是黑窗cmd谁发起的notepad exe仍然在后台 我需要做什么才能启动notepad exe并使cmd窗口消失 edit 比使用更
  • 用于新 Windows 游戏项目的 OpenGL 或 Direct3D?或者是其他东西?

    我正在 Windows 上启动一个爱好游戏项目 该项目将大量使用 3D 图形效果 它很可能是用 C 编写的 我应该使用 OpenGL 还是 Direct3D 作为我的图形后端 为什么 或者我应该使用现成的图形引擎 例如OGRE 3D htt
  • 大型跨平台软件项目的技巧/资源

    我将开始一个大型软件项目 涉及跨平台 GUI 和大量的数字运算 我计划用 C 和 CUDA 编写大部分应用程序后端 并用 Qt4 编写 GUI 我计划使用 Make 作为我的构建系统 这将是一个只有两名开发人员的项目 一旦我相对深入地了解它
  • cuda 文件组织的有效方式:.cpp .h .cu .cuh .curnel 文件

    cuda最容易理解 最高效的代码组织是什么 经过一番调查后 我发现 cuda 函数声明应位于 cuh 文件中 实现位于 cu 文件中 内核函数实现位于 curnel 文件中 其他 C 内容通常在 cpp 和 h 文件中 最近我发布了一个问题
  • 移动设备上的 TensorFlow(Android、iOS、Windows Phone)

    我目前正在寻找不同的深度学习框架 特别是用于训练和部署卷积神经网络 要求是 它可以在带有 GPU 的普通 PC 上进行训练 但训练后的模型必须部署在三个主要的移动操作系统上 即 Android iOS 和 Windows Phone Ten
  • 具有不同尺寸图像的 Tensorflow 输入数据集

    我正在尝试使用不同大小的输入图像来训练完全卷积神经网络 我可以通过循环训练图像并在每次迭代时创建单个 numpy 输入来做到这一点 即 for image input label in zip image data labels train
  • 推送更改到 Git 不起作用

    每次我想要提交命令 git push heroku master 时 系统都会要求我在 PowerShell 中输入凭据 当我输入 heroku 凭据 默认情况下连接到 git 时 我收到错误消息 但是 当我输入我的主目录中的 netrc
  • 无法在 Windows 10 上运行 Python 3.7“权限被拒绝”

    当尝试使用 Git Bash 在 Windows 10 上运行 Python 3 7 时 出现以下错误 python version bash c Users Name AppData Local Microsoft WindowsApps
  • 如何在 Windows 上使用命令行获取 svn 修订信息

    我正在尝试使用此命令行获取头部的修订信息 svn info https myserver branches Code Improvements rHEAD find Revision 然而 这返回修订版 1234 由于我使用 svn inf
  • 无法单步执行远程 SQL Server 2008 上的存储过程

    我在虚拟上安装了一个域控制器Windows Server 2008 x64 SQL Server 2008 Express x64正在运行Windows Server 2008 x64和客户端Windows 7 RTM x86 两者都已加入
  • 如何确保密钥是在 TPM 内部创建的?

    我需要 在客户端计算机上运行 exe 这将在 TPM 中创建密钥对 然后我将使用 TPM 生成的密钥对的公钥部分创建 CSR 我关心的是如何确保密钥是在 TPM 内部创建的 而不是由欺骗的 TPM 创建的 这将使私钥能够被迁移和复制 我听说
  • forrt1:严重(170):程序异常 - 堆栈溢出

    并提前感谢您的帮助 我已经编译了一个程序 不是我编写的 它在 Mac 上运行得很好 但是当我尝试在 Windows 上执行该程序时 在程序开始执行后不久 我收到以下错误消息 forrt1 严重 170 程序异常 堆栈溢出 我不是 ifort
  • 将 Azure 网站迁移到 Azure 云服务

    我有一个项目 我计划将 Web 应用程序作为 Azure 网站启动 然后将其迁移到 Azure 云服务 也称为托管服务 如果需要作为扩展策略 做出这个决定是因为我了解到 Azure 网站的开发更加简单 快速 几乎不需要特定于 Azure 的
  • 当我的进程被终止时到底会发生什么?

    我有一个包含本机代码和托管代码的混合进程 在 Windows Server 2003 上运行 当我从进程资源管理器中终止进程时 它会进入 100 cpu 的状态 并在消失之前保持这种状态一段时间 有时甚至 10 分钟 在此期间我无法 杀死

随机推荐

  • 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