文档
注册

融合规则设计

明确融合方案

我们以多对一融合规则DecodeBboxV2ScopeFusionPass为例介绍如何设计和开发Scope融合规则。

该融合规则的目标是把Decode scope下的所有小算子融合为一个大算子DecodeBboxV2,Scope内包括2个Exp算子/4个Mul算子/4个Sub算子/2的倍数个RealDiv算子/2个Unpack算子/1个Pack算子/3个Transpose算子/不能包括Softmax算子,如图1所示。

图1 融合示意图

明确融合算子原型

DecodeBboxV2融合算子原型为:

算子原型API可以参考Ascend Graph开发指南的"参考-> Ascend Graph接口参考 -> 原型定义接口"。

REG_OP(DecodeBboxV2)
    .INPUT(boxes, TensorType({DT_FLOAT16,DT_FLOAT}))
    .INPUT(anchors, TensorType({DT_FLOAT16,DT_FLOAT}))
    .OUTPUT(y, TensorType({DT_FLOAT16,DT_FLOAT}))
    .ATTR(scales, ListFloat, {1.0, 1.0, 1.0, 1.0})
    .ATTR(decode_clip, Float, 0.0)
    .ATTR(reversed_box, Bool, false)
    .OP_END_FACTORY_REG(DecodeBboxV2)

明确融合对应关系

图1所示,

  • transpose的第0个输入作为DecodeBboxV2的第0个输入boxes;
  • get_center_coordinates_and_sizes/transpose的第0个输入作为DecodeBboxV2的第1个输入anchors;
  • transpose_1的输出作为DecodeBboxV2的输出y。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词