Skip to content

Commit 43a8cef

Browse files
authored
[x86] fix ai-rank model (#7678) (#7690)
1 parent 9719d9f commit 43a8cef

File tree

3 files changed

+29
-29
lines changed

3 files changed

+29
-29
lines changed

lite/backends/x86/math/avx/conv_utils.cc

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -868,27 +868,26 @@ void im2col_s1<float>(const float* data_im,
868868
memset(data_col, 0, mem_size);
869869
#pragma omp parallel for
870870
for (int c = 0; c < channels; c++) {
871-
unsigned int data_im_z = c * in_channel_size;
872-
unsigned int data_col_z1 = c * output_plane_size;
871+
unsigned int data_im_z = static_cast<unsigned int>(c * in_channel_size);
872+
int data_col_z1 = c * output_plane_size;
873873
for (int ky = 0, h_offset = 0; ky < kernel_h;
874874
ky++, h_offset += dilation_h) {
875-
unsigned int data_col_z2 = ky * out_channel_size * kernel_w;
875+
int data_col_z2 = ky * out_channel_size * kernel_w;
876876
for (int kx = 0, w_offset = 0; kx < kernel_w;
877877
kx++, w_offset += dilation_w) {
878-
unsigned int data_col_z3 = kx * out_channel_size;
879-
unsigned int data_col_z = data_col_z1 + data_col_z2 + data_col_z3;
880-
unsigned int oh_begin = std::max(((pad_top - h_offset)), 0);
881-
unsigned int oh_end =
882-
std::min(((height + pad_bottom - h_offset)), output_h);
878+
int data_col_z3 = kx * out_channel_size;
879+
unsigned int data_col_z =
880+
static_cast<unsigned int>(data_col_z1 + data_col_z2 + data_col_z3);
881+
int oh_begin = std::max(((pad_top - h_offset)), 0); // always >= 0
882+
int oh_end = std::min(((height + pad_bottom - h_offset)), output_h);
883883
oh_end = std::max(oh_begin, oh_end);
884-
unsigned int ow_begin = std::max(((pad_left - w_offset)), 0);
885-
unsigned int ow_end =
886-
std::min(((width + pad_right - w_offset)), output_w);
884+
int ow_begin = std::max(((pad_left - w_offset)), 0);
885+
int ow_end = std::min(((width + pad_right - w_offset)), output_w);
887886
ow_end = std::max(ow_begin, ow_end);
888-
unsigned int ih = oh_begin - pad_top + h_offset;
887+
int ih = oh_begin - pad_top + h_offset;
889888
for (int oh = oh_begin; oh < oh_end; ++oh, ++ih) {
890-
unsigned int iw = ow_begin - pad_left + w_offset;
891-
unsigned int ow = ow_begin;
889+
int iw = ow_begin - pad_left + w_offset;
890+
int ow = ow_begin;
892891
unsigned int data_im_offset = data_im_z + ih * width;
893892
unsigned int data_col_offset = data_col_z + oh * output_w;
894893
const float* data_im_ptr = data_im + data_im_offset;
@@ -941,27 +940,28 @@ void im2col_s2<float>(const float* data_im,
941940
memset(data_col, 0, mem_size);
942941
#pragma omp parallel for
943942
for (int c = 0; c < channels; c++) {
944-
unsigned int data_im_z = c * in_channel_size;
945-
unsigned int data_col_z1 = c * output_plane_size;
943+
unsigned int data_im_z = static_cast<unsigned int>(c * in_channel_size);
944+
int data_col_z1 = c * output_plane_size;
946945
for (int ky = 0, h_offset = 0; ky < kernel_h;
947946
ky++, h_offset += dilation_h) {
948-
unsigned int data_col_z2 = ky * output_h * output_w * kernel_w;
947+
int data_col_z2 = ky * output_h * output_w * kernel_w;
949948
for (int kx = 0, w_offset = 0; kx < kernel_w;
950949
kx++, w_offset += dilation_w) {
951-
unsigned int data_col_z3 = kx * output_h * output_w;
952-
unsigned int data_col_z = data_col_z1 + data_col_z2 + data_col_z3;
953-
unsigned int oh_begin = std::max(((pad_top - h_offset + 1) / 2), 0);
954-
unsigned int oh_end =
950+
int data_col_z3 = kx * output_h * output_w;
951+
unsigned int data_col_z =
952+
static_cast<unsigned int>(data_col_z1 + data_col_z2 + data_col_z3);
953+
int oh_begin = std::max(((pad_top - h_offset + 1) / 2), 0);
954+
int oh_end =
955955
std::min(((height + pad_bottom - h_offset + 1) / 2), output_h);
956956
oh_end = std::max(oh_begin, oh_end);
957-
unsigned int ow_begin = std::max(((pad_left - w_offset + 1) / 2), 0);
958-
unsigned int ow_end =
957+
int ow_begin = std::max(((pad_left - w_offset + 1) / 2), 0);
958+
int ow_end =
959959
std::min(((width + pad_right - w_offset + 1) / 2), output_w);
960960
ow_end = std::max(ow_begin, ow_end);
961-
unsigned int ih = oh_begin * 2 - pad_top + h_offset;
961+
int ih = oh_begin * 2 - pad_top + h_offset;
962962
for (int oh = oh_begin; oh < oh_end; ++oh, ih += 2) {
963-
unsigned int iw = ow_begin * 2 - pad_left + w_offset;
964-
unsigned int ow = ow_begin;
963+
int iw = ow_begin * 2 - pad_left + w_offset;
964+
int ow = ow_begin;
965965
unsigned int data_im_offset = data_im_z + ih * width;
966966
unsigned int data_col_offset = data_col_z + oh * output_w;
967967
const float* data_im_ptr = data_im + data_im_offset;

lite/kernels/host/multiclass_nms_compute.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,12 +385,12 @@ class MulticlassNmsCompute : public KernelLite<TType, PType> {
385385

386386
if (return_rois_num) {
387387
auto* nms_rois_num = param.nms_rois_num;
388-
nms_rois_num->template mutable_data<int>();
388+
nms_rois_num->Resize({n});
389389
int* num_data = nms_rois_num->template mutable_data<int>();
390+
390391
for (int i = 1; i <= n; i++) {
391392
num_data[i - 1] = batch_starts[i] - batch_starts[i - 1];
392393
}
393-
nms_rois_num->Resize({n});
394394
}
395395

396396
LoD lod;

lite/operators/elementwise_ops.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ bool ElementwiseOp::InferShapeImpl() const {
7373
}
7474
for (size_t i = 0; i < max_dim; i++) {
7575
if (x_dims_array[i] == -1 || y_dims_array[i] == -1) {
76-
out_dims_array[i] = -1;
76+
out_dims_array[i] = 1;
7777
} else {
7878
out_dims_array[i] = (std::max)(x_dims_array[i], y_dims_array[i]);
7979
}

0 commit comments

Comments
 (0)