diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/base/transpose_base.c b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/base/transpose_base.c index 889fbb2c135..ffed2daad5e 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/base/transpose_base.c +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/base/transpose_base.c @@ -237,9 +237,6 @@ const int *out_strides = transpose_param->out_strides_; \ int data_size = transpose_param->data_size_; \ int num_axes = transpose_param->num_axes_; \ - if (num_axes < 2) { \ - return NNACL_ERR; \ - } \ bool needTranspose = false; \ for (int i = 1; i < num_axes; ++i) { \ if (perm[i] - perm[i - 1] != 1) { \ diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/fp16/transpose_fp16.c b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/fp16/transpose_fp16.c index 98c0efa86aa..9d4153e0752 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/fp16/transpose_fp16.c +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/fp16/transpose_fp16.c @@ -206,10 +206,6 @@ int Fp16DoTranspose(const float16_t *in_data, float16_t *out_data, const int *ou int data_size = transpose_param->data_size_; int num_axes = transpose_param->num_axes_; - if (num_axes < 2) { - return NNACL_ERR; - } - // check if transpose is needed bool needTranspose = false; for (int i = 1; i < num_axes; ++i) { diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/fp32/transpose_fp32.c b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/fp32/transpose_fp32.c index e1ce47cdcae..f44d320ee51 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/fp32/transpose_fp32.c +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/fp32/transpose_fp32.c @@ -211,10 +211,6 @@ int DoTransposeFp32(const float *in_data, float *out_data, const int *output_sha int data_size = transpose_param->data_size_; int num_axes = transpose_param->num_axes_; - if (num_axes < 2) { - return NNACL_ERR; - } - // check if transpose is needed bool needTranspose = false; for (int i = 1; i < num_axes; ++i) { diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/int8/transpose_int8.c b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/int8/transpose_int8.c index 9bbccb71d1d..9e8a190c229 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/int8/transpose_int8.c +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/int8/transpose_int8.c @@ -183,10 +183,6 @@ int DoTransposeInt8(const int8_t *in_data, int8_t *out_data, const int *output_s int *out_strides = transpose_param->out_strides_; int num_axes = transpose_param->num_axes_; - if (num_axes < 2) { - return NNACL_ERR; - } - // check if transpose is needed bool needTranspose = false; for (int i = 1; i < num_axes; i++) { diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/transpose_cpu_kernel.cc b/mindspore/ccsrc/backend/kernel_compiler/cpu/transpose_cpu_kernel.cc index d8ef8a149ce..fb9c539de12 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/transpose_cpu_kernel.cc +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/transpose_cpu_kernel.cc @@ -21,6 +21,7 @@ #include "common/thread_pool.h" #include "nnacl/fp32/transpose_fp32.h" #include "nnacl/int8/transpose_int8.h" +#include "nnacl/errorcode.h" namespace mindspore { namespace kernel { @@ -90,26 +91,32 @@ void TransposeCPUFwdKernel::LaunchKernel(const std::vector &inputs, } if (axes_.size() <= MAX_TRANSPOSE_DIM_SIZE) { + int res = NNACL_OK; if constexpr (std::is_same_v) { - DoTransposeInt8(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeInt8(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeInt16(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeInt16(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeInt32(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeInt32(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeInt64(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeInt64(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeUInt8(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeUInt8(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeUInt16(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeUInt16(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeUInt32(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeUInt32(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeUInt64(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeUInt64(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeFp32(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeFp32(input_addr, output_addr, output_shape, &transpose_param_); } else if constexpr (std::is_same_v) { - DoTransposeBool(input_addr, output_addr, output_shape, &transpose_param_); + res = DoTransposeBool(input_addr, output_addr, output_shape, &transpose_param_); + } + if (res == NNACL_ERR) { + MS_LOG(EXCEPTION) << "Transpose input addr or output addr is null"; + } else if (res == NNACL_PARAM_INVALID) { + MS_LOG(EXCEPTION) << "Transpose parameters are invalid."; } } else { size_t data_count = (inputs[0]->size) / sizeof(T);