TensorFlow XLA加速编译器

加速线性代数器(Accelerated linear algebra,XLA)是线性代数领域的专用编译器。根据 https://www.tensorflow.org/performance/xla/,它仍处于实验阶段,用于优化 TensorFlow 计算。

XLA 可以提高服务器和移动平台的执行速度、内存使用率和可移植性。提供了双向 JIT(Just In Time)编译或 AoT(Ahead of Time)编译。使用 XLA,可以生成平台相关的二进制文件(针对大量平台,如 x64、ARM等),可以针对内存和速度进行优化。

准备工作

目前,XLA 并不包含在 TensorFlow 的二进制版本中。用时需要从源代码构建它。

从源代码构建 TensorFlow,需要 TensorFlow 版的 LLVM 和 Bazel。TensorFlow.org 仅支持从 macOS 和 Ubuntu 的源代码构建。从源代码构建 TensorFlow 所需的步骤如下(参见https://www.tensorflow.org/install/install_sources):

  1. 确定要安装哪个版本的 TensorFlow——仅支持 CPU 的 TensorFlow 或支持 GPU 的 TensorFlow。
  2. 复制 TensorFlow 存储库:
  3. 安装以下依赖:
  • Bazel
  • TensorFlow 的 Python 依赖项
  • 对GPU版本,需要NVIDIA软件包以支持TensorFlow
  1. 配置安装。需要选择不同的选项,如 XLA、Cuda 支持、Verbs 等:

./configure

  1. 使用 bazel-build。
  2. 对于仅使用 CPU 的版本:
  3. 如果有兼容的 GPU 设备,并且需要 GPU 支持,请使用:
  4. 成功运行后,获得一个脚本:build_pip_package。按如下所示运行这个脚本来构建 whl 文件:
  5. 安装 pip 包:



    现在你已经准备好了。

具体做法

TensorFlow 生成 TensorFlow 图表。在
XLA 的帮助下,可以在任何新类型的设备上运行 TensorFlow 图表。

  • JIT 编译:在会话级别中打开JIT编译:
  • 这是手动打开 JIT 编译:
  • 还可以通过将操作指定在特定的
    XLA 设备(XLA_CPU 或 XLA_GPU)上,通过 XLA 来运行计算:

AoT编译:独立使用
tfcompile 将 TensorFlow 图转换为不同设备(手机)的可执行代码。

TensorFlow.org
中关于 tfcompile 的论述:tfcompile 采用一个由 TensorFlow 的 feed 和
fetch 概念所标识的子图,并生成一个实现该子图的函数。feed 是函数的输入参数,fetch 是函数的输出参数。所有的输入必须完全由 feed 指定;生成的剪枝子图不能包含占位符或变量节点。通常将所有占位符和变量指定值,这可确保生成的子图不再包含这些节点。生成的函数打包为一个 cc_library,带有导出函数签名的头文件和一个包含实现的对象文件。用户编写代码以适当地调用生成的函数。

最新文章

  1. 第一章-第十三题(该游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素有没有考虑到?)--By梁旭晖
  2. Linux Shell函数
  3. 三、android中Handle类的用法
  4. BI的核心价值[转]
  5. 禁止选择文本和禁用右键 v1.0
  6. javascript (六) 引用外部js文件
  7. 谨慎使用递增/递减运算符(C++)
  8. javascript 之作用域链-10
  9. 为什么内部类访问的外部变量需要使用final修饰
  10. Python 描述符是什么?以及如何实现
  11. arcgis for js学习之Graphic类
  12. 另类AOP设计
  13. linux 用户登陆信息查询
  14. 搭建RESTful API来使用Fabric Node SDK 开篇
  15. Javascript中的this之我见
  16. HDU3829(KB10-J 二分图最大独立集)
  17. saxbuilder用法
  18. 2017-2018 Exp6 信息搜集与漏洞扫描 20155214
  19. js提取新浪邮箱的信用卡
  20. js深浅copy

热门文章

  1. css选择器中:first-child 与 :first-of-type的区别
  2. Typora+PicGo+cos图床打造开发者文档神器
  3. hdu4685 最大匹配可能性
  4. PAT 乙级 -- 1009 -- 说反话
  5. POJ3277 线段树段更新,点询问+二分离散化+暴力
  6. 【python】Leetcode每日一题-螺旋矩阵
  7. .NET Core-全局性能诊断工具
  8. Windows进程间通讯(IPC)----WM_COPYDATA
  9. 封装了一些sqlsugar的常用方法 用来动态切换数据库和依赖注入 支持泛型
  10. 使用Qt实现一个必应壁纸客户端