| @@ -158,3 +158,4 @@ from .avg_pool_grad import _avg_pool_grad_tbe | |||||
| from .ones_like import _ones_like_tbe | from .ones_like import _ones_like_tbe | ||||
| from .batch_to_space import _batch_to_space_tbe | from .batch_to_space import _batch_to_space_tbe | ||||
| from .space_to_batch import _space_to_batch_tbe | from .space_to_batch import _space_to_batch_tbe | ||||
| from .floor import _floor_tbe | |||||
| @@ -0,0 +1,36 @@ | |||||
| # 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. | |||||
| # ============================================================================ | |||||
| """Floor op""" | |||||
| from mindspore.ops.op_info_register import op_info_register, TBERegOp, DataType | |||||
| floor_op_info = TBERegOp("Floor") \ | |||||
| .fusion_type("ELEMWISE") \ | |||||
| .async_flag(False) \ | |||||
| .binfile_name("floor.so") \ | |||||
| .compute_cost(10) \ | |||||
| .kernel_name("floor") \ | |||||
| .partial_flag(True) \ | |||||
| .input(0, "x", False, "required", "all") \ | |||||
| .output(0, "y", False, "required", "all") \ | |||||
| .dtype_format(DataType.F16_Default, DataType.F16_Default) \ | |||||
| .dtype_format(DataType.F32_Default, DataType.F32_Default) \ | |||||
| .get_op_info() | |||||
| @op_info_register(floor_op_info) | |||||
| def _floor_tbe(): | |||||
| """Floor TBE register""" | |||||
| return | |||||
| @@ -351,6 +351,15 @@ class AssignAdd(nn.Cell): | |||||
| self.inputdata = input_ | self.inputdata = input_ | ||||
| return self.op(self.inputdata, input_) | return self.op(self.inputdata, input_) | ||||
| class FloorNet(nn.Cell): | |||||
| def __init__(self): | |||||
| super(FloorNet, self).__init__() | |||||
| self.floor = P.Floor() | |||||
| def construct(self, x): | |||||
| return self.floor(x) | |||||
| test_case_math_ops = [ | test_case_math_ops = [ | ||||
| ('MatMulGrad', { | ('MatMulGrad', { | ||||
| 'block': GradWrap(NetWithLoss(MatMulNet())), | 'block': GradWrap(NetWithLoss(MatMulNet())), | ||||
| @@ -391,6 +400,11 @@ test_case_math_ops = [ | |||||
| 'desc_inputs': [Tensor(np.array([[1., 0., -2.]], np.float32))], | 'desc_inputs': [Tensor(np.array([[1., 0., -2.]], np.float32))], | ||||
| 'desc_bprop': [Tensor(np.array([[1., 0., -2.]], np.float32))], | 'desc_bprop': [Tensor(np.array([[1., 0., -2.]], np.float32))], | ||||
| 'skip': ['backward']}), | 'skip': ['backward']}), | ||||
| ('Floor', { | |||||
| 'block': FloorNet(), | |||||
| 'desc_inputs': [Tensor(np.array([[1., 0., -2.]], np.float32))], | |||||
| 'desc_bprop': [Tensor(np.array([[1., 0., -2.]], np.float32))], | |||||
| 'skip': ['backward']}), | |||||
| ] | ] | ||||
| test_case_lists = [test_case_math_ops] | test_case_lists = [test_case_math_ops] | ||||