ConvConcatFusionPass
融合模式
在concat算子前插入跳写算子,将原先通过concat拼接多个Conv2D内存的方式,修改成通过StridedWrite算子进行Conv2D内存拼接,以消除concat算子任务执行带来的性能消耗。
concat算子包括ConcatD/ConcatV2D,Conv2D算子包括Conv2D/Conv2D_Compress。
如下产品不支持StridedWrite,但会通过硬件实现StridedWrite类似功能,所以ConvConcatFusionPass也会匹配上。
子图中不存在Dequant和Quant时,有如下场景
场景一:

场景二:

场景三:

场景四:

场景五:

场景六:AIcore中cube和vector不分离时,不需要做mish融合。

场景七:AIcore中cube和vector分离时,需要做mish融合。

子图中不存在Dequant,但存在Quant时,有如下场景
场景一:

场景二:

场景三:

场景四:

场景五:

场景六:AIcore中cube和vector不分离时,不需要做mish融合。

场景七:AIcore中cube和vector分离时,需要做mish融合。

子图中存在Dequant且不存在Quant时,有如下场景
场景一:AIcore中cube和vector不分离时,不需要做mish融合。

场景二:AIcore中cube和vector分离且至少一个分支存在mish算子时,需要做mish融合。

子图中存在Dequant和Quant时,有如下场景
场景一:AIcore中cube和vector不分离时,不需要做mish融合。

场景二:AIcore中cube和vector分离且至少一个分支存在mish算子时,需要做mish融合。

使用约束
- 量化场景下该融合规则必须打开,否则会导致transdata输出的dtype不支持。
- 不支持动态shape场景。
- 原始DType为fp16和float时,dim C需要为16的倍数,DType为int8,dim C需要为32的倍数,DType为int4,dim C需要为64的倍数。