HLO--XLA

article/2025/9/23 18:41:12

HLO:
high level optimizer 高级优化器

XLA:
XLA(Accelerated Linear Algebra)-加速线性代数,Google推出的高性能机器学习领域编译器(编译型推理引擎),它可以在不更改源代码的条件下加速Tensorflow模型 提高TensorFlow的计算性能

计算图分为要计算的数据和算子 算子中要进行element-wise计算 把多个元素进行重复的element-wise计算融合为一个
将算子融合可减少申请算子间的中间结果所占的内存 也减少了加载消耗时间

XLA对性能的提升主要来源于将多个连续的element-wise算子融合为一个算子

XLA的输入语言是"HLO IR"。XLA将HLO描述的计算图(计算流程)编译为针对各种特定后端的机器指令。

XLA对输入的HLO计算图进行与目标设备无关的优化,如CSE,算子融合,运行时内存分配分析。输出为优化后的HLO计算图 HLO IR。
然后,将HLO计算图发送到后端(Backend),后端结合特定的硬件属性对HLO计算图进行进一步的HLO级优化,例如将某些操作或其组合进行模式匹配从而优化计算库调用。
最后,后端将HLO IR转化为LLVM IR,LLVM再进行低级优化并生成机器码。

HLO instructions are the atomic unit of the high-level compiler’s IR.

HloInstructions live inside of an HloComputation, which is analogous to a
function in other programming languages(类似于其他编程语言的函数). Nodes have no total order within
their computation. Instead, they have a partial ordering determined by their
data and control dependencies.

HLO does not have basic blocks or explicit “branch” instructions. Instead,
certain HloInstructions – namely, kWhile, kConditional, and kCall – encode
control flow. For example, the kConditional HLO executes one of two possible
computations, depending on the runtime value of a predicate.

HLO is pure (mostly). It has no concept of mutable state. Instead, data
values are produced by one HLO and flow into consumers across dependency
edges.

算子融合:
https://zhuanlan.zhihu.com/p/209029514?utm_source=qq
https://www.cnblogs.com/wujianming-110117/p/14992989.html
https://blog.csdn.net/Zzzzzcccnn/article/details/106614091
https://blog.csdn.net/Artyze/article/details/108796250

在这里插入图片描述

HLO:
high level optimizer 高级优化器

XLA:
XLA(Accelerated Linear Algebra)-加速线性代数,Google推出的高性能机器学习领域编译器(编译型推理引擎),它可以在不更改源代码的条件下加速Tensorflow模型 提高TensorFlow的计算性能

计算图分为要计算的数据和算子 算子中要进行element-wise计算 把多个元素进行重复的element-wise计算融合为一个
将算子融合可减少申请算子间的中间结果所占的内存 也减少了加载消耗时间

XLA对性能的提升主要来源于将多个连续的element-wise算子融合为一个算子

XLA的输入语言是"HLO IR"。XLA将HLO描述的计算图(计算流程)编译为针对各种特定后端的机器指令。

XLA对输入的HLO计算图进行与目标设备无关的优化,如CSE,算子融合,运行时内存分配分析。输出为优化后的HLO计算图 HLO IR。
然后,将HLO计算图发送到后端(Backend),后端结合特定的硬件属性对HLO计算图进行进一步的HLO级优化,例如将某些操作或其组合进行模式匹配从而优化计算库调用。
最后,后端将HLO IR转化为LLVM IR,LLVM再进行低级优化并生成机器码。

HLO IR可以分如下图所示的成三个层次,HloModule, HloComputation和HloInstruction。

HloModule:

一个编译单元,相当于一个完整的可执行程序,所以有入口函数,也就是 entry_computation, 有且仅有一个。输入可以是多个参数,但输出只有一个(root instruction的值),如果要返回多个值,需要把多个值构造成一个元组(tuple)返回。一个module可以包含多个computation,除了entry_computation,其他的都是"nested",,也就是被调用。ENTRY ----------------> 程序入口,ROOT--------------> 程序输出 一个HloModule可以包含很多个HloComputation

HloComputation

是HLO IR中间层的表示,相当于程序中的一个函数。一个HloModule只能有一个entry_conputation,其他的computation是被entry_computation调用的。我们可以把entry_computation类比作main函数。每个HloComputation可以包含多个HloInstruction.

HloInstruction

是HLO IR最底层的表示,顾名思义,相当于程序中的一条指令 可理解为op。每个HloComputation只能有一个root_instruction。root_instruction的output就是该computation的output。computation的input用parameter表示。HloInstruction也可以调用HloComputation。

HLO规定一个instruction必须只生成一个output。但是在实际中的,很多时候我们需要输出多个output。对于这种情况,我们需要将多个output打包成一个Tuple。如此,一个tuple类型的output中可以包含多个sub-output,也就是nested的。HLO中用Shape来表示nested output。从Shape中的tuple_shapes_ field是一个vector。

一个HloInstruction可包含多个算子

operation_semantics

https://www.tensorflow.org/xla/operation_semantics(英文打开)

单个算子没法运行 要重新组件成module(加ENTRY ----------------> 程序入口,ROOT--------------> 程序输出 等)才能运行

区别model和module


http://chatgpt.dhexx.cn/article/tn2uLC1M.shtml

相关文章

C++:C++编译过程:看完还不懂C++编译过程来捶我

1:先看图 2:一个C源文件从文本到可执行文件经历的过程: gcc Hello.cpp 预处理阶段:gcc -E hello.c -o hello.i 对源代码文件中包含关系(头文件),预编译语句(宏定义&#xff09…

h计算机软件指什么,HXX 文件扩展名: 它是什么以及如何打开它?

解决难以打开 HXX 文件的问题 打开 HXX 文件过程中所遇到的常见问题 MacroMates TextMate 消失 尝试打开 HXX 时,你会遇到一条错误消息,例如 “%%os%% 无法打开 HXX 文件”。 如果是这种情况,通常是因为 你的计算机上没有安装 MacroMates Tex…

神器octotree

在Github上查看源代码的体验十分糟糕,尤其是从一个目录跳转到另一个目录的时候,非常麻烦。 直到遇到这款神器,相见恨晚!! 具体安装及使用步骤参考: https://www.cnblogs.com/12yang-ting/p/7485264.html …

有用的Chrome扩展介绍 - Octotree - GitHub code tree

明细: 安装之后,Github网站左边会自动出现类似Visual Studio Code的代码显示方式,可以通过树形结构方便地浏览代码,无需重复点击文件夹进入。 树形结构里的图标可以使用各种不同的风格显示: 快捷键:上箭头…

Octotree在GitHub中出错(已解决)

谷歌插件真的是很方便,像Octotree让我们github中的项目浏览起来更加条理,如图 但是当我在github中频繁的切换文件夹的时候,Outotree开始报错,也不显示目录结构,将错误代码放到谷歌翻译如下。 我理解的意思是github需…

Octotree在GitHub中出错

使用octotree 出现Error: Connection error octotree解决办法 解决方法:需要在github设置访问token 登录github,打开https://github.com/settings/profile 依次点击 Settings -> Developer settings -> Personal access tokens -> Generate n…

google扩展工具Octotree使用(2020-09-01)

不知道近期是不是改版了,反正我的需要github Acess Token权限设置。(最近csdn出问题了,图片不能居中,勉强看) 1.从google商店添加软件 2.打开github刷新并配置 (1)点钥匙的地方 (2…

Octotree访问私有仓库:Error: Private repository

问题 在GitHub私有仓库中使用Octotree时出现下面情况: 这个是因为我们需要在GitHub中给Octotree设置一个访问令牌 解决 在GitHub中:Settings -> Developer settings -> Personal access tokens -> Generate new token 创建令牌 设置名称Oc…

基于 Octotree 的[码云]文件树插件

之前一直在用github上面的Octotree,现在在用gitee(主要是github的访问速度太慢了)。   现在主要转到了gitee上面了,那么有没有基于 Octotree 的[码云]文件树插件呢,当然是有的,下面就进行安装。 1.基于 O…

Octotree 神器 tips

1. 注册一个Gitlab的帐号,并登录进去 2.打开页面会看到这样一个图片 3.安装完插件,点击上面红色方框的内容,即可,效果图如下

Octotree Chrome插件离线安装 树形展示插件

Octotree 是国外程序员Buu Nguyen 做的一个 Chrome 插件。安装之后,可以以左侧的树形结构浏览代码,非常nice 牛啤 1、GitHub 树形展示插件 下载地址附上:https://www.crx4chrome.com/crx/271883/ 2、Gitee 树形展示插件 https://gitee.co…

好用的chrome插件之Octotree

github上经常要浏览代码。那么如何像在IDE 上一样浏览代码呢。 这里推荐一款不错的插件Octotree 如下,选择vscode的风格浏览github上vue的源码,是不是很happy 点击设置,进行设置不同的风格 注意:和vscode不同的是。vscode上双击…

chrome强烈推荐安装Octotree插件

chrome强烈推荐安装Octotree插件 插件下载网站 说明: 这是一个很好的谷歌浏览器插件下载网站,界面很清新 https://chrome.zzzmh.cn/ 简介 Octotree是专门为github设计的,可以做到将github项目结构在侧边展示(在线的,无需下载到…

GitHub:Octotree与GitHub1s插件的介绍与使用

我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。 如果小伙伴们觉得我的文章不错,记得一键三连,感谢~ 文章目录 一、前言二、插件介绍2.1、Octotree2.2、GitHub1s 3、解决GitHub1s插件请求次数受限问题 一、前言 …

Octotree 下载安装

类型:谷歌插件 优势:像 IDE 那样方便地浏览代码,如下图。 下载地址:http://www.cnplugins.com/devtool/octotree/download.html。 安装步骤:https://www.cnblogs.com/12yang-ting/p/7485264.html。

Chrome安装Octotree插件

被安利了款便于查看github代码的chrome 插件 1.下载.crx格式插件 可用的插件下载地址址: https://crxdl.com/ http://chromecj.com/ http://www.cnplugins.com/ 2.通过Chrome扩展插件的ID或名字搜索下载 3.mac 解压插件 命令行解压.crx文件 cd .crx所在文件夹…

Octotree插件安装及API limit exceeded报错

Octotree插件的安装:github工具:Octotree安装和使用教程 使用Octotree插件阅读github上代码时出现API limit exceeded报错:API limit exceeded,You have exceeded the GitHub API rate limit. Please go to Settings to login wit…

Octotree插件

推荐理由 直接在Chrome侧边栏向打开文件夹一样的查看别人的项目。

github 安装浏览器导航插件Octotree

Octotree能够读取github目录内容在右侧显示导航栏,可以方便阅读,不用再点来点去的进行阅读了。 Octotree分为普通版和专业版,我们用用普通版就行了因为是免费的。 Octotree支持的浏览器:Chrome, Firefox, Opera , Safari 安装方…