递归模型编译器CORTEX
|
架能够从张量计算中完全解开递归遍历,并进行部分推理,从而能够快速地将整个张量计算放入到硬件加速器(目前支持CPU和GPU)。 这意味着编译器可以生成一个高度优化的代码,能够避免加速器和主机CPU之间频繁通信的开销。 最后,论文总结了贡献:
编译器API之递归模型CORTEX需要具有模型计算的端到端视图,以便执行诸如内核融合之类的优化。 输入程序需要包含有关在模型中执行的张量操作的足够信息,以在将其降低到ILIR时进行调度。 从而RA将输入计算建模为运算符的DAG,其中每个运算符都指定为循环嵌套。 行RA计算外,用户还需要提供有关输入数据结构的基本信息,例如每个节点的最大子代数以及数据结构的类型(序列,树或DAG)。 这些信息在编译期间使用,并且可以在运行时很容易验证。 降低循环的次数从RA到ILIR的降低本质上是从递归到迭代的降低。因此,陈团队在降低过程中使所有临时显性张量。 他们还具体化了张量rnn,它存储了计算结果。三个张量中的每个张量都存储每个递归调用的数据,在这种情况下,这些数据相当于每个树节点。 不规则循环IR(ILIR)ILIR是张量编译器使用的程序表示的扩展。因此,ILIR中分别指定了计算和优化。 该计算表示为运算符的DAG,每个运算符都通过消耗先前生成的或输入的张量来生成张量。可以在调度原语的帮助下执行优化,例如循环切片,循环展开,矢量化等。 当中间张量存储在暂存器中时,用非仿射表达式索引它会导致张量稀疏。这种稀疏填充的张量会占用过多的内存, 其中A1的一半未使用。
在这种情况下,可以通过循环迭代空间来索引张量。这种转换还通过将间接内存访问转换为仿射访问来降低索引成本。 (编辑:桂林站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


