def __init__(self): sub_rules = [ OptimizeRuleGroup([ InsertTranspose(), ReplaceConvolutionByIm2Col(), ReplaceDeconvolutionByCol2Im(), DecomposeSoftmax(), ReplaceLinearBySgemm(), MergeSgemmAndElementwiseMul(), FixSGEMMTextureShape(optimize_channel_mode=False), ConstantFolding(), SplitTexture(), ]), OptimizeRuleGroup([ InsertChannelModeConversion(), SimplifyElementwise(), RemoveRedundantOperator(), SimplifyChannelModeConversion(), FixSGEMMTextureShape(optimize_channel_mode=True), ]), AttachConcatWorkspace(), ] if flags.DEBUG: sub_rules.append(DumpGraph("cg{count}.dot")) super(WebGLOptimizeRule, self).__init__(sub_rules, repeat=False)
def __init__(self): sub_rules = [ OptimizeRuleGroup([ InsertTranspose(), ReplaceConvolutionByIm2Col(), ReplaceDeconvolutionByCol2Im(), ReplaceLinearByTensordot(), DecomposeSoftmax(), FixTensordotTextureShape(), MergeTensordotAndElementwiseMul(), ConstantFolding(), RemoveRedundantOperator(), RemoveNoEffectOperator(), SplitTexture(), UnrollConcat(), ]), OptimizeRuleGroup([ InsertTranspose(), InsertChannelModeConversion(), SimplifyChannelModeConversion(), ConstantFolding(), RemoveRedundantOperator(), RemoveNoEffectOperator(), ]), ] # type: List[OptimizeRule] if flags.DEBUG: sub_rules.append( DumpGraph(f"cg_{config.WEBGL_MAX_TEXTURE_SIZE}_{{count}}.dot")) super(WebGLOptimizeRule, self).__init__(sub_rules, repeat=False)
def __init__(self): sub_rules = [ OptimizeRuleGroup([ InsertTranspose(), ReplaceConvolutionByIm2Col(), MergeSgemmAndElementwiseMul(), ConstantFolding(), ReplaceDeconvolutionByCol2Im(), MergeSgemmAndElementwiseMul(), ConstantFolding(), ReplaceLinearBySgemm(), MergeSgemmAndElementwiseMul(), ConstantFolding(), ConcatLSTMInputAndHidden(), RemoveRedundantOperator(), RemoveNoEffectOperator(), UpdateInplaceAttribute() ]), ElementwiseKernelFusion() ] if flags.DEBUG: sub_rules.append(DumpGraph("cg{count}.dot")) super(WebGPUOptimizeRule, self).__init__(sub_rules)
def __init__(self): sub_rules = [ InsertTranspose(), ReplaceConvolutionByIm2Col(), MergeSgemmAndElementwiseMul(), ConstantFolding(), ReplaceDeconvolutionByCol2Im(), MergeSgemmAndElementwiseMul(), ConstantFolding(), ReplaceLinearBySgemm(), MergeSgemmAndElementwiseMul(), ConstantFolding(), UseEigen(), ElementwiseKernelFusion(), UpdateInplaceAttribute() ] if flags.DEBUG: sub_rules.append(DumpGraph("cg{count}.dot")) super(WebassemblyOptimizeRule, self).__init__(sub_rules)
def optimize(self, graph: Graph): for v in graph.inputs: if not v.has_attribute(SplitTarget): continue if flags.DEBUG: DumpGraph().optimize(graph) raise NotImplementedError(f"Input Variable {v} is too large to handle in WebGL backend") return graph, False