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的倍数。