Browse Source

dock DepthwiseConv2dBackprop DepthwiseConv2dBackpropFilter DepthwiseConv2dBackpropInput

tags/v0.2.0-alpha
buxue 5 years ago
parent
commit
b600991cc3
7 changed files with 135 additions and 0 deletions
  1. +3
    -0
      mindspore/ccsrc/kernel/tbe/tbe_adapter.cc
  2. +2
    -0
      mindspore/ccsrc/pre_activate/pass/const_input_to_attr_registry.cc
  3. +3
    -0
      mindspore/ops/_op_impl/tbe/__init__.py
  4. +44
    -0
      mindspore/ops/_op_impl/tbe/depthwise_conv2d.py
  5. +41
    -0
      mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_filter.py
  6. +41
    -0
      mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_input.py
  7. +1
    -0
      mindspore/ops/operations/nn_ops.py

+ 3
- 0
mindspore/ccsrc/kernel/tbe/tbe_adapter.cc View File

@@ -39,6 +39,9 @@ static std::map<string, string> tbe_func_adapter_map = {
{"reduce_min", "reduce_min_d"}, {"reduce_min", "reduce_min_d"},
{"conv2d_backprop_filter", "conv2d_backprop_filter_d"}, {"conv2d_backprop_filter", "conv2d_backprop_filter_d"},
{"conv2d_backprop_input", "conv2d_backprop_input_d"}, {"conv2d_backprop_input", "conv2d_backprop_input_d"},
{"depthwise_conv2d_native", "depthwise_conv2d"},
{"depthwise_conv2d_native_backprop_filter", "depthwise_conv2d_backprop_filter_d"},
{"depthwise_conv2d_native_backprop_input", "depthwise_conv2d_backprop_input_d"},
{"top_kv2", "top_k"}, {"top_kv2", "top_k"},
{"scatter_nd", "scatter_nd_d"}, {"scatter_nd", "scatter_nd_d"},
{"tile", "tile_d"}, {"tile", "tile_d"},


+ 2
- 0
mindspore/ccsrc/pre_activate/pass/const_input_to_attr_registry.cc View File

@@ -27,6 +27,8 @@ ConstInputToAttrInfoRegistry::ConstInputToAttrInfoRegistry() {
Register(prim::kPrimCast->name(), {1}); Register(prim::kPrimCast->name(), {1});
Register(prim::kPrimConv2DBackpropInput->name(), {2}); Register(prim::kPrimConv2DBackpropInput->name(), {2});
Register(prim::kPrimConv2DBackpropFilter->name(), {2}); Register(prim::kPrimConv2DBackpropFilter->name(), {2});
Register(prim::kPrimDepthwiseConv2dNativeBackpropFilter->name(), {1});
Register(prim::kPrimDepthwiseConv2dNativeBackpropInput->name(), {0});
Register(prim::kPrimReshape->name(), {1}); Register(prim::kPrimReshape->name(), {1});
Register(prim::kPrimReduceMax->name(), {1}); Register(prim::kPrimReduceMax->name(), {1});
Register(prim::kPrimReduceMin->name(), {1}); Register(prim::kPrimReduceMin->name(), {1});


+ 3
- 0
mindspore/ops/_op_impl/tbe/__init__.py View File

@@ -133,3 +133,6 @@ from .arg_min_with_value import _arg_min_with_value_tbe
from .fused_mul_add import _fused_mul_add_tbe from .fused_mul_add import _fused_mul_add_tbe
from .fused_mul_add_n import _fused_mul_add_n_tbe from .fused_mul_add_n import _fused_mul_add_n_tbe
from .fused_mul_apply_momentum import _fused_mul_apply_momentum_tbe from .fused_mul_apply_momentum import _fused_mul_apply_momentum_tbe
from .depthwise_conv2d import _depthwise_conv2d_tbe
from .depthwise_conv2d_backprop_filter import _depthwise_conv2d_backprop_filter_tbe
from .depthwise_conv2d_backprop_input import _depthwise_conv2d_backprop_input_tbe

+ 44
- 0
mindspore/ops/_op_impl/tbe/depthwise_conv2d.py View File

@@ -0,0 +1,44 @@
# Copyright 2020 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================

"""DepthwiseConv2D op"""
from mindspore.ops.op_info_register import op_info_register, TBERegOp, DataType

depthwise_conv2d_op_info = TBERegOp("DepthwiseConv2dNative") \
.fusion_type("CONVLUTION") \
.async_flag(False) \
.binfile_name("depthwise_conv2d.so") \
.compute_cost(10) \
.kernel_name("depthwise_conv2d") \
.partial_flag(True) \
.attr("stride", "required", "listInt", "all") \
.attr("dilation", "required", "listInt", "all") \
.attr("pads", "required", "listInt", "all") \
.attr("data_format", "required", "str", "all") \
.attr("offset_a", "optional", "int", "all") \
.input(0, "x", False, "required", "all") \
.input(1, "filter", False, "required", "all") \
.input(2, "bias", False, "optional", "all") \
.input(3, "offset_w", False, "optional", "all") \
.output(0, "y", True, "required", "all") \
.dtype_format(DataType.F16_5HD, DataType.F16_C1HWNCoC0, DataType.F16_Default, DataType.F16_Default,
DataType.F16_5HD) \
.get_op_info()


@op_info_register(depthwise_conv2d_op_info)
def _depthwise_conv2d_tbe():
"""DepthwiseConv2D TBE register"""
return

+ 41
- 0
mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_filter.py View File

@@ -0,0 +1,41 @@
# Copyright 2020 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================

"""DepthwiseConv2DBackpropFilter op"""
from mindspore.ops.op_info_register import op_info_register, TBERegOp, DataType

depthwise_conv2d_backprop_filter_op_info = TBERegOp("DepthwiseConv2dNativeBackpropFilter") \
.fusion_type("CONVLUTION") \
.async_flag(False) \
.binfile_name("depthwise_conv2d_backprop_filter_d.so") \
.compute_cost(10) \
.kernel_name("depthwise_conv2d_backprop_filter_d") \
.partial_flag(True) \
.attr("filter_size", "required", "listInt", "all") \
.attr("stride", "required", "listInt", "all") \
.attr("dilation", "required", "listInt", "all") \
.attr("pads", "required", "str", "all") \
.attr("data_format", "required", "str", "all") \
.input(0, "input", False, "required", "all") \
.input(1, "out_backprop", False, "required", "all") \
.output(0, "filter_grad", False, "required", "all") \
.dtype_format(DataType.F16_5HD, DataType.F16_5HD, DataType.F32_C1HWNCoC0) \
.get_op_info()


@op_info_register(depthwise_conv2d_backprop_filter_op_info)
def _depthwise_conv2d_backprop_filter_tbe():
"""DepthwiseConv2DBackpropFilter TBE register"""
return

+ 41
- 0
mindspore/ops/_op_impl/tbe/depthwise_conv2d_backprop_input.py View File

@@ -0,0 +1,41 @@
# Copyright 2020 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================

"""DepthwiseConv2DBackpropInput op"""
from mindspore.ops.op_info_register import op_info_register, TBERegOp, DataType

depthwise_conv2d_backprop_input_op_info = TBERegOp("DepthwiseConv2dNativeBackpropInput") \
.fusion_type("CONVLUTION") \
.async_flag(False) \
.binfile_name("depthwise_conv2d_backprop_input_d.so") \
.compute_cost(10) \
.kernel_name("depthwise_conv2d_backprop_input_d") \
.partial_flag(True) \
.attr("input_size", "required", "listInt", "all") \
.attr("stride", "required", "listInt", "all") \
.attr("dilation", "required", "listInt", "all") \
.attr("pads", "required", "str", "all") \
.attr("data_format", "required", "str", "all") \
.input(0, "filter", False, "required", "all") \
.input(1, "out_backprop", False, "required", "all") \
.output(0, "input_grad", False, "required", "all") \
.dtype_format(DataType.F16_C1HWNCoC0, DataType.F16_5HD, DataType.F16_5HD) \
.get_op_info()


@op_info_register(depthwise_conv2d_backprop_input_op_info)
def _depthwise_conv2d_backprop_input_tbe():
"""DepthwiseConv2DBackpropInput TBE register"""
return

+ 1
- 0
mindspore/ops/operations/nn_ops.py View File

@@ -696,6 +696,7 @@ class DepthwiseConv2dNative(PrimitiveWithInfer):
dilation=1, dilation=1,
group=1): group=1):
"""init DepthwiseConv2dNative""" """init DepthwiseConv2dNative"""
self.init_prim_io_names(inputs=['x', 'w'], outputs=['output'])
validator.check_pad_value_by_mode(self.__class__.__name__, pad_mode, pad) validator.check_pad_value_by_mode(self.__class__.__name__, pad_mode, pad)
self.kernel_size = validator.check_type('kernel_size', kernel_size, (int, tuple)) self.kernel_size = validator.check_type('kernel_size', kernel_size, (int, tuple))
if isinstance(kernel_size, int): if isinstance(kernel_size, int):


Loading…
Cancel
Save