示例#1
0
    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)
示例#2
0
 def __init__(self):
     super(GeneralOptimizeRule, self).__init__([
         RemoveRedundantOperator(),
         RemoveNoEffectOperator(),
         RemoveNoEffectOperator(),
         ReplaceScalarOperator(),
         SimplifyElementwiseSequence(),
         SimplifySplitAxis(),
         SimplifyAssociativeOperator(),
         ConcatZeroPadding(),
         ConstantFolding(),
         Convolution2DSvdCompression(),
         ConvFilterPruning(),
         UpgradeOperatorType()
     ])
示例#3
0
    def __init__(self):
        super(SimplifyElementwise, self).__init__()

        self.register(RemoveNoEffectOperator())
        self.register(ReplaceScalarAffine())
        self.register(SimplifyElementwiseSequential())
        self.register(SimplifyElementwiseParallel())
示例#4
0
    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)
示例#5
0
    def __init__(self):
        sub_rules = [
            OptimizeRuleGroup([
                InsertTranspose(),
                ReplaceConvolutionByIm2Col(),
                ReplaceDeconvolutionByCol2Im(),
                DecomposeSoftmax(),
                ReplaceLinearBySgemm(),
                MergeSgemmAndElementwiseMul(),
                FixSGEMMTextureShape(optimize_channel_mode=False),
                FixTensordotTextureShape(optimize_channel_mode=False),
                ConstantFolding(),
                SplitTexture(),
            ]),
            OptimizeRuleGroup([
                InsertChannelModeConversion(),
                RemoveNoEffectOperator(),
                SimplifyElementwiseSequence(),
                SimplifySplitAxis(),
                RemoveRedundantOperator(),
                SimplifyChannelModeConversion(),
                FixSGEMMTextureShape(optimize_channel_mode=True),
                FixTensordotTextureShape(optimize_channel_mode=True),
            ]),
            AttachConcatWorkspace(),
        ]

        if flags.DEBUG:
            sub_rules.append(DumpGraph("cg{count}.dot"))

        super(WebGLOptimizeRule, self).__init__(sub_rules, repeat=False)
示例#6
0
    def __init__(self):
        super(GeneralOptimizeRule, self).__init__()

        self.register(RemoveRedundantOperator())
        self.register(RemoveNoEffectOperator())
        self.register(ReplaceScalarAffine())
        self.register(SimplifyElementwise())
        self.register(ConcatZeroPadding())
示例#7
0
 def __init__(self):
     super(SimplifyElementwise, self).__init__([
         RemoveNoEffectOperator(),
         ReplaceScalarOperator(),
         SimplifyElementwiseSequential(),
         SimplifySplitAxis(),
         SimplifyCommutativeOperator(),
         SimplifyAssociativeOperator()
     ])
示例#8
0
    def __init__(self):
        super(WebGPUOptimizeRule, self).__init__()

        self.register(OptimizeTranspose())
        self.register(OptimizeConvolution2D())
        self.register(OptimizeDeconvolution2D())
        self.register(OptimizeLinear())
        self.register(OptimizeLSTM())
        self.register(RemoveRedundantOperator())
        self.register(RemoveNoEffectOperator())
        self.register(ElementwiseKernelFusion())
def test_scalar_mul2():
    x = Variable([5, 5], OrderNC)
    h = fn(x)
    y = h * 2

    graph = Graph([x], [y])

    flag_changed = True
    while flag_changed:
        graph, flag_changed = RemoveNoEffectOperator().optimize(graph)

    ops = listup_operators(graph)
    assert len(ops) == 2
示例#10
0
def test_scalar_affine2():
    x = Variable([5, 5], OrderNC)
    h = fn(x)
    y, = ScalarAffine(None, scale=2, bias=0)(h)

    graph = Graph([x], [y])

    flag_changed = True
    while flag_changed:
        graph, flag_changed = RemoveNoEffectOperator().optimize(graph)

    ops = listup_operators(graph)
    assert len(ops) == 2
示例#11
0
 def __init__(self):
     super(WebGPUOptimizeRule, self).__init__([
         OptimizeRuleGroup([
             InsertTranspose(),
             ReplaceConvolutionByIm2Col(),
             MergeSgemmAndElementwiseMul(),
             ConstantFolding(),
             ReplaceDeconvolutionByCol2Im(),
             MergeSgemmAndElementwiseMul(),
             ConstantFolding(),
             ReplaceLinearBySgemm(),
             MergeSgemmAndElementwiseMul(),
             ConstantFolding(),
             ConcatLSTMInputAndHidden(),
             RemoveRedundantOperator(),
             RemoveNoEffectOperator(),
             UpdateInplaceAttribute()
         ]),
         ElementwiseKernelFusion()
     ])
示例#12
0
 def __init__(self):
     super(TensorFlowFrontendOptimizeRule,
           self).__init__([RemoveNoEffectOperator()])
    def __init__(self):
        super(TensorFlowFrontendOptimizeRule, self).__init__()

        self.register(RemoveNoEffectOperator())