Browse Source

!11192 [MS][LITE][Develop] add new ops named unsqueeze and expanddims for GPU

From: @pengyongrong
Reviewed-by: @ddwsky,@zhanghaibo5
Signed-off-by: @ddwsky
tags/v1.2.0-rc1
mindspore-ci-bot Gitee 4 years ago
parent
commit
a37d17959e
3 changed files with 25 additions and 19 deletions
  1. +18
    -18
      mindspore/lite/src/runtime/kernel/opencl/kernel/layer_norm.cc
  2. +6
    -0
      mindspore/lite/src/runtime/kernel/opencl/kernel/reshape.cc
  3. +1
    -1
      mindspore/lite/test/ut/src/runtime/kernel/opencl/layer_norm_tests.cc

+ 18
- 18
mindspore/lite/src/runtime/kernel/opencl/kernel/layer_norm.cc View File

@@ -33,24 +33,24 @@ namespace mindspore::kernel {

int LayerNormOpenCLKernel::CheckSpecs() {
auto param = reinterpret_cast<LayerNormParameter *>(this->op_parameter_);
// if (param->elementwise_mode_ == ELEMENTWISE_PER_CHANNEL) {
// if (in_tensors_.size() != 3) {
// MS_LOG(ERROR) << " invalid in_tensors_ size" << in_tensors_.size() << std::endl;
// return RET_ERROR;
// }
// if (param->normalized_dims_ > in_tensors_.at(0)->shape().size()) {
// MS_LOG(ERROR) << " invalid normalized_shape_ size" << param->normalized_dims_ << std::endl;
// return RET_ERROR;
// }
// } else if (param->elementwise_mode_ == ELEMENTWISE_NOT) {
// if (in_tensors_.size() != 1) {
// MS_LOG(ERROR) << " invalid in_tensors_ size" << in_tensors_.size() << std::endl;
// return RET_ERROR;
// }
// } else {
// MS_LOG(ERROR) << "Unsupported elementwise_mode_" << param->elementwise_mode_;
// return RET_ERROR;
// }
if (param->elementwise_mode_ == ELEMENTWISE_PER_NUM) {
if (in_tensors_.size() != 3) {
MS_LOG(ERROR) << " invalid in_tensors_ size" << in_tensors_.size() << std::endl;
return RET_ERROR;
}
if (param->normalized_dims_ > in_tensors_.at(0)->shape().size()) {
MS_LOG(ERROR) << " invalid normalized_shape_ size" << param->normalized_dims_ << std::endl;
return RET_ERROR;
}
} else if (param->elementwise_mode_ == ELEMENTWISE_NOT) {
if (in_tensors_.size() != 1) {
MS_LOG(ERROR) << " invalid in_tensors_ size" << in_tensors_.size() << std::endl;
return RET_ERROR;
}
} else {
MS_LOG(ERROR) << "Unsupported elementwise_mode_" << param->elementwise_mode_;
return RET_ERROR;
}
if (in_tensors_.at(0)->shape().size() != 4 || out_tensors_.size() != 1) {
MS_LOG(ERROR) << "UnSupported in_tensors_.shape.size: " << in_tensors_.at(0)->shape().size()
<< " out_tensors_.size(): " << out_tensors_.size();


+ 6
- 0
mindspore/lite/src/runtime/kernel/opencl/kernel/reshape.cc View File

@@ -25,8 +25,10 @@ using mindspore::kernel::KERNEL_ARCH::kGPU;
using mindspore::lite::KernelRegistrar;
using mindspore::lite::RET_ERROR;
using mindspore::lite::RET_OK;
using mindspore::schema::PrimitiveType_ExpandDims;
using mindspore::schema::PrimitiveType_Reshape;
using mindspore::schema::PrimitiveType_Squeeze;
using mindspore::schema::PrimitiveType_Unsqueeze;

namespace mindspore::kernel {

@@ -97,4 +99,8 @@ REG_KERNEL(kGPU, kNumberTypeFloat32, PrimitiveType_Reshape, OpenCLKernelCreator<
REG_KERNEL(kGPU, kNumberTypeFloat16, PrimitiveType_Reshape, OpenCLKernelCreator<ReshapeOpenCLKernel>)
REG_KERNEL(kGPU, kNumberTypeFloat32, PrimitiveType_Squeeze, OpenCLKernelCreator<ReshapeOpenCLKernel>)
REG_KERNEL(kGPU, kNumberTypeFloat16, PrimitiveType_Squeeze, OpenCLKernelCreator<ReshapeOpenCLKernel>)
REG_KERNEL(kGPU, kNumberTypeFloat32, PrimitiveType_Unsqueeze, OpenCLKernelCreator<ReshapeOpenCLKernel>)
REG_KERNEL(kGPU, kNumberTypeFloat16, PrimitiveType_Unsqueeze, OpenCLKernelCreator<ReshapeOpenCLKernel>)
REG_KERNEL(kGPU, kNumberTypeFloat32, PrimitiveType_ExpandDims, OpenCLKernelCreator<ReshapeOpenCLKernel>)
REG_KERNEL(kGPU, kNumberTypeFloat16, PrimitiveType_ExpandDims, OpenCLKernelCreator<ReshapeOpenCLKernel>)
} // namespace mindspore::kernel

+ 1
- 1
mindspore/lite/test/ut/src/runtime/kernel/opencl/layer_norm_tests.cc View File

@@ -24,7 +24,7 @@ namespace {
// PrimitiveType_Stack: src/ops/populate/stack_populate.cc
OpParameter *CreateParameter(float epsilon, int normalized_dims_, std::vector<int> normalizedShape) {
auto *param = test::CreateParameter<LayerNormParameter>(schema::PrimitiveType_LayerNorm);
param->elementwise_mode_ = ELEMENTWISE_PER_CHANNEL;
param->elementwise_mode_ = ELEMENTWISE_PER_NUM;
param->epsilon_ = epsilon;
param->normalized_dims_ = normalized_dims_;
for (int i = 0; i < normalizedShape.size() && i < normalized_dims_; ++i) {


Loading…
Cancel
Save