diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/arithmetic_cpu_kernel.cc b/mindspore/ccsrc/backend/kernel_compiler/cpu/arithmetic_cpu_kernel.cc index 68abdcd6d47..06e1ecd4cda 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/arithmetic_cpu_kernel.cc +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/arithmetic_cpu_kernel.cc @@ -104,6 +104,8 @@ void ElementRealDiv(const T *input1, const T *input2, T *out, size_t size, size_ for (size_t i = 0; i < size; ++i) { auto dividend = input1[idx_1]; auto divisor = input2[idx_2]; + idx_1 += delta_1; + idx_2 += delta_2; if (divisor == zero) { if (dividend == zero) { out[i] = std::numeric_limits::quiet_NaN(); @@ -117,8 +119,6 @@ void ElementRealDiv(const T *input1, const T *input2, T *out, size_t size, size_ continue; } out[i] = dividend / divisor; - idx_1 += delta_1; - idx_2 += delta_2; } } diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/reduce_cpu_kernel.cc b/mindspore/ccsrc/backend/kernel_compiler/cpu/reduce_cpu_kernel.cc index 0f2439f71e3..5a5c510ae34 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/reduce_cpu_kernel.cc +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/reduce_cpu_kernel.cc @@ -79,8 +79,9 @@ template void ReduceCPUKernel::SimpleReduce(size_t start, size_t end, size_t stride, const T *input_addr, T *output_addr) { auto pos = start * stride; for (size_t i = start; i < end; ++i) { - output_addr[i] = 0; - for (size_t j = 0; j < stride; ++j) { + output_addr[i] = input_addr[pos]; + pos++; + for (size_t j = 1; j < stride; ++j) { reduce_func_(input_addr, pos, &output_addr[i]); pos++; } diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/stridedslice_cpu_kernel.cc b/mindspore/ccsrc/backend/kernel_compiler/cpu/stridedslice_cpu_kernel.cc index 533c7361122..da875f64d1e 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/stridedslice_cpu_kernel.cc +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/stridedslice_cpu_kernel.cc @@ -31,7 +31,8 @@ enum PosType { kBegin, kEnd }; int NormalizePos(int pos, int dim_len, PosType pos_type) { if (pos < 0) { int normal_pos = pos + dim_len; - normal_pos = std::max(normal_pos, 0); + int threshold = pos_type == kBegin ? 0 : -1; + normal_pos = std::max(normal_pos, threshold); return normal_pos; } int max_pos = pos_type == kBegin ? dim_len - 1 : dim_len;