From: @zhaozhenlong Reviewed-by: @zhanghaibo5,@hangangqiang Signed-off-by: @hangangqiangtags/v1.1.0
| @@ -51,8 +51,8 @@ int ExpandDims::UnPackAttr(const Primitive &prim, const std::vector<AnfNodePtr> | |||
| return RET_ERROR; | |||
| } | |||
| // use axis instead of dim | |||
| if (inputs[1]->isa<ValueNode>()) { | |||
| auto axis_tensor = inputs[1]->cast<ValueNodePtr>(); | |||
| if (inputs.at(1)->isa<ValueNode>()) { | |||
| auto axis_tensor = inputs.at(1)->cast<ValueNodePtr>(); | |||
| int axis = CastToInt(axis_tensor->value()).front(); | |||
| attr->dim = axis; | |||
| } else { | |||
| @@ -76,7 +76,7 @@ int Fill::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> output | |||
| std::vector<int> output_shape; | |||
| for (size_t i = 0; i < GetDims().size(); i++) { | |||
| output_shape.push_back(GetDims()[i]); | |||
| output_shape.push_back(GetDims().at(i)); | |||
| } | |||
| output->set_shape(output_shape); | |||
| return RET_OK; | |||
| @@ -45,10 +45,10 @@ int Flatten::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> out | |||
| auto input_shape = input->shape(); | |||
| std::vector<int> output_shape(2); | |||
| output_shape[0] = input_shape[0]; | |||
| output_shape[1] = 1; | |||
| output_shape.at(0) = input_shape.at(0); | |||
| output_shape.at(1) = 1; | |||
| for (size_t i = 1; i < input_shape.size(); i++) { | |||
| output_shape[1] *= input_shape[i]; | |||
| output_shape.at(1) *= input_shape.at(i); | |||
| } | |||
| output->set_shape(output_shape); | |||
| return RET_OK; | |||
| @@ -44,10 +44,10 @@ int FlattenGrad::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> | |||
| auto input_shape = input->shape(); | |||
| std::vector<int> output_shape(2); | |||
| output_shape[0] = input_shape[0]; | |||
| output_shape[1] = 1; | |||
| output_shape.at(0) = input_shape.at(0); | |||
| output_shape.at(1) = 1; | |||
| for (size_t i = 1; i < input_shape.size(); i++) { | |||
| output_shape[1] *= input_shape[i]; | |||
| output_shape.at(1) *= input_shape.at(i); | |||
| } | |||
| output->set_shape(output_shape); | |||
| return RET_OK; | |||
| @@ -65,7 +65,7 @@ int FullConnection::InferShape(std::vector<lite::Tensor *> inputs_, std::vector< | |||
| MS_ASSERT(this->primitive_ != nullptr); | |||
| auto input0 = inputs_.front(); | |||
| MS_ASSERT(input0 != nullptr); | |||
| auto input1 = inputs_[1]; | |||
| auto input1 = inputs_.at(1); | |||
| MS_ASSERT(input1 != nullptr); | |||
| auto output = outputs_.front(); | |||
| MS_ASSERT(output != nullptr); | |||
| @@ -83,34 +83,34 @@ int FullConnection::InferShape(std::vector<lite::Tensor *> inputs_, std::vector< | |||
| int new_k = 1; | |||
| if (GetUseAxis()) { | |||
| for (size_t i = GetAxis(); i < input0->shape().size(); ++i) { | |||
| new_k *= input0->shape()[i]; | |||
| new_k *= input0->shape().at(i); | |||
| } | |||
| if (new_k != input1->shape()[1]) { | |||
| if (new_k != input1->shape().at(1)) { | |||
| MS_LOG(ERROR) << "Input1 size invalid"; | |||
| return RET_INPUT_TENSOR_ERROR; | |||
| } | |||
| } else { | |||
| new_k = input1->shape()[1]; | |||
| new_k = input1->shape().at(1); | |||
| } | |||
| if (GetHasBias()) { | |||
| if (inputs_[2]->shape()[0] != input1->shape()[0]) { | |||
| if (inputs_.at(2)->shape().at(0) != input1->shape().at(0)) { | |||
| MS_LOG(ERROR) << "bias size invalid"; | |||
| return RET_INPUT_TENSOR_ERROR; | |||
| } | |||
| } | |||
| std::vector<int> out_shape{inputs_[0]->shape()}; | |||
| std::vector<int> out_shape{inputs_.at(0)->shape()}; | |||
| if (GetUseAxis()) { | |||
| out_shape.resize(GetAxis() + 1); | |||
| out_shape[GetAxis()] = input1->shape()[0]; | |||
| out_shape.at(GetAxis()) = input1->shape().at(0); | |||
| } else { | |||
| int total = 1; | |||
| for (size_t i = 0; i < input0->shape().size(); ++i) { | |||
| total *= input0->shape()[i]; | |||
| total *= input0->shape().at(i); | |||
| } | |||
| out_shape.resize(2); | |||
| auto batch_size = total / new_k; | |||
| out_shape[0] = batch_size; | |||
| out_shape[1] = input1->shape()[0]; | |||
| out_shape.at(0) = batch_size; | |||
| out_shape.at(1) = input1->shape().at(0); | |||
| } | |||
| output->set_shape(out_shape); | |||
| output->set_data_type(input0->data_type()); | |||
| @@ -57,8 +57,8 @@ int Gather::UnPackAttr(const Primitive &prim, const std::vector<AnfNodePtr> &inp | |||
| gather_attr = nullptr; | |||
| return RET_ERROR; | |||
| } | |||
| if (inputs[2]->isa<ValueNode>()) { | |||
| ValueNodePtr axis_tensor = inputs[2]->cast<ValueNodePtr>(); | |||
| if (inputs.at(2)->isa<ValueNode>()) { | |||
| ValueNodePtr axis_tensor = inputs.at(2)->cast<ValueNodePtr>(); | |||
| int axis = CastToInt(axis_tensor->value()).front(); | |||
| gather_attr->axis = axis; | |||
| } else { | |||
| @@ -137,7 +137,7 @@ int Gather::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> outp | |||
| std::vector<int> out_shape{in_shape}; | |||
| out_shape.erase(out_shape.begin() + axis); | |||
| for (int i = indices_rank - 1; i >= 0; --i) { | |||
| out_shape.insert(out_shape.begin() + axis, indices_shape[i]); | |||
| out_shape.insert(out_shape.begin() + axis, indices_shape.at(i)); | |||
| } | |||
| output->set_shape(out_shape); | |||
| return RET_OK; | |||
| @@ -72,17 +72,17 @@ int GatherNd::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> ou | |||
| int in_rank = in_shape.size(); | |||
| auto indices_shape = indices->shape(); | |||
| int indices_rank = indices_shape.size(); | |||
| if (indices_shape[indices_rank - 1] > in_rank) { | |||
| if (indices_shape.at(indices_rank - 1) > in_rank) { | |||
| MS_LOG(ERROR) << "Input of indices data is error!"; | |||
| return RET_ERROR; | |||
| } | |||
| std::vector<int> out_shape; | |||
| int i = 0; | |||
| for (i = 0; i < indices_rank - 1; ++i) { | |||
| out_shape.emplace_back(indices_shape[i]); | |||
| out_shape.emplace_back(indices_shape.at(i)); | |||
| } | |||
| for (i = indices_shape[indices_rank - 1]; i < in_rank; ++i) { | |||
| out_shape.emplace_back(in_shape[i]); | |||
| for (i = indices_shape.at(indices_rank - 1); i < in_rank; ++i) { | |||
| out_shape.emplace_back(in_shape.at(i)); | |||
| } | |||
| output->set_shape(out_shape); | |||
| return RET_OK; | |||
| @@ -97,7 +97,7 @@ int LayerNorm::InferShape(std::vector<lite::Tensor *> inputs_, std::vector<lite: | |||
| } | |||
| size_t first_index = input_shape.size() - normalized_shape.size(); | |||
| for (size_t i = first_index; i < input_shape.size(); ++i) { | |||
| if (input_shape[i] != normalized_shape[i - first_index]) { | |||
| if (input_shape.at(i) != normalized_shape.at(i - first_index)) { | |||
| MS_LOG(INFO) << "normalized_shape attr invalid"; | |||
| return RET_PARAM_INVALID; | |||
| } | |||
| @@ -59,13 +59,13 @@ int Lstm::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> output | |||
| } | |||
| auto input = inputs_.front(); | |||
| MS_ASSERT(input != nullptr); | |||
| auto weight_i = inputs_[1]; | |||
| MS_ASSERT(input != nullptr); | |||
| auto weight_i = inputs_.at(1); | |||
| MS_ASSERT(weight_i != nullptr); | |||
| auto output = outputs_.front(); | |||
| MS_ASSERT(output != nullptr); | |||
| for (int i = 0; i < kLstmOutputNum; i++) { | |||
| outputs_[i]->set_data_type(input->data_type()); | |||
| outputs_[i]->set_format(input->format()); | |||
| outputs_.at(i)->set_data_type(input->data_type()); | |||
| outputs_.at(i)->set_format(input->format()); | |||
| } | |||
| if (!infer_flag()) { | |||
| return RET_OK; | |||
| @@ -125,7 +125,7 @@ int MatMul::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> outp | |||
| del_end = true; | |||
| } | |||
| for (size_t i = 0; i < (a_shape.size() - 2) && i < (b_shape.size() - 2); ++i) { | |||
| if (a_shape[a_shape.size() - 3 - i] != b_shape[b_shape.size() - 3 - i]) { | |||
| if (a_shape.at(a_shape.size() - 3 - i) != b_shape.at(b_shape.size() - 3 - i)) { | |||
| MS_LOG(ERROR) << "Op MatMul's dimensions must be equal"; | |||
| return RET_INPUT_TENSOR_ERROR; | |||
| } | |||
| @@ -103,7 +103,7 @@ int Mean::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> output | |||
| for (size_t i = 0; i < in_shape.size(); i++) { | |||
| bool reduce_axis = false; | |||
| for (size_t idx = 0; idx < num_axes; ++idx) { | |||
| if (static_cast<size_t>(axes[idx]) == i) { | |||
| if (static_cast<size_t>(axes.at(idx)) == i) { | |||
| reduce_axis = true; | |||
| break; | |||
| } | |||
| @@ -113,7 +113,7 @@ int Mean::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> output | |||
| out_shape.push_back(1); | |||
| } | |||
| } else { | |||
| out_shape.push_back(in_shape[i]); | |||
| out_shape.push_back(in_shape.at(i)); | |||
| } | |||
| } | |||
| output->set_shape(out_shape); | |||
| @@ -72,8 +72,8 @@ PrimitiveC *OnesLikeCreator(const schema::Primitive *primitive) { | |||
| Registry OnesLikeRegistry(schema::PrimitiveType_OnesLike, OnesLikeCreator); | |||
| #endif | |||
| int OnesLike::InferShape(std::vector<Tensor *> inputs_, std::vector<Tensor *> outputs_) { | |||
| Tensor *x = inputs_[0]; | |||
| Tensor *out = outputs_[0]; | |||
| Tensor *x = inputs_.at(0); | |||
| Tensor *out = outputs_.at(0); | |||
| std::vector<int> x_shape = x->shape(); | |||
| std::vector<int> output_shape(x_shape.size()); | |||
| output_shape.assign(x_shape.begin(), x_shape.end()); | |||
| @@ -110,7 +110,7 @@ int Pad::InferShape(std::vector<Tensor *> inputs, std::vector<Tensor *> outputs) | |||
| MS_ASSERT(input->shape().size() <= 4); | |||
| for (size_t i = 0; i < input_shape.size(); i++) { | |||
| auto paddings_index = i; | |||
| auto shape = input_shape[i] + paddings[2 * paddings_index] + paddings[2 * paddings_index + 1]; | |||
| auto shape = input_shape.at(i) + paddings.at(2 * paddings_index) + paddings.at(2 * paddings_index + 1); | |||
| output_shape.push_back(shape); | |||
| } | |||
| @@ -111,12 +111,12 @@ int Pooling::UnPackAttr(const Primitive &prim, const std::vector<AnfNodePtr> &in | |||
| } | |||
| auto kernel_size = CastToInt(prim.GetAttr("ksize")); | |||
| attr->windowH = kernel_size[2]; | |||
| attr->windowW = kernel_size[3]; | |||
| attr->windowH = kernel_size.at(2); | |||
| attr->windowW = kernel_size.at(3); | |||
| auto stride = CastToInt(prim.GetAttr("strides")); | |||
| attr->strideH = stride[2]; | |||
| attr->strideW = stride[3]; | |||
| attr->strideH = stride.at(2); | |||
| attr->strideW = stride.at(3); | |||
| this->primitive_->value.value = attr; | |||
| if (this->primitive_->value.value == nullptr) { | |||
| MS_LOG(ERROR) << "primitive value is nullptr"; | |||
| @@ -100,12 +100,12 @@ int PoolingGrad::UnPackAttr(const Primitive &prim, const std::vector<AnfNodePtr> | |||
| } | |||
| auto kernel_size = CastToInt(prim.GetAttr("ksize")); | |||
| attr->windowH = kernel_size[2]; | |||
| attr->windowW = kernel_size[3]; | |||
| attr->windowH = kernel_size.at(2); | |||
| attr->windowW = kernel_size.at(3); | |||
| auto stride = CastToInt(prim.GetAttr("strides")); | |||
| attr->strideH = stride[2]; | |||
| attr->strideW = stride[3]; | |||
| attr->strideH = stride.at(2); | |||
| attr->strideW = stride.at(3); | |||
| this->primitive_->value.value = attr; | |||
| if (this->primitive_->value.value == nullptr) { | |||
| MS_LOG(ERROR) << "primitive value is nullptr"; | |||
| @@ -103,14 +103,14 @@ Registry PowerRegistry(schema::PrimitiveType_Power, PowerCreator); | |||
| int Power::InferShape(std::vector<Tensor *> inputs, std::vector<Tensor *> outputs) { | |||
| MS_ASSERT(this->primitive_ != nullptr); | |||
| auto x_tensor = inputs[0]; | |||
| auto x_tensor = inputs.at(0); | |||
| MS_ASSERT(x_tensor != nullptr); | |||
| Tensor *exp_tensor = nullptr; | |||
| if (inputs.size() == 2) { | |||
| exp_tensor = inputs[1]; | |||
| exp_tensor = inputs.at(1); | |||
| MS_ASSERT(exp_tensor != nullptr); | |||
| } | |||
| auto output_tensor = outputs[0]; | |||
| auto output_tensor = outputs.at(0); | |||
| MS_ASSERT(output_tensor != nullptr); | |||
| output_tensor->set_data_type(x_tensor->data_type()); | |||
| output_tensor->set_format(x_tensor->format()); | |||
| @@ -119,7 +119,7 @@ int Power::InferShape(std::vector<Tensor *> inputs, std::vector<Tensor *> output | |||
| } | |||
| if (exp_tensor != nullptr) { | |||
| if ((exp_tensor->shape().size() > 1 && exp_tensor->shape() != x_tensor->shape()) || | |||
| (exp_tensor->shape().size() == 1 && exp_tensor->shape()[0] != 1) || | |||
| (exp_tensor->shape().size() == 1 && exp_tensor->shape().at(0) != 1) || | |||
| exp_tensor->data_type() != x_tensor->data_type()) { | |||
| MS_LOG(ERROR) << "Power inputs shape or type is not equal!"; | |||
| return RET_INPUT_TENSOR_ERROR; | |||
| @@ -331,7 +331,7 @@ void PrimitiveC::GetAttrDataFromInput(const AnfNodePtr &inputNode, std::vector<i | |||
| auto tuple = val->cast<ValueTuplePtr>(); | |||
| MS_ASSERT(tuple != nullptr); | |||
| for (size_t i = 0; i < tuple->size(); i++) { | |||
| auto elem = tuple->value()[i]; | |||
| auto elem = tuple->value().at(i); | |||
| MS_ASSERT(elem != nullptr); | |||
| data->emplace_back(CastToInt(elem).front()); | |||
| } | |||
| @@ -349,7 +349,7 @@ void PrimitiveC::set_input_quant_params(const std::vector<std::vector<schema::Qu | |||
| void PrimitiveC::set_input_quant_param(const size_t &index, const std::vector<schema::QuantParamT> &input_quant_param) { | |||
| MS_ASSERT(index < this->input_quant_param_.size()); | |||
| this->input_quant_param_[index] = input_quant_param; | |||
| this->input_quant_param_.at(index) = input_quant_param; | |||
| } | |||
| void PrimitiveC::set_output_quant_params(const std::vector<std::vector<schema::QuantParamT>> &output_quant_param) { | |||
| @@ -359,7 +359,7 @@ void PrimitiveC::set_output_quant_params(const std::vector<std::vector<schema::Q | |||
| void PrimitiveC::set_output_quant_param(const size_t &index, | |||
| const std::vector<schema::QuantParamT> &output_quant_param) { | |||
| MS_ASSERT(index < this->output_quant_param_.size()); | |||
| this->output_quant_param_[index] = output_quant_param; | |||
| this->output_quant_param_.at(index) = output_quant_param; | |||
| } | |||
| bool PrimitiveC::IsInputQuantParamsInited() { | |||
| @@ -58,11 +58,11 @@ int PriorBoxCPUKernel::Init() { | |||
| int PriorBoxCPUKernel::ReSize() { return GeneratePriorBox(); } | |||
| int PriorBoxCPUKernel::GeneratePriorBox() { | |||
| const int fmap_w = in_tensors_[0]->Width(); | |||
| const int fmap_h = in_tensors_[0]->Height(); | |||
| const int fmap_w = in_tensors_.at(0)->Width(); | |||
| const int fmap_h = in_tensors_.at(0)->Height(); | |||
| const int image_w = prior_box_param_->image_size_w > 0 ? prior_box_param_->image_size_w : in_tensors_[1]->Width(); | |||
| const int image_h = prior_box_param_->image_size_h > 0 ? prior_box_param_->image_size_h : in_tensors_[1]->Height(); | |||
| const int image_w = prior_box_param_->image_size_w > 0 ? prior_box_param_->image_size_w : in_tensors_.at(1)->Width(); | |||
| const int image_h = prior_box_param_->image_size_h > 0 ? prior_box_param_->image_size_h : in_tensors_.at(1)->Height(); | |||
| const float step_w = | |||
| prior_box_param_->step_w > 0.0f ? prior_box_param_->step_w : static_cast<float>(image_w) / fmap_w; | |||
| @@ -54,10 +54,10 @@ void FullconnectionFP16CPUKernel::FreeTmpBuffer() { | |||
| int FullconnectionFP16CPUKernel::ReSize() { | |||
| FreeTmpBuffer(); | |||
| int row = 1; | |||
| for (size_t i = 0; i < out_tensors_[0]->shape().size() - 1; ++i) row *= (out_tensors_[0]->shape())[i]; | |||
| for (size_t i = 0; i < out_tensors_.at(0)->shape().size() - 1; ++i) row *= (out_tensors_.at(0)->shape())[i]; | |||
| fc_param_->row_ = row; | |||
| fc_param_->col_ = out_tensors_[0]->shape().back(); | |||
| fc_param_->deep_ = (in_tensors_[1]->shape())[1]; | |||
| fc_param_->col_ = out_tensors_.at(0)->shape().back(); | |||
| fc_param_->deep_ = (in_tensors_.at(1)->shape()).at(1); | |||
| fc_param_->row_16_ = UP_ROUND(fc_param_->row_, C16NUM); | |||
| fc_param_->col_8_ = UP_ROUND(fc_param_->col_, C8NUM); | |||
| thread_count_ = MSMIN(thread_count_, UP_DIV(fc_param_->col_, C8NUM)); | |||
| @@ -89,21 +89,21 @@ int FullconnectionFP16CPUKernel::ReSize() { | |||
| } | |||
| memset(b_pack_ptr_, 0, b_pack_col * fc_param_->deep_ * sizeof(float16_t)); | |||
| fc_param_->b_const_ = (in_tensors_[1]->data_c() != nullptr); | |||
| fc_param_->b_const_ = (in_tensors_.at(1)->data_c() != nullptr); | |||
| if (fc_param_->b_const_) { | |||
| if (in_tensors_[1]->data_type() == kNumberTypeFloat32) { | |||
| if (in_tensors_.at(1)->data_type() == kNumberTypeFloat32) { | |||
| if (is_vector_input_) { | |||
| Float32ToFloat16(reinterpret_cast<float *>(in_tensors_[1]->data_c()), b_pack_ptr_, | |||
| Float32ToFloat16(reinterpret_cast<float *>(in_tensors_.at(1)->data_c()), b_pack_ptr_, | |||
| fc_param_->col_ * fc_param_->deep_); | |||
| } else { | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_[1]->data_c()), b_pack_ptr_); | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_.at(1)->data_c()), b_pack_ptr_); | |||
| } | |||
| } else { | |||
| if (is_vector_input_) { | |||
| memcpy(b_pack_ptr_, reinterpret_cast<float16_t *>(in_tensors_[1]->data_c()), | |||
| memcpy(b_pack_ptr_, reinterpret_cast<float16_t *>(in_tensors_.at(1)->data_c()), | |||
| fc_param_->col_ * fc_param_->deep_ * sizeof(float16_t)); | |||
| } else { | |||
| InitMatrixB(reinterpret_cast<float16_t *>(in_tensors_[1]->data_c()), b_pack_ptr_); | |||
| InitMatrixB(reinterpret_cast<float16_t *>(in_tensors_.at(1)->data_c()), b_pack_ptr_); | |||
| } | |||
| } | |||
| b_ptr_ = b_pack_ptr_; | |||
| @@ -116,10 +116,10 @@ int FullconnectionFP16CPUKernel::ReSize() { | |||
| return RET_MEMORY_FAILED; | |||
| } | |||
| memset(bias_ptr_, 0, b_pack_col * sizeof(float16_t)); | |||
| Float32ToFloat16(reinterpret_cast<float *>(in_tensors_[2]->data_c()), bias_ptr_, fc_param_->col_); | |||
| Float32ToFloat16(reinterpret_cast<float *>(in_tensors_.at(2)->data_c()), bias_ptr_, fc_param_->col_); | |||
| } | |||
| if (out_tensors_[0]->data_type() == kNumberTypeFloat32) { | |||
| if (out_tensors_.at(0)->data_type() == kNumberTypeFloat32) { | |||
| output_fp16_ = | |||
| reinterpret_cast<float16_t *>(ctx_->allocator->Malloc(fc_param_->row_ * fc_param_->col_ * sizeof(float16_t))); | |||
| if (output_fp16_ == nullptr) { | |||
| @@ -183,43 +183,43 @@ int FcFP16Run(void *cdata, int task_id) { | |||
| } | |||
| int FullconnectionFP16CPUKernel::Run() { | |||
| auto out_tensor = out_tensors_[0]; | |||
| auto out_tensor = out_tensors_.at(0); | |||
| if (out_tensor->data_type() == kNumberTypeFloat32) { | |||
| output_ptr_ = output_fp16_; | |||
| } else { | |||
| output_ptr_ = reinterpret_cast<float16_t *>(out_tensor->data_c()); | |||
| } | |||
| if (in_tensors_[0]->data_type() == kNumberTypeFloat32) { | |||
| if (in_tensors_.at(0)->data_type() == kNumberTypeFloat32) { | |||
| if (is_vector_input_) { | |||
| Float32ToFloat16(reinterpret_cast<float *>(in_tensors_[0]->data_c()), a_pack_ptr_, fc_param_->deep_); | |||
| Float32ToFloat16(reinterpret_cast<float *>(in_tensors_.at(0)->data_c()), a_pack_ptr_, fc_param_->deep_); | |||
| } else { | |||
| InitMatrixA(reinterpret_cast<float *>(in_tensors_[0]->data_c()), a_pack_ptr_); | |||
| InitMatrixA(reinterpret_cast<float *>(in_tensors_.at(0)->data_c()), a_pack_ptr_); | |||
| } | |||
| a_ptr_ = a_pack_ptr_; | |||
| } else { | |||
| if (is_vector_input_) { | |||
| a_ptr_ = reinterpret_cast<float16_t *>(in_tensors_[0]->data_c()); | |||
| a_ptr_ = reinterpret_cast<float16_t *>(in_tensors_.at(0)->data_c()); | |||
| } else { | |||
| InitMatrixA(reinterpret_cast<float16_t *>(in_tensors_[0]->data_c()), a_pack_ptr_); | |||
| InitMatrixA(reinterpret_cast<float16_t *>(in_tensors_.at(0)->data_c()), a_pack_ptr_); | |||
| a_ptr_ = a_pack_ptr_; | |||
| } | |||
| } | |||
| if (!fc_param_->b_const_) { | |||
| if (in_tensors_[1]->data_type() == kNumberTypeFloat32) { | |||
| if (in_tensors_.at(1)->data_type() == kNumberTypeFloat32) { | |||
| if (is_vector_input_) { | |||
| Float32ToFloat16(reinterpret_cast<float *>(in_tensors_[1]->data_c()), b_pack_ptr_, | |||
| Float32ToFloat16(reinterpret_cast<float *>(in_tensors_.at(1)->data_c()), b_pack_ptr_, | |||
| fc_param_->col_ * fc_param_->deep_); | |||
| } else { | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_[1]->data_c()), b_pack_ptr_); | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_.at(1)->data_c()), b_pack_ptr_); | |||
| } | |||
| b_ptr_ = b_pack_ptr_; | |||
| } else { | |||
| if (is_vector_input_) { | |||
| b_ptr_ = reinterpret_cast<float16_t *>(in_tensors_[1]->data_c()); | |||
| b_ptr_ = reinterpret_cast<float16_t *>(in_tensors_.at(1)->data_c()); | |||
| } else { | |||
| InitMatrixB(reinterpret_cast<float16_t *>(in_tensors_[1]->data_c()), b_pack_ptr_); | |||
| InitMatrixB(reinterpret_cast<float16_t *>(in_tensors_.at(1)->data_c()), b_pack_ptr_); | |||
| b_ptr_ = b_pack_ptr_; | |||
| } | |||
| } | |||
| @@ -28,7 +28,7 @@ using mindspore::schema::PrimitiveType_Conv2D; | |||
| namespace mindspore::kernel { | |||
| int GroupConvolutionFP16CPUKernel::Init() { | |||
| for (int i = 0; i < group_num_; ++i) { | |||
| auto ret = group_convs_[i]->Init(); | |||
| auto ret = group_convs_.at(i)->Init(); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "Sub kernel init failed."; | |||
| return ret; | |||
| @@ -40,7 +40,7 @@ int GroupConvolutionFP16CPUKernel::Init() { | |||
| int GroupConvolutionFP16CPUKernel::ReSize() { | |||
| for (int i = 0; i < group_num_; ++i) { | |||
| auto ret = group_convs_[i]->ReSize(); | |||
| auto ret = group_convs_.at(i)->ReSize(); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "Sub kernel resize failed."; | |||
| return RET_ERROR; | |||
| @@ -94,7 +94,7 @@ int GroupConvolutionFP16CPUKernel::PreProcess() { | |||
| int in_w = conv_param_->input_w_; | |||
| int in_c = conv_param_->input_channel_; | |||
| in_shape = {in_batch, in_h, in_w, in_c}; | |||
| auto sub_kernel_in_tensor = group_convs_[i]->in_tensors().front(); | |||
| auto sub_kernel_in_tensor = group_convs_.at(i)->in_tensors().front(); | |||
| sub_kernel_in_tensor->set_shape(in_shape); | |||
| ret = sub_kernel_in_tensor->MallocData(); | |||
| if (ret != RET_OK) { | |||
| @@ -141,9 +141,9 @@ int GroupConvolutionFP16CPUKernel::SeparateInput(int group_id) { | |||
| int in_plane = in_h * in_w; | |||
| int sub_in_channel = conv_param_->input_channel_; | |||
| int ori_in_channel = sub_in_channel * group_num_; | |||
| auto sub_in_data = group_convs_[group_id]->in_tensors().front()->data_c(); | |||
| auto sub_in_data = group_convs_.at(group_id)->in_tensors().front()->data_c(); | |||
| auto in_data_type = in_tensors_.front()->data_type(); | |||
| auto sub_in_data_type = group_convs_[group_id]->in_tensors().front()->data_type(); | |||
| auto sub_in_data_type = group_convs_.at(group_id)->in_tensors().front()->data_type(); | |||
| if (in_data_type != sub_in_data_type) { | |||
| MS_LOG(ERROR) << "data type of sub conv kernel input should be the same as origin input's."; | |||
| return RET_ERROR; | |||
| @@ -183,7 +183,7 @@ void GroupConvolutionFP16CPUKernel::PostConcat(int group_id) { | |||
| int out_plane = out_h * out_w; | |||
| int sub_out_channel = conv_param_->output_channel_; | |||
| int ori_out_channel = sub_out_channel * group_num_; | |||
| auto sub_out_data = reinterpret_cast<float16_t *>(group_convs_[group_id]->out_tensors().front()->data_c()); | |||
| auto sub_out_data = reinterpret_cast<float16_t *>(group_convs_.at(group_id)->out_tensors().front()->data_c()); | |||
| MS_ASSERT(sub_out_data); | |||
| float16_t *src_ptr = sub_out_data; | |||
| float16_t *dst_ptr = ori_out_data_ + group_id * sub_out_channel; | |||
| @@ -206,7 +206,7 @@ int GroupConvolutionFP16CPUKernel::Run() { | |||
| return ret; | |||
| } | |||
| // sun kernels run | |||
| ret = group_convs_[i]->Run(); | |||
| ret = group_convs_.at(i)->Run(); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "sub kernel " << i << " execute failed."; | |||
| return ret; | |||
| @@ -262,7 +262,7 @@ int MatmulFP16Run(void *cdata, int task_id) { | |||
| } | |||
| int MatmulFP16CPUKernel::Run() { | |||
| auto out_tensor = out_tensors_[0]; | |||
| auto out_tensor = out_tensors_.at(0); | |||
| auto ret = MallocFp16Output(); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "Matmul MallocFp16Output failed"; | |||
| @@ -280,10 +280,10 @@ int MatmulFP16CPUKernel::Run() { | |||
| MS_LOG(ERROR) << "Matmul fp16 malloc matrix A buffer failed"; | |||
| return RET_ERROR; | |||
| } | |||
| if (in_tensors_[0]->data_type() == kNumberTypeFloat32) { | |||
| InitMatrixA(reinterpret_cast<float *>(in_tensors_[0]->data_c()), a_pack_ptr_); | |||
| if (in_tensors_.at(0)->data_type() == kNumberTypeFloat32) { | |||
| InitMatrixA(reinterpret_cast<float *>(in_tensors_.at(0)->data_c()), a_pack_ptr_); | |||
| } else { | |||
| InitMatrixA(reinterpret_cast<float16_t *>(in_tensors_[0]->data_c()), a_pack_ptr_); | |||
| InitMatrixA(reinterpret_cast<float16_t *>(in_tensors_.at(0)->data_c()), a_pack_ptr_); | |||
| } | |||
| } | |||
| if (!params_->b_const_) { | |||
| @@ -292,10 +292,10 @@ int MatmulFP16CPUKernel::Run() { | |||
| MS_LOG(ERROR) << "Matmul fp16 malloc matrix B buffer failed"; | |||
| return RET_ERROR; | |||
| } | |||
| if (in_tensors_[1]->data_type() == kNumberTypeFloat32) { | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_[1]->data_c()), b_pack_ptr_); | |||
| if (in_tensors_.at(1)->data_type() == kNumberTypeFloat32) { | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_.at(1)->data_c()), b_pack_ptr_); | |||
| } else { | |||
| InitMatrixB(reinterpret_cast<float16_t *>(in_tensors_[1]->data_c()), b_pack_ptr_); | |||
| InitMatrixB(reinterpret_cast<float16_t *>(in_tensors_.at(1)->data_c()), b_pack_ptr_); | |||
| } | |||
| } | |||
| for (int i = 0; i < params_->batch; ++i) { | |||
| @@ -115,14 +115,14 @@ int QuantDTypeCastFP16Run(void *cdata, int task_id) { | |||
| } | |||
| int QuantDTypeCastFp16CPUKernel::Run() { | |||
| if (in_tensors_[0]->data_type() == TypeId::kNumberTypeInt8 && | |||
| out_tensors_[0]->data_type() == TypeId::kNumberTypeFloat16) { | |||
| int8_ptr_ = reinterpret_cast<int8_t *>(in_tensors_[0]->data_c()); | |||
| float16_ptr_ = reinterpret_cast<float16_t *>(out_tensors_[0]->data_c()); | |||
| } else if (in_tensors_[0]->data_type() == TypeId::kNumberTypeFloat16 && | |||
| out_tensors_[0]->data_type() == TypeId::kNumberTypeInt8) { | |||
| float16_ptr_ = reinterpret_cast<float16_t *>(in_tensors_[0]->data_c()); | |||
| int8_ptr_ = reinterpret_cast<int8_t *>(out_tensors_[0]->data_c()); | |||
| if (in_tensors_.at(0)->data_type() == TypeId::kNumberTypeInt8 && | |||
| out_tensors_.at(0)->data_type() == TypeId::kNumberTypeFloat16) { | |||
| int8_ptr_ = reinterpret_cast<int8_t *>(in_tensors_.at(0)->data_c()); | |||
| float16_ptr_ = reinterpret_cast<float16_t *>(out_tensors_.at(0)->data_c()); | |||
| } else if (in_tensors_.at(0)->data_type() == TypeId::kNumberTypeFloat16 && | |||
| out_tensors_.at(0)->data_type() == TypeId::kNumberTypeInt8) { | |||
| float16_ptr_ = reinterpret_cast<float16_t *>(in_tensors_.at(0)->data_c()); | |||
| int8_ptr_ = reinterpret_cast<int8_t *>(out_tensors_.at(0)->data_c()); | |||
| } else { | |||
| MS_LOG(ERROR) << "QuantDTypeCastFp16 not support input or output type"; | |||
| return RET_ERROR; | |||
| @@ -48,14 +48,14 @@ int ExpandDimsCPUKernel::DoExpandDims(int task_id) { | |||
| return RET_OK; | |||
| } | |||
| int offset = task_id * thread_sz_stride_; | |||
| if (this->in_tensors_[0]->data_type() == kNumberTypeFloat32) { | |||
| if (this->in_tensors_.at(0)->data_type() == kNumberTypeFloat32) { | |||
| int ret = ExpandDims(reinterpret_cast<float *>(in_ptr_) + offset, reinterpret_cast<float *>(out_ptr_) + offset, | |||
| size * sizeof(float)); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "ExpandDimsRun error task_id[" << task_id << "] error_code[" << ret << "]"; | |||
| return ret; | |||
| } | |||
| } else if (this->in_tensors_[0]->data_type() == kNumberTypeInt8) { | |||
| } else if (this->in_tensors_.at(0)->data_type() == kNumberTypeInt8) { | |||
| int ret = ExpandDims(reinterpret_cast<int8_t *>(in_ptr_) + offset, reinterpret_cast<int8_t *>(out_ptr_) + offset, | |||
| size * sizeof(int8_t)); | |||
| if (ret != RET_OK) { | |||
| @@ -35,17 +35,17 @@ int FlattenCPUKernel::Init() { | |||
| } | |||
| int FlattenCPUKernel::ReSize() { | |||
| auto output_shape = out_tensors_[0]->shape(); | |||
| auto output_shape = out_tensors_.at(0)->shape(); | |||
| flatten_param_->size = sizeof(float); | |||
| for (size_t i = 0; i < output_shape.size(); i++) { | |||
| flatten_param_->size *= output_shape[i]; | |||
| flatten_param_->size *= output_shape.at(i); | |||
| } | |||
| return RET_OK; | |||
| } | |||
| int FlattenCPUKernel::Run() { | |||
| auto input = reinterpret_cast<float *>(in_tensors_[0]->MutableData()); | |||
| auto output = reinterpret_cast<float *>(out_tensors_[0]->MutableData()); | |||
| auto input = reinterpret_cast<float *>(in_tensors_.at(0)->MutableData()); | |||
| auto output = reinterpret_cast<float *>(out_tensors_.at(0)->MutableData()); | |||
| Flatten(input, output, flatten_param_); | |||
| return RET_OK; | |||
| } | |||
| @@ -44,12 +44,12 @@ void FullconnectionCPUKernel::FreeBuf() { | |||
| int FullconnectionCPUKernel::ReSize() { | |||
| FreeBuf(); | |||
| int row = 1; | |||
| for (size_t i = 0; i < out_tensors_[0]->shape().size() - 1; ++i) { | |||
| row *= (out_tensors_[0]->shape())[i]; | |||
| for (size_t i = 0; i < out_tensors_.at(0)->shape().size() - 1; ++i) { | |||
| row *= (out_tensors_.at(0)->shape())[i]; | |||
| } | |||
| fc_param_->row_ = row; | |||
| fc_param_->col_ = out_tensors_[0]->shape().back(); | |||
| fc_param_->deep_ = (in_tensors_[1]->shape())[1]; | |||
| fc_param_->col_ = out_tensors_.at(0)->shape().back(); | |||
| fc_param_->deep_ = (in_tensors_.at(1)->shape()).at(1); | |||
| fc_param_->row_12_ = UP_ROUND(fc_param_->row_, C12NUM); | |||
| fc_param_->col_8_ = UP_ROUND(fc_param_->col_, C8NUM); | |||
| @@ -98,14 +98,14 @@ int FullconnectionCPUKernel::ReSize() { | |||
| } | |||
| memset(b_pack_ptr_, 0, col_tmp * fc_param_->deep_ * sizeof(float)); | |||
| fc_param_->a_const_ = (in_tensors_[0]->data_c() != nullptr); | |||
| fc_param_->b_const_ = (in_tensors_[1]->data_c() != nullptr); | |||
| fc_param_->a_const_ = (in_tensors_.at(0)->data_c() != nullptr); | |||
| fc_param_->b_const_ = (in_tensors_.at(1)->data_c() != nullptr); | |||
| if (fc_param_->a_const_) { | |||
| InitMatrixA(reinterpret_cast<float *>(in_tensors_[0]->MutableData()), a_pack_ptr_); | |||
| InitMatrixA(reinterpret_cast<float *>(in_tensors_.at(0)->MutableData()), a_pack_ptr_); | |||
| a_ptr_ = a_pack_ptr_; | |||
| } | |||
| if (fc_param_->b_const_) { | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_[1]->MutableData()), b_pack_ptr_); | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_.at(1)->MutableData()), b_pack_ptr_); | |||
| b_ptr_ = b_pack_ptr_; | |||
| } | |||
| return RET_OK; | |||
| @@ -42,10 +42,10 @@ void FusedBatchnormCPUKernel::FreeScaleAndOffset() { | |||
| } | |||
| int FusedBatchnormCPUKernel::InitConstTensor() { | |||
| auto scale = in_tensors_[1]; | |||
| auto offset = in_tensors_[2]; | |||
| auto mean = in_tensors_[3]; | |||
| auto variance = in_tensors_[4]; | |||
| auto scale = in_tensors_.at(1); | |||
| auto offset = in_tensors_.at(2); | |||
| auto mean = in_tensors_.at(3); | |||
| auto variance = in_tensors_.at(4); | |||
| scale_ = malloc(scale->Size()); | |||
| offset_ = malloc(offset->Size()); | |||
| @@ -82,10 +82,10 @@ int FusedBatchnormCPUKernel::Run() { | |||
| FusedBatchNormFp32MeanVar(in, current_mean, current_var, param, static_cast<float *>(save_mean), | |||
| static_cast<float *>(save_variance)); | |||
| memcpy(out_tensors_[1]->MutableData(), scale, out_tensors_[1]->Size()); | |||
| memcpy(out_tensors_[2]->MutableData(), offset, out_tensors_[2]->Size()); | |||
| memcpy(out_tensors_[3]->MutableData(), current_mean, out_tensors_[3]->Size()); | |||
| memcpy(out_tensors_[4]->MutableData(), current_var, out_tensors_[4]->Size()); | |||
| memcpy(out_tensors_.at(1)->MutableData(), scale, out_tensors_.at(1)->Size()); | |||
| memcpy(out_tensors_.at(2)->MutableData(), offset, out_tensors_.at(2)->Size()); | |||
| memcpy(out_tensors_.at(3)->MutableData(), current_mean, out_tensors_.at(3)->Size()); | |||
| memcpy(out_tensors_.at(4)->MutableData(), current_var, out_tensors_.at(4)->Size()); | |||
| // Copy to local variables | |||
| memcpy(scale_, scale, in_tensors_[1]->Size()); | |||
| @@ -108,16 +108,16 @@ int FusedBatchnormCPUKernel::Run() { | |||
| int FusedBatchnormCPUKernel::Eval() { | |||
| LiteKernel::Eval(); | |||
| if (trained_) { | |||
| float *save_mean = static_cast<float *>(in_tensors_[3]->MutableData()); | |||
| float *save_var = static_cast<float *>(in_tensors_[4]->MutableData()); | |||
| float *scale = static_cast<float *>(in_tensors_[1]->MutableData()); | |||
| float *bias = static_cast<float *>(in_tensors_[2]->MutableData()); | |||
| float *save_mean = static_cast<float *>(in_tensors_.at(3)->MutableData()); | |||
| float *save_var = static_cast<float *>(in_tensors_.at(4)->MutableData()); | |||
| float *scale = static_cast<float *>(in_tensors_.at(1)->MutableData()); | |||
| float *bias = static_cast<float *>(in_tensors_.at(2)->MutableData()); | |||
| // Copy to local variables | |||
| memcpy(scale_, scale, in_tensors_[1]->Size()); | |||
| memcpy(offset_, bias, in_tensors_[2]->Size()); | |||
| memcpy(mean_, save_mean, in_tensors_[3]->Size()); | |||
| memcpy(variance_, save_var, in_tensors_[4]->Size()); | |||
| memcpy(scale_, scale, in_tensors_.at(1)->Size()); | |||
| memcpy(offset_, bias, in_tensors_.at(2)->Size()); | |||
| memcpy(mean_, save_mean, in_tensors_.at(3)->Size()); | |||
| memcpy(variance_, save_var, in_tensors_.at(4)->Size()); | |||
| } | |||
| return RET_OK; | |||
| } | |||
| @@ -84,7 +84,7 @@ int GatherNdCPUKernel::ReSize() { | |||
| int idx_stride = idx_lastshape; | |||
| for (int j = 0; j < count_; ++j) { | |||
| for (int k = 0; k < idx_lastshape; ++k) { | |||
| in_offset_[j] += indices_ptr[j * idx_stride + k] * in_stride[k]; | |||
| in_offset_[j] += indices_ptr[j * idx_stride + k] * in_stride.at(k); | |||
| } | |||
| } | |||
| @@ -55,14 +55,14 @@ int GatherCPUKernel::DoGather(int task_id) { | |||
| int indices_element_size = indices_tensor->ElementsNum(); | |||
| auto axis = (reinterpret_cast<GatherParameter *>(op_parameter_))->axis_; | |||
| const int limit = in_shape[axis]; | |||
| const int limit = in_shape.at(axis); | |||
| int outer_size = 1, inner_size = 1; | |||
| for (int i = 0; i < axis; ++i) { | |||
| outer_size *= in_shape[i]; | |||
| outer_size *= in_shape.at(i); | |||
| } | |||
| for (int i = axis + 1; i < in_rank; ++i) { | |||
| inner_size *= in_shape[i]; | |||
| inner_size *= in_shape.at(i); | |||
| } | |||
| int stride = UP_DIV(outer_size, op_parameter_->thread_num_); | |||
| int count = MSMIN(stride, outer_size - stride * task_id); | |||
| @@ -28,7 +28,7 @@ using mindspore::schema::PrimitiveType_Conv2D; | |||
| namespace mindspore::kernel { | |||
| int GroupConvolutionCPUKernel::Init() { | |||
| for (int i = 0; i < group_num_; ++i) { | |||
| auto ret = group_convs_[i]->Init(); | |||
| auto ret = group_convs_.at(i)->Init(); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "Sub kernel init failed."; | |||
| return ret; | |||
| @@ -40,7 +40,7 @@ int GroupConvolutionCPUKernel::Init() { | |||
| int GroupConvolutionCPUKernel::ReSize() { | |||
| for (int i = 0; i < group_num_; ++i) { | |||
| auto ret = group_convs_[i]->ReSize(); | |||
| auto ret = group_convs_.at(i)->ReSize(); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "Sub kernel resize failed."; | |||
| return RET_ERROR; | |||
| @@ -94,7 +94,7 @@ int GroupConvolutionCPUKernel::PreProcess() { | |||
| int in_w = conv_param_->input_w_; | |||
| int in_c = conv_param_->input_channel_; | |||
| in_shape = {in_batch, in_h, in_w, in_c}; | |||
| auto sub_kernel_in_tensor = group_convs_[i]->in_tensors().front(); | |||
| auto sub_kernel_in_tensor = group_convs_.at(i)->in_tensors().front(); | |||
| sub_kernel_in_tensor->set_shape(in_shape); | |||
| ret = sub_kernel_in_tensor->MallocData(); | |||
| if (ret != RET_OK) { | |||
| @@ -108,7 +108,7 @@ int GroupConvolutionCPUKernel::PreProcess() { | |||
| int out_w = conv_param_->output_w_; | |||
| int out_c = conv_param_->output_channel_; | |||
| out_shape = {out_batch, out_h, out_w, out_c}; | |||
| auto sub_kernel_out_tensors = group_convs_[i]->out_tensors(); | |||
| auto sub_kernel_out_tensors = group_convs_.at(i)->out_tensors(); | |||
| for (auto tensor : sub_kernel_out_tensors) { | |||
| tensor->set_shape(out_shape); | |||
| ret = tensor->MallocData(); | |||
| @@ -140,7 +140,7 @@ void GroupConvolutionCPUKernel::SeparateInput(int group_id) { | |||
| int in_plane = in_h * in_w; | |||
| int sub_in_channel = conv_param_->input_channel_; | |||
| int ori_in_channel = sub_in_channel * group_num_; | |||
| auto sub_in_data = reinterpret_cast<float *>(group_convs_[group_id]->in_tensors().front()->data_c()); | |||
| auto sub_in_data = reinterpret_cast<float *>(group_convs_.at(group_id)->in_tensors().front()->data_c()); | |||
| float *src_ptr = ori_in_data_ + group_id * sub_in_channel; | |||
| float *dst_ptr = sub_in_data; | |||
| for (int i = 0; i < in_plane; ++i) { | |||
| @@ -156,7 +156,7 @@ void GroupConvolutionCPUKernel::PostConcat(int group_id) { | |||
| int out_plane = out_h * out_w; | |||
| int sub_out_channel = conv_param_->output_channel_; | |||
| int ori_out_channel = sub_out_channel * group_num_; | |||
| auto sub_out_data = reinterpret_cast<float *>(group_convs_[group_id]->out_tensors().front()->data_c()); | |||
| auto sub_out_data = reinterpret_cast<float *>(group_convs_.at(group_id)->out_tensors().front()->data_c()); | |||
| float *src_ptr = sub_out_data; | |||
| float *dst_ptr = ori_out_data_ + group_id * sub_out_channel; | |||
| for (int i = 0; i < out_plane; ++i) { | |||
| @@ -173,7 +173,7 @@ int GroupConvolutionCPUKernel::Run() { | |||
| // first, separate group conv input into several parts. This step must be in runtime stage. | |||
| SeparateInput(i); | |||
| // sun kernels run | |||
| auto ret = group_convs_[i]->Run(); | |||
| auto ret = group_convs_.at(i)->Run(); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "sub kernel " << i << " execute failed."; | |||
| return ret; | |||
| @@ -36,12 +36,12 @@ int InstanceNormCPUKernel::Init() { | |||
| int InstanceNormCPUKernel::ReSize() { | |||
| auto input_shapes = in_tensors_.front()->shape(); | |||
| auto n_dim = input_shapes.size(); | |||
| outer_size_ = input_shapes[0] * input_shapes[n_dim - 1]; | |||
| outer_size_ = input_shapes.at(0) * input_shapes.at(n_dim - 1); | |||
| inner_size_ = 1; | |||
| for (size_t i = 0; i < n_dim - 1; ++i) { | |||
| inner_size_ *= input_shapes[i]; | |||
| inner_size_ *= input_shapes.at(i); | |||
| } | |||
| param_->channel_ = input_shapes[n_dim - 1]; | |||
| param_->channel_ = input_shapes.at(n_dim - 1); | |||
| return RET_OK; | |||
| } | |||
| @@ -39,9 +39,9 @@ int LayerNormCPUKernel::ReSize() { | |||
| inner_size_ = 1; | |||
| for (size_t i = 0; i < shape.size(); ++i) { | |||
| if (i + param_->normalized_dims_ < shape.size()) { | |||
| outer_size_ *= shape[i]; | |||
| outer_size_ *= shape.at(i); | |||
| } else { | |||
| inner_size_ *= shape[i]; | |||
| inner_size_ *= shape.at(i); | |||
| } | |||
| } | |||
| return RET_OK; | |||
| @@ -42,10 +42,10 @@ int LocalResponseNormCPUKernel::DoLocalResponseNorm(int task_id) { | |||
| auto in_shape = input_tensor->shape(); | |||
| MS_ASSERT(in_shape.size() == 4); | |||
| int batch = in_shape[0]; | |||
| int height = in_shape[1]; | |||
| int width = in_shape[2]; | |||
| int channel = in_shape[3]; | |||
| int batch = in_shape.at(0); | |||
| int height = in_shape.at(1); | |||
| int width = in_shape.at(2); | |||
| int channel = in_shape.at(3); | |||
| int outer_size = batch * width * height; | |||
| int stride = UP_DIV(outer_size, thread_count_); | |||
| @@ -50,14 +50,14 @@ int LstmCPUKernel::InitParam() { | |||
| auto input = in_tensors_.front(); | |||
| MS_ASSERT(input != nullptr); | |||
| std::vector<int> in_shape = input->shape(); | |||
| lstm_parm_->seq_len_ = in_shape[0]; | |||
| lstm_parm_->batch_ = in_shape[1]; | |||
| lstm_parm_->input_size_ = in_shape[2]; | |||
| lstm_parm_->seq_len_ = in_shape.at(0); | |||
| lstm_parm_->batch_ = in_shape.at(1); | |||
| lstm_parm_->input_size_ = in_shape.at(2); | |||
| auto weight_i = in_tensors_[1]; | |||
| auto weight_i = in_tensors_.at(1); | |||
| MS_ASSERT(weight_i != nullptr); | |||
| std::vector<int> w_shape = weight_i->shape(); | |||
| lstm_parm_->hidden_size_ = w_shape[1] / 4; | |||
| lstm_parm_->hidden_size_ = w_shape.at(1) / 4; | |||
| lstm_parm_->input_step_ = lstm_parm_->batch_ * lstm_parm_->input_size_; | |||
| lstm_parm_->output_step_ = lstm_parm_->bidirectional_ ? 2 * lstm_parm_->batch_ * lstm_parm_->hidden_size_ | |||
| @@ -58,8 +58,9 @@ void MatmulCPUKernel::FreeTmpBuffer() { | |||
| } | |||
| int MatmulCPUKernel::MallocMatrixABuffer() { | |||
| auto a_shape = in_tensors_[0]->shape(); | |||
| auto a_shape = in_tensors_.at(0)->shape(); | |||
| int batch = 1; | |||
| MS_ASSERT(a_shape.size() >= 2); | |||
| for (size_t i = 0; i < a_shape.size() - 2; ++i) { | |||
| batch *= a_shape[i]; | |||
| } | |||
| @@ -102,11 +103,12 @@ int MatmulCPUKernel::MallocMatrixABuffer() { | |||
| } | |||
| int MatmulCPUKernel::MallocMatrixBBuffer() { | |||
| auto b_shape = in_tensors_[1]->shape(); | |||
| auto b_shape = in_tensors_.at(1)->shape(); | |||
| if (b_shape.empty()) { | |||
| return RET_OK; | |||
| } | |||
| int batch = 1; | |||
| MS_ASSERT(b_shape.size() >= 2); | |||
| for (size_t i = 0; i < b_shape.size() - 2; ++i) { | |||
| batch *= b_shape[i]; | |||
| } | |||
| @@ -133,11 +135,11 @@ int MatmulCPUKernel::MallocMatrixBBuffer() { | |||
| } | |||
| int MatmulCPUKernel::InitBias() { | |||
| auto b_shape = in_tensors_[1]->shape(); | |||
| auto c_shape = out_tensors_[0]->shape(); | |||
| auto b_shape = in_tensors_.at(1)->shape(); | |||
| auto c_shape = out_tensors_.at(0)->shape(); | |||
| params_->col_ = params_->b_const_ | |||
| ? (params_->b_transpose_ ? b_shape[b_shape.size() - 2] : b_shape[b_shape.size() - 1]) | |||
| : (c_shape[c_shape.size() - 1]); | |||
| ? (params_->b_transpose_ ? b_shape.at(b_shape.size() - 2) : b_shape.at(b_shape.size() - 1)) | |||
| : (c_shape.at(c_shape.size() - 1)); | |||
| params_->col_8_ = UP_ROUND(params_->col_, 8); | |||
| auto col_tmp = is_vector_a_ ? params_->col_ : params_->col_8_; | |||
| if (bias_ptr_ == nullptr) { | |||
| @@ -221,15 +223,15 @@ void MatmulCPUKernel::InitMatrixB(const float *src_ptr, float *dst_ptr) { | |||
| } | |||
| int MatmulCPUKernel::Init() { | |||
| params_->a_const_ = (in_tensors_[0]->data_c() != nullptr); | |||
| params_->b_const_ = (in_tensors_[1]->data_c() != nullptr); | |||
| params_->a_const_ = (in_tensors_.at(0)->data_c() != nullptr); | |||
| params_->b_const_ = (in_tensors_.at(1)->data_c() != nullptr); | |||
| if (params_->a_const_) { | |||
| auto ret = MallocMatrixABuffer(); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "Matmul fp32 malloc matrix A buffer failed"; | |||
| return RET_ERROR; | |||
| } | |||
| InitMatrixA(reinterpret_cast<float *>(in_tensors_[0]->data_c()), a_pack_ptr_); | |||
| InitMatrixA(reinterpret_cast<float *>(in_tensors_.at(0)->data_c()), a_pack_ptr_); | |||
| a_ptr_ = a_pack_ptr_; | |||
| } | |||
| if (params_->b_const_) { | |||
| @@ -238,7 +240,7 @@ int MatmulCPUKernel::Init() { | |||
| MS_LOG(ERROR) << "Matmul fp32 malloc matrix B buffer failed"; | |||
| return RET_ERROR; | |||
| } | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_[1]->data_c()), b_pack_ptr_); | |||
| InitMatrixB(reinterpret_cast<float *>(in_tensors_.at(1)->data_c()), b_pack_ptr_); | |||
| b_ptr_ = b_pack_ptr_; | |||
| // init bias | |||
| ret = InitBias(); | |||
| @@ -281,9 +283,9 @@ int MatmulFloatRun(void *cdata, int task_id) { | |||
| } | |||
| int MatmulCPUKernel::Run() { | |||
| auto a_src = reinterpret_cast<float *>(in_tensors_[0]->data_c()); | |||
| auto b_src = reinterpret_cast<float *>(in_tensors_[1]->data_c()); | |||
| auto c_src = reinterpret_cast<float *>(out_tensors_[0]->data_c()); | |||
| auto a_src = reinterpret_cast<float *>(in_tensors_.at(0)->data_c()); | |||
| auto b_src = reinterpret_cast<float *>(in_tensors_.at(1)->data_c()); | |||
| auto c_src = reinterpret_cast<float *>(out_tensors_.at(0)->data_c()); | |||
| if (!params_->a_const_ || IsTrain()) { | |||
| if (a_pack_ptr_ != nullptr) { | |||
| @@ -356,8 +358,8 @@ int MatmulCPUKernel::Run() { | |||
| int MatmulCPUKernel::Eval() { | |||
| // Copy weights after training | |||
| auto a_src = reinterpret_cast<float *>(in_tensors_[0]->data_c()); | |||
| auto b_src = reinterpret_cast<float *>(in_tensors_[1]->data_c()); | |||
| auto a_src = reinterpret_cast<float *>(in_tensors_.at(0)->data_c()); | |||
| auto b_src = reinterpret_cast<float *>(in_tensors_.at(1)->data_c()); | |||
| LiteKernel::Eval(); | |||
| if (params_->a_const_) { | |||
| if (a_pack_ptr_ == nullptr) { | |||
| @@ -28,8 +28,8 @@ int Nchw2NhwcCPUKernel::Init() { return RET_OK; } | |||
| int Nchw2NhwcCPUKernel::ReSize() { return RET_OK; } | |||
| int Nchw2NhwcCPUKernel::Run() { | |||
| auto input = in_tensors_[0]; | |||
| auto output = out_tensors_[0]; | |||
| auto input = in_tensors_.at(0); | |||
| auto output = out_tensors_.at(0); | |||
| if (input->shape().size() == 4) { | |||
| if (input->data_type() == kNumberTypeFloat32) { | |||
| @@ -28,8 +28,8 @@ int Nhwc2NchwCPUKernel::Init() { return RET_OK; } | |||
| int Nhwc2NchwCPUKernel::ReSize() { return RET_OK; } | |||
| int Nhwc2NchwCPUKernel::Run() { | |||
| auto input = in_tensors_[0]; | |||
| auto output = out_tensors_[0]; | |||
| auto input = in_tensors_.at(0); | |||
| auto output = out_tensors_.at(0); | |||
| if (input->shape().size() == 4) { | |||
| if (input->data_type() == kNumberTypeFloat32) { | |||
| @@ -122,13 +122,13 @@ int NonMaxSuppressionCPUKernel::Run() { | |||
| return RET_ERROR; | |||
| } | |||
| constexpr size_t kBatchIndex = 0; | |||
| if (score_dims[kBatchIndex] != box_dims[kBatchIndex]) { | |||
| if (score_dims.at(kBatchIndex) != box_dims.at(kBatchIndex)) { | |||
| MS_LOG(ERROR) << "Boxes tensor batch num should be equal to scores tensor's batch num."; | |||
| return RET_ERROR; | |||
| } | |||
| constexpr size_t kScoreDimsBoxNumIndex = 2; | |||
| constexpr size_t kBoxDimsBoxNumIndex = 1; | |||
| if (score_dims[kScoreDimsBoxNumIndex] != box_dims[kBoxDimsBoxNumIndex]) { | |||
| if (score_dims.at(kScoreDimsBoxNumIndex) != box_dims.at(kBoxDimsBoxNumIndex)) { | |||
| MS_LOG(ERROR) << "Boxes tensor spatial dimension should be equal to scores tensor's spatial dimension."; | |||
| return RET_ERROR; | |||
| } | |||
| @@ -138,10 +138,10 @@ int NonMaxSuppressionCPUKernel::Run() { | |||
| return RET_ERROR; | |||
| } | |||
| int batch_num = score_dims[kBatchIndex]; | |||
| int batch_num = score_dims.at(kBatchIndex); | |||
| constexpr size_t kClassIndex = 1; | |||
| int class_num = score_dims[kClassIndex]; | |||
| int box_num = score_dims[kScoreDimsBoxNumIndex]; | |||
| int class_num = score_dims.at(kClassIndex); | |||
| int box_num = score_dims.at(kScoreDimsBoxNumIndex); | |||
| float *scores_data = reinterpret_cast<float *>(score_tensor->data_c()); | |||
| if (scores_data == nullptr) { | |||
| MS_LOG(ERROR) << "score tensor data nullptr"; | |||
| @@ -50,11 +50,11 @@ int PowerCPUKernel::Run() { | |||
| } | |||
| int PowerCPUKernel::RunImpl(int task_id) { | |||
| auto x_addr = reinterpret_cast<float *>(in_tensors_[0]->MutableData()); | |||
| auto x_addr = reinterpret_cast<float *>(in_tensors_.at(0)->MutableData()); | |||
| MS_ASSERT(x_addr); | |||
| auto output_addr = reinterpret_cast<float *>(out_tensors_[0]->MutableData()); | |||
| auto output_addr = reinterpret_cast<float *>(out_tensors_.at(0)->MutableData()); | |||
| MS_ASSERT(output_addr); | |||
| auto size = in_tensors_[0]->ElementsNum(); | |||
| auto size = in_tensors_.at(0)->ElementsNum(); | |||
| int stride = UP_DIV(size, thread_count_); | |||
| int len = MSMIN(stride, size - stride * task_id); | |||
| float *exp_addr = nullptr; | |||
| @@ -52,13 +52,13 @@ int PReluCPUKernel::DoExcute(int task_id) { | |||
| int PReluCPUKernel::ProcessInput() { | |||
| // input tensor | |||
| auto input_tensor = in_tensors_[0]; | |||
| auto input_tensor = in_tensors_.at(0); | |||
| auto in_shape = input_tensor->shape(); | |||
| auto n_dim = in_shape.size(); | |||
| auto channel_num = in_shape.at(n_dim - 1); | |||
| int input_plane = 1; | |||
| for (size_t i = 0; i < n_dim - 1; ++i) { | |||
| input_plane *= in_shape[i]; | |||
| input_plane *= in_shape.at(i); | |||
| } | |||
| int tile_block = UP_DIV(input_plane, TILE_NUM); | |||
| prelu_param_->input_num_ = input_tensor->ElementsNum(); | |||
| @@ -76,7 +76,7 @@ int PReluCPUKernel::ProcessInput() { | |||
| int PReluCPUKernel::ProcessShareChannelInput() { | |||
| // input tensor | |||
| auto input_tensor = in_tensors_[0]; | |||
| auto input_tensor = in_tensors_.at(0); | |||
| prelu_param_->input_num_ = input_tensor->ElementsNum(); | |||
| #ifdef ENABLE_ARM64 | |||
| prelu_param_->tile_block_ = UP_DIV(prelu_param_->input_num_, 64); | |||
| @@ -34,7 +34,7 @@ int RankCPUKernel::ReSize() { return RET_OK; } | |||
| int RankCPUKernel::Run() { | |||
| auto output_ptr = reinterpret_cast<float *>(out_tensors_.at(0)->MutableData()); | |||
| MS_ASSERT(output_ptr); | |||
| auto in_shape = in_tensors_[0]->shape(); | |||
| auto in_shape = in_tensors_.at(0)->shape(); | |||
| auto rank = in_shape.size(); | |||
| Rank(output_ptr, rank); | |||
| return RET_OK; | |||
| @@ -74,7 +74,7 @@ void FullconnectionInt8CPUKernel::FreeTmpBuffer() { | |||
| } | |||
| int FullconnectionInt8CPUKernel::MallocQuantParam() { | |||
| auto weight_tensor = in_tensors_[1]; | |||
| auto weight_tensor = in_tensors_.at(1); | |||
| auto weight_quant_params = weight_tensor->quant_params(); | |||
| int col = weight_tensor->shape().front(); | |||
| filter_per_channel_ = (weight_quant_params.size() > 1); | |||
| @@ -111,15 +111,15 @@ int FullconnectionInt8CPUKernel::Init() { | |||
| return ret; | |||
| } | |||
| auto in_quant_params = in_tensors_[0]->quant_params(); | |||
| auto in_quant_params = in_tensors_.at(0)->quant_params(); | |||
| quant_.input_.zp_ = in_quant_params.front().zeroPoint; | |||
| quant_.input_.scale_ = in_quant_params.front().scale; | |||
| auto out_quant_params = out_tensors_[0]->quant_params(); | |||
| auto out_quant_params = out_tensors_.at(0)->quant_params(); | |||
| quant_.output_.zp_ = out_quant_params.front().zeroPoint; | |||
| quant_.output_.scale_ = out_quant_params.front().scale; | |||
| auto weight_tensor = in_tensors_[1]; | |||
| auto weight_tensor = in_tensors_.at(1); | |||
| fc_param_->b_const_ = (weight_tensor->data_c() != nullptr); | |||
| int weight_quant_num = filter_per_channel_ ? weight_tensor->shape().front() : 1; | |||
| auto weight_quant_params = weight_tensor->quant_params(); | |||
| @@ -148,12 +148,12 @@ int FullconnectionInt8CPUKernel::Init() { | |||
| void FullconnectionInt8CPUKernel::InitParam() { | |||
| int row = 1; | |||
| for (size_t i = 0; i < out_tensors_[0]->shape().size() - 1; ++i) { | |||
| row *= (out_tensors_[0]->shape())[i]; | |||
| for (size_t i = 0; i < out_tensors_.at(0)->shape().size() - 1; ++i) { | |||
| row *= (out_tensors_.at(0)->shape()).at(i); | |||
| } | |||
| fc_param_->row_ = row; | |||
| fc_param_->col_ = out_tensors_[0]->shape().back(); | |||
| fc_param_->deep_ = (in_tensors_[1]->shape())[1]; | |||
| fc_param_->col_ = out_tensors_.at(0)->shape().back(); | |||
| fc_param_->deep_ = (in_tensors_.at(1)->shape()).at(1); | |||
| fc_param_->row_4_ = UP_ROUND(fc_param_->row_, C4NUM); | |||
| fc_param_->row_8_ = UP_ROUND(fc_param_->row_, C8NUM); | |||
| @@ -207,13 +207,13 @@ int FullconnectionInt8CPUKernel::ReSize() { | |||
| FreeTmpBuffer(); | |||
| return RET_MEMORY_FAILED; | |||
| } | |||
| memcpy(bias_ptr_, in_tensors_[2]->data_c(), fc_param_->col_ * sizeof(int)); | |||
| memcpy(bias_ptr_, in_tensors_.at(2)->data_c(), fc_param_->col_ * sizeof(int)); | |||
| } else { | |||
| bias_ptr_ = nullptr; | |||
| } | |||
| if (fc_param_->b_const_) { | |||
| auto weight_data = reinterpret_cast<int8_t *>(in_tensors_[1]->data_c()); | |||
| auto weight_data = reinterpret_cast<int8_t *>(in_tensors_.at(1)->data_c()); | |||
| RowMajor2Row16x4MajorInt8(weight_data, pack_b_ptr_, fc_param_->col_, fc_param_->deep_); | |||
| CalcWeightBiasSums(weight_data, fc_param_->deep_, fc_param_->col_, quant_.input_.zp_, quant_.filter_zp_, bias_ptr_, | |||
| weight_bias_sums_, ColMajor, filter_per_channel_); | |||
| @@ -254,20 +254,20 @@ int FcInt8Run(void *cdata, int task_id) { | |||
| } | |||
| int FullconnectionInt8CPUKernel::Run() { | |||
| auto input_ptr = reinterpret_cast<int8_t *>(in_tensors_[0]->data_c()); | |||
| auto input_ptr = reinterpret_cast<int8_t *>(in_tensors_.at(0)->data_c()); | |||
| RowMajor2Row16x4MajorInt8(input_ptr, pack_a_ptr_, fc_param_->row_, fc_param_->deep_); | |||
| int32_t tmp_weight_zp = filter_per_channel_ ? 1 : quant_.filter_zp_[0]; | |||
| CalcInputSums(input_ptr, fc_param_->row_, fc_param_->deep_, tmp_weight_zp, input_sums_, RowMajor); | |||
| if (!fc_param_->b_const_) { | |||
| auto weight_data = reinterpret_cast<int8_t *>(in_tensors_[1]->data_c()); | |||
| auto weight_data = reinterpret_cast<int8_t *>(in_tensors_.at(1)->data_c()); | |||
| RowMajor2Row16x4MajorInt8(weight_data, pack_b_ptr_, fc_param_->col_, fc_param_->deep_); | |||
| CalcWeightBiasSums(weight_data, fc_param_->deep_, fc_param_->col_, quant_.input_.zp_, quant_.filter_zp_, bias_ptr_, | |||
| weight_bias_sums_, ColMajor, filter_per_channel_); | |||
| } | |||
| c_ptr_ = reinterpret_cast<int8_t *>(out_tensors_[0]->data_c()); | |||
| c_ptr_ = reinterpret_cast<int8_t *>(out_tensors_.at(0)->data_c()); | |||
| auto ret = ParallelLaunch(this->context_->thread_pool_, FcInt8Run, this, thread_count_); | |||
| if (ret != RET_OK) { | |||
| MS_LOG(ERROR) << "ParallelLaunch failed"; | |||
| @@ -77,11 +77,11 @@ int GatherNdInt8CPUKernel::ReSize() { | |||
| auto in_shape = in_tensors_.front()->shape(); | |||
| int in_rank = in_shape.size(); | |||
| int idx_lastshape = indices_shape[indices_rank - 1]; | |||
| int idx_lastshape = indices_shape.at(indices_rank - 1); | |||
| auto indices_ptr = reinterpret_cast<int8_t *>(indices_tensor->MutableData()); | |||
| area_ = 1; | |||
| for (int i = idx_lastshape; i < in_rank; ++i) { | |||
| area_ *= in_shape[i]; | |||
| area_ *= in_shape.at(i); | |||
| } | |||
| std::vector<int> in_stride(in_rank); | |||
| in_stride[in_rank - 1] = 1; | |||
| @@ -61,7 +61,7 @@ int GatherInt8CPUKernel::DoGather(int task_id) { | |||
| int in_rank = in_shape.size(); | |||
| int indices_element_size = indices_tensor->ElementsNum(); | |||
| const int limit = in_shape[axis_]; | |||
| const int limit = in_shape.at(axis_); | |||
| for (int i = 0; i < indices_element_size; ++i) { | |||
| if (indices_ptr[i] >= limit) { | |||
| MS_LOG(ERROR) << " indice data: " << indices_ptr[i] << " is not in [ 0, " << limit - 1 << " ]"; | |||
| @@ -71,12 +71,12 @@ int GatherInt8CPUKernel::DoGather(int task_id) { | |||
| int outer_size = 1; | |||
| for (int i = 0; i < axis_; ++i) { | |||
| outer_size *= in_shape[i]; | |||
| outer_size *= in_shape.at(i); | |||
| } | |||
| int inner_size = 1; | |||
| for (int i = axis_ + 1; i < in_rank; ++i) { | |||
| inner_size *= in_shape[i]; | |||
| inner_size *= in_shape.at(i); | |||
| } | |||
| int stride = UP_DIV(outer_size, thread_count_); | |||
| @@ -89,9 +89,9 @@ int LayerNormInt8CPUKernel::ReSize() { | |||
| inner_size_ = 1; | |||
| for (size_t i = 0; i < shape.size(); ++i) { | |||
| if (i + param_->normalized_dims_ < shape.size()) { | |||
| outer_size_ *= shape[i]; | |||
| outer_size_ *= shape.at(i); | |||
| } else { | |||
| inner_size_ *= shape[i]; | |||
| inner_size_ *= shape.at(i); | |||
| } | |||
| } | |||
| @@ -85,7 +85,7 @@ int LeakyReluInt8CPUKernel::ReSize() { | |||
| auto *out_tensor = out_tensors_.at(kOutputIndex); | |||
| auto input_dim = input_tensor->shape().size(); | |||
| quant_prelu_parm_.input_dim_ = input_dim; | |||
| quant_prelu_parm_.element_num = in_tensors_[0]->Size(); | |||
| quant_prelu_parm_.element_num = in_tensors_.at(0)->Size(); | |||
| auto input_shape = input_tensor->shape(); | |||
| if (quant_prelu_parm_.in_shape_ != nullptr) { | |||
| free(quant_prelu_parm_.in_shape_); | |||
| @@ -39,12 +39,14 @@ int MatmulInt8CPUKernel::Init() { | |||
| int MatmulInt8CPUKernel::ReSize() { | |||
| FreeTmpBuffer(); | |||
| int batch = 1; | |||
| auto x_shape = in_tensors_[0]->shape(); | |||
| auto o_shape = out_tensors_[0]->shape(); | |||
| auto x_shape = in_tensors_.at(0)->shape(); | |||
| auto o_shape = out_tensors_.at(0)->shape(); | |||
| MS_ASSERT(x_shape.size() >= 2); | |||
| for (size_t i = 0; i < x_shape.size() - 2; ++i) { | |||
| batch *= x_shape[i]; | |||
| } | |||
| params_->batch = batch; | |||
| MS_ASSERT(o_shape.size() >= 2); | |||
| params_->row_ = o_shape[o_shape.size() - 2]; | |||
| params_->col_ = o_shape[o_shape.size() - 1]; | |||
| params_->deep_ = params_->a_transpose_ ? x_shape[x_shape.size() - 2] : x_shape[x_shape.size() - 1]; | |||
| @@ -77,25 +79,25 @@ int MatmulInt8CPUKernel::ReSize() { | |||
| thread_count_ = MSMIN(thread_count_, UP_DIV(params_->col_4_, 4)); | |||
| thread_stride_ = UP_DIV(UP_DIV(params_->col_4_, 4), thread_count_); | |||
| auto input_tensor = in_tensors_[0]; | |||
| auto input_tensor = in_tensors_.at(0); | |||
| auto params = input_tensor->quant_params(); | |||
| MS_ASSERT(params.size() == 1); | |||
| quant_params_.input.zp_ = params.front().zeroPoint; | |||
| quant_params_.input.scale_ = params.front().scale; | |||
| auto weight_tensor = in_tensors_[1]; | |||
| auto weight_tensor = in_tensors_.at(1); | |||
| params = weight_tensor->quant_params(); | |||
| MS_ASSERT(params.size() == 1); | |||
| quant_params_.weight.zp_ = params.front().zeroPoint; | |||
| quant_params_.weight.scale_ = params.front().scale; | |||
| auto output_tensor = out_tensors_[0]; | |||
| auto output_tensor = out_tensors_.at(0); | |||
| params = output_tensor->quant_params(); | |||
| MS_ASSERT(params.size() == 1); | |||
| quant_params_.output.zp_ = params.front().zeroPoint; | |||
| quant_params_.output.scale_ = params.front().scale; | |||
| params_->b_const_ = (in_tensors_[1]->data_c() != nullptr); | |||
| params_->b_const_ = (in_tensors_.at(1)->data_c() != nullptr); | |||
| if (params_->b_const_) { | |||
| auto b_ptr = reinterpret_cast<int8_t *>(in_tensors_[1]->data_c()); | |||
| auto b_ptr = reinterpret_cast<int8_t *>(in_tensors_.at(1)->data_c()); | |||
| for (int i = 0; i < params_->batch; ++i) { | |||
| auto cur_b = b_ptr + i * params_->deep_ * params_->col_; | |||
| auto cur_b_pack = b_c16x4_batch_ + i * params_->col_4_ * params_->deep_16_; | |||
| @@ -152,14 +154,14 @@ int MatmulInt8Run(void *cdata, int task_id) { | |||
| } | |||
| int MatmulInt8CPUKernel::Run() { | |||
| auto a_ptr = reinterpret_cast<int8_t *>(in_tensors_[0]->data_c()); | |||
| auto c_ptr = reinterpret_cast<int8_t *>(out_tensors_[0]->data_c()); | |||
| auto a_ptr = reinterpret_cast<int8_t *>(in_tensors_.at(0)->data_c()); | |||
| auto c_ptr = reinterpret_cast<int8_t *>(out_tensors_.at(0)->data_c()); | |||
| auto a_stride = params_->row_ * params_->deep_; | |||
| auto b_stride = params_->deep_ * params_->col_; | |||
| auto c_stride = params_->row_ * params_->col_; | |||
| if (!params_->b_const_) { | |||
| auto b_ptr = reinterpret_cast<int8_t *>(in_tensors_[1]->data_c()); | |||
| auto b_ptr = reinterpret_cast<int8_t *>(in_tensors_.at(1)->data_c()); | |||
| for (int i = 0; i < params_->batch; ++i) { | |||
| auto cur_b = b_ptr + i * b_stride; | |||
| auto cur_b_pack = b_c16x4_batch_ + i * params_->col_4_ * params_->deep_16_; | |||
| @@ -87,8 +87,8 @@ int PadInt8CPUKernel::SetQuantParam() { | |||
| } | |||
| int PadInt8CPUKernel::InitPadParam() { | |||
| auto in_dims = in_tensors_[0]->shape(); | |||
| auto out_dims = out_tensors_[0]->shape(); | |||
| auto in_dims = in_tensors_.at(0)->shape(); | |||
| auto out_dims = out_tensors_.at(0)->shape(); | |||
| int ndims = in_dims.size(); | |||
| int in[] = {1, 1, 1, 1}; | |||
| @@ -265,8 +265,8 @@ int PadInt8CPUKernel::CopyPaddingFromInput() { | |||
| } | |||
| int PadInt8CPUKernel::Run() { | |||
| in_data_ = reinterpret_cast<int8_t *>(in_tensors_[0]->MutableData()); | |||
| out_data_ = reinterpret_cast<int8_t *>(out_tensors_[0]->MutableData()); | |||
| in_data_ = reinterpret_cast<int8_t *>(in_tensors_.at(0)->MutableData()); | |||
| out_data_ = reinterpret_cast<int8_t *>(out_tensors_.at(0)->MutableData()); | |||
| int error_code; | |||
| if (pad_param_->pad_mode_ == static_cast<int>(schema::PaddingMode_CONSTANT)) { | |||
| @@ -66,7 +66,7 @@ int PowerInt8CPUKernel::DoPower(int task_id) { | |||
| int8_t *output_data = reinterpret_cast<int8_t *>(out_tensors_[0]->MutableData()); | |||
| MS_ASSERT(output_data); | |||
| auto size = in_tensors_[0]->ElementsNum(); | |||
| auto size = in_tensors_.at(0)->ElementsNum(); | |||
| int stride = UP_DIV(size, op_parameter_->thread_num_); | |||
| int count = MSMIN(stride, size - stride * task_id); | |||
| int8_t *exp_ptr = nullptr; | |||