!9008 [MSLITE][Develop] fix code review

From: @sunsuodong
Reviewed-by: @zhang_xue_tong,@zhanghaibo5
Signed-off-by: @zhang_xue_tong
pull/9008/MERGE
mindspore-ci-bot 5 years ago committed by Gitee
commit 3793dfea3d

@ -15,6 +15,7 @@
*/
#include "nnacl/arithmetic_common.h"
#include "nnacl/nnacl_utils.h"
void TileOneDimension(float *inData, float *outData, int dim, size_t ndim, int *inShape, int *inStrides,
int *outStrides, int *multiple) {
@ -61,6 +62,8 @@ void ComputeStrides(const int *shape, int *strides, const int ndim) {
}
void CalcMultiplesAndStrides(ArithmeticParameter *param) {
NNACL_ASSERT(param->in_shape0_[i] != 0);
NNACL_ASSERT(param->in_shape1_[i] != 0);
for (size_t i = 0; i < param->ndim_; i++) {
param->multiples0_[i] = param->out_shape_[i] / param->in_shape0_[i];
param->multiples1_[i] = param->out_shape_[i] / param->in_shape1_[i];

@ -17,6 +17,7 @@
#include "nnacl/fp16/arithmetic_fp16.h"
#include <math.h>
#include "nnacl/arithmetic_common.h"
#include "nnacl/nnacl_utils.h"
void TileOneDimensionFp16(float16_t *inData, float16_t *outData, int dim, size_t ndim, int *inShape, int *inStrides,
int *outStrides, int *multiple) {
@ -544,6 +545,7 @@ int ElementDivFp16(float16_t *input0, float16_t *input1, float16_t *output, int
}
#endif
for (; index < element_size; index++) {
NNACL_ASSERT(input1[index] != 0);
output[index] = input0[index] / input1[index];
}
return NNACL_OK;
@ -565,6 +567,7 @@ int ElementOptDivFp16(float16_t *input0, float16_t *input1, float16_t *output, i
}
#endif
for (; index < element_size; index++) {
NNACL_ASSERT(input1[index] != 0);
output[index] = input0[0] / input1[index];
}
} else {
@ -601,6 +604,7 @@ int ElementDivReluFp16(float16_t *input0, float16_t *input1, float16_t *output,
if (input1[index] == 0) {
return NNACL_ERRCODE_DIVISOR_ZERO;
}
NNACL_ASSERT(input1[index] != 0);
float16_t res = input0[index] / input1[index];
output[index] = res > 0 ? res : 0;
}
@ -627,6 +631,7 @@ int ElementOptDivReluFp16(float16_t *input0, float16_t *input1, float16_t *outpu
if (input1[index] == 0) {
return NNACL_ERRCODE_DIVISOR_ZERO;
}
NNACL_ASSERT(input1[index] != 0);
output[index] = MSMAX(input0[0] / input1[index], 0);
}
} else {
@ -724,10 +729,12 @@ int ElementOptFloorModFp16(float16_t *input0, float16_t *input1, float16_t *outp
ArithmeticParameter *param) {
if (param->in_elements_num1_ == 1) {
for (int i = 0; i < element_size; ++i) {
NNACL_ASSERT(input1[0] != 0);
output[i] = input0[i] - floorf(input0[i] / input1[0]) * input1[0];
}
} else {
for (int i = 0; i < element_size; ++i) {
NNACL_ASSERT(input1[i] != 0);
output[i] = input0[i] - floorf(input0[i] / input1[i]) * input1[i];
}
}
@ -736,6 +743,7 @@ int ElementOptFloorModFp16(float16_t *input0, float16_t *input1, float16_t *outp
int ElementFloorDivFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size) {
for (int i = 0; i < element_size; ++i) {
NNACL_ASSERT(input1[i] != 0);
output[i] = floorf(input0[i] / input1[i]);
}
return NNACL_OK;
@ -744,10 +752,12 @@ int ElementOptFloorDivFp16(float16_t *input0, float16_t *input1, float16_t *outp
ArithmeticParameter *param) {
if (param->in_elements_num1_ == 1) {
for (int i = 0; i < element_size; ++i) {
NNACL_ASSERT(input1[0] != 0);
output[i] = floorf(input0[i] / input1[0]);
}
} else {
for (int i = 0; i < element_size; ++i) {
NNACL_ASSERT(input1[i] != 0);
output[i] = floorf(input0[i] / input1[i]);
}
}

@ -18,6 +18,7 @@
#include <math.h>
#include "nnacl/errorcode.h"
#include "nnacl/op_base.h"
#include "nnacl/nnacl_utils.h"
float IntersectionOverUnion(const BboxCorner *a, const BboxCorner *b) {
const float area_a = (a->ymax - a->ymin) * (a->xmax - a->xmin);
@ -147,11 +148,8 @@ int DetectionPostProcessFast(const int num_boxes, const int num_classes_with_bg,
for (int j = 0; j < max_classes_per_anchor; ++j) {
*((BboxCorner *)(output_boxes) + out_num) = *box;
output_scores[out_num] = input_scores[indexes[j]];
if (num_classes_with_bg != 0) {
output_classes[out_num++] = (float)(indexes[j] % num_classes_with_bg - first_class_index);
} else {
return NNACL_ERRCODE_DIVISOR_ZERO;
}
NNACL_ASSERT(num_classes_with_bg != 0);
output_classes[out_num++] = (float)(indexes[j] % num_classes_with_bg - first_class_index);
}
}
*output_num = (float)out_num;
@ -214,6 +212,7 @@ int DetectionPostProcessRegular(const int num_boxes, const int num_classes_with_
}
for (int i = 0; i < param->max_detections_ * param->max_classes_per_detection_; ++i) {
if (i < all_classes_output_num) {
NNACL_ASSERT(num_classes_with_bg != 0);
const int box_index = all_indexes[i] / num_classes_with_bg;
const int class_index = all_indexes[i] % num_classes_with_bg - first_class_index;
*((BboxCorner *)(output_boxes) + i) = *((BboxCorner *)(decoded_boxes) + box_index);

@ -33,11 +33,11 @@ int OneHot(const int *indices, float *output, const OneHotParameter *one_hot_par
float *output_ptr = output + i * depth * inner_size;
for (k = 0; k < inner_size; k++) {
int index = indices[i * inner_size + k];
if (index >= depth) {
return NNACL_ERRCODE_INDEX_OUT_OF_RANGE;
}
for (j = 0; j < depth; j++) {
*output_ptr = off_value;
if (index >= depth) {
return NNACL_ERRCODE_INDEX_OUT_OF_RANGE;
}
if (index == j) {
*output_ptr = on_value;
}

@ -65,12 +65,9 @@ int ROIPooling(float *in_ptr, float *out_ptr, const float *roi, float *max_c, in
hend = MSMIN(MSMAX(hend + roi_start_h, 0), height_);
wstart = MSMIN(MSMAX(wstart + roi_start_w, 0), width_);
wend = MSMIN(MSMAX(wend + roi_start_w, 0), width_);
bool is_empty = (hend <= hstart) || (wend <= wstart);
for (int j = 0; j < channels_; ++j) {
max_c[j] = -__FLT_MAX__;
bool is_empty = (hend <= hstart) || (wend <= wstart);
if (is_empty) {
max_c[j] = 0;
}
max_c[j] = is_empty ? 0 : -__FLT_MAX__;
}
int pooled_index = i * param->out_strides_[0] + ph * param->out_strides_[1] + pw * param->out_strides_[2];
int bd_index = hstart * param->in_strides_[1];

@ -189,8 +189,6 @@ int ReduceMeanInt8(const int outer_size, const int inner_size, const int axis_si
const int32_t *inner_src = outer_src + k;
int32_t *inner_dst = outer_dst + k;
int32_t sum = 0;
// (x - zp_in) * scale_in = mean[(item - zp_in) * scale_in]
// x = mean(item-zp_in) + zp_in
for (i = 0; i < axis_size; i++) {
int32_t tmp = inner_src[i * inner_size] - quant->in_zp_;
if (isAddOverflow(sum, tmp)) {
@ -226,14 +224,12 @@ int ReduceMeanLastAxis(const int outer_size, const int inner_size, const int axi
int8_t *inner_dst = outer_dst + k;
int32_t sum = 0;
for (i = 0; i < axis_size; i++) {
// y = mean(x-zp_in) * scale + zp_out
int32_t tmp = inner_src[i * inner_size] - quant->in_zp_;
if (isAddOverflow(tmp, sum)) {
return NNACL_ERRCODE_ADD_OVERFLOW;
}
sum += tmp;
}
// sum / num
int32_t mean = RoundingDivideByPOT(
SaturatingRoundingDoublingHighMul(sum * (1 << (unsigned int)quant->mean_left_shift_), quant->mean_multiplier_),
quant->mean_right_shift_);
@ -466,7 +462,6 @@ int ReduceProdLastAxis(const int outer_size, const int inner_size, const int axi
int8_t *inner_dst = outer_dst + k;
int32_t prod = 1;
for (i = 0; i < axis_size; i++) {
// quant_out = prod(quant_in-zp) * (scale_in^num/scale_out) + zp_out
int32_t tmp = inner_src[i * inner_size] - quant->in_zp_;
if (isMulOverflow(prod, tmp)) {
return NNACL_ERRCODE_MUL_OVERFLOW;
@ -541,7 +536,6 @@ int ReduceSumSquareLastAxis(const int outer_size, const int inner_size, const in
const int32_t *inner_src = outer_src + k;
int8_t *inner_dst = outer_dst + k;
int32_t sum = 0;
// quant_out = sum((quant_in - zp)^2) * scale_in^2 / scale_out + zp_out
for (i = 0; i < axis_size; i++) {
int32_t tmp;
if (isMulOverflow(inner_src[i * inner_size] - quant->in_zp_, inner_src[i * inner_size] - quant->in_zp_)) {

@ -23,7 +23,7 @@ void ReluXInt8(const int8_t *src, int length, int8_t *dst, ReluXQuantArg *arg) {
}
const int32_t input_val = src[i] - arg->input_arg.zp_;
const int32_t scaled_input = SaturatingRoundingDoublingHighMul(input_val, arg->input_multiplier_);
const int32_t shifted_input = RoundingDivideByPOT(scaled_input * (1 << arg->left_shift_), -arg->right_shift_);
const int32_t shifted_input = RoundingDivideByPOT(scaled_input * (1U << arg->left_shift_), -arg->right_shift_);
const int32_t output = shifted_input + arg->output_arg.zp_;
dst[i] = (int8_t)MSMIN(output, arg->quantized_output_max);
}

@ -183,7 +183,7 @@ void ComputeNearestNeighborInt(const int32_t pos, const int in_size, const int32
return;
}
*nearest = (in_size * pos) / new_size;
if (align_corners) {
if (align_corners && new_size != 1) {
*nearest = ((in_size - 1) * pos + (new_size - 1) / 2) / (new_size - 1);
}
*nearest = *nearest < in_size ? *nearest : in_size - 1;

@ -166,13 +166,15 @@ FusionPattern &FusionPattern::Finish() {
}
this->outputOpId = ids.front();
auto outputNode = GetPatternOp(this->outputOpId);
MS_ASSERT(outputNode != nullptr);
outputNode->isTail = true;
if (outputNode != nullptr) {
outputNode->isTail = true;
}
for (auto inputNodeId : inputNodeIds) {
auto inputNode = GetPatternOp(inputNodeId);
MS_ASSERT(inputNode != nullptr);
inputNode->isHead = true;
if (inputNode != nullptr) {
inputNode->isHead = true;
}
}
return *this;
}

@ -550,6 +550,10 @@ bool IsMultiOutputTensors(const FuncGraphPtr &graph, const AnfNodePtr &node) {
return 0;
}
auto output_node_list = GetRealNodeUsedList(graph, node);
if (output_node_list == nullptr) {
MS_LOG(ERROR) << "output node list is nullptr";
return false;
}
if (output_node_list->size() != 1) {
MS_LOG(DEBUG) << "fusion node has multi output nodes";
return true;

@ -47,23 +47,23 @@ bool NodePass::Run(const FuncGraphPtr &func_graph) {
if (seen_node.count(node) > 0 || !manager->all_nodes().contains(node)) {
continue;
}
(void) seen_node.insert(node);
(void)seen_node.insert(node);
AnfNodePtr new_node = Run(func_graph, node);
bool change = (new_node != nullptr);
if (new_node != nullptr && new_node != node) {
(void) manager->Replace(node, new_node);
(void) seen_node.erase(node);
(void)manager->Replace(node, new_node);
(void)seen_node.erase(node);
} else if (new_node == nullptr) {
new_node = node;
}
if (new_node && IsValueNode<FuncGraph>(new_node)) {
if (IsValueNode<FuncGraph>(new_node)) {
auto const_func_graph = GetValueNode<FuncGraphPtr>(new_node);
if (const_func_graph == nullptr) {
lite::ReturnCode::GetSingleReturnCode()->UpdateReturnCode(lite::RET_NULL_PTR);
return false;
}
to_process.push_back(const_func_graph->output());
} else if (new_node && new_node->isa<CNode>()) {
} else if (new_node->isa<CNode>()) {
if (IsGraphKernel(new_node)) {
to_process.push_back(new_node);
}
@ -73,7 +73,7 @@ bool NodePass::Run(const FuncGraphPtr &func_graph) {
return false;
}
auto inputs = cnode->inputs();
(void) to_process.insert(to_process.end(), inputs.begin(), inputs.end());
(void)to_process.insert(to_process.end(), inputs.begin(), inputs.end());
}
changes = changes || change;
if (changes) {

Loading…
Cancel
Save