加入收藏 | 设为首页 | 会员中心 | 我要投稿 桂林站长网 (https://www.0773zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

递归模型编译器CORTEX

发布时间:2021-03-25 17:11:23 所属栏目:传媒 来源:互联网
导读:架能够从张量计算中完全解开递归遍历,并进行部分推理,从而能够快速地将整个张量计算放入到硬件加速器(目前支持CPU和GPU)。 这意味着编译器可以生成一个高度优化的代码,能够避免加速器和主机CPU之间频繁通信的开销。 最后,论文总结了贡献: 设计了CORTE

架能够从张量计算中完全解开递归遍历,并进行部分推理,从而能够快速地将整个张量计算放入到硬件加速器(目前支持CPU和GPU)。

这意味着编译器可以生成一个高度优化的代码,能够避免加速器和主机CPU之间频繁通信的开销。

最后,论文总结了贡献:

  • 设计了CORTEX,一个基于编译器的框架,可实现端到端优化和高效的代码生成,以递归深度学习模型的低延迟推理。
  • 作为设计的一部分,扩展了张量编译器,并提出了递归模型的新调度原语和优化。
  • 对提出的框架进行原型设计,并根据最新的递归深度学习框架对其进行评估,并获得了显着的性能提升( 在Nvidia GPU,Intel和ARM CPU上最高可达14倍)。

编译器API之递归模型

CORTEX需要具有模型计算的端到端视图,以便执行诸如内核融合之类的优化。

输入程序需要包含有关在模型中执行的张量操作的足够信息,以在将其降低到ILIR时进行调度。

从而RA将输入计算建模为运算符的DAG,其中每个运算符都指定为循环嵌套。

行RA计算外,用户还需要提供有关输入数据结构的基本信息,例如每个节点的最大子代数以及数据结构的类型(序列,树或DAG)。

这些信息在编译期间使用,并且可以在运行时很容易验证。

降低循环的次数

从RA到ILIR的降低本质上是从递归到迭代的降低。因此,陈团队在降低过程中使所有临时显性张量。

他们还具体化了张量rnn,它存储了计算结果。三个张量中的每个张量都存储每个递归调用的数据,在这种情况下,这些数据相当于每个树节点。

不规则循环IR(ILIR)

ILIR是张量编译器使用的程序表示的扩展。因此,ILIR中分别指定了计算和优化。

该计算表示为运算符的DAG,每个运算符都通过消耗先前生成的或输入的张量来生成张量。可以在调度原语的帮助下执行优化,例如循环切片,循环展开,矢量化等。

当中间张量存储在暂存器中时,用非仿射表达式索引它会导致张量稀疏。这种稀疏填充的张量会占用过多的内存, 其中A1的一半未使用。

在这种情况下,可以通过循环迭代空间来索引张量。这种转换还通过将间接内存访问转换为仿射访问来降低索引成本。

(编辑:桂林站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读