From: @pengyongrong Reviewed-by: @ddwsky,@zhanghaibo5 Signed-off-by: @ddwskytags/v1.2.0-rc1
| @@ -33,24 +33,24 @@ namespace mindspore::kernel { | |||||
| int LayerNormOpenCLKernel::CheckSpecs() { | int LayerNormOpenCLKernel::CheckSpecs() { | ||||
| auto param = reinterpret_cast<LayerNormParameter *>(this->op_parameter_); | 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) { | 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() | MS_LOG(ERROR) << "UnSupported in_tensors_.shape.size: " << in_tensors_.at(0)->shape().size() | ||||
| << " out_tensors_.size(): " << out_tensors_.size(); | << " out_tensors_.size(): " << out_tensors_.size(); | ||||
| @@ -25,8 +25,10 @@ using mindspore::kernel::KERNEL_ARCH::kGPU; | |||||
| using mindspore::lite::KernelRegistrar; | using mindspore::lite::KernelRegistrar; | ||||
| using mindspore::lite::RET_ERROR; | using mindspore::lite::RET_ERROR; | ||||
| using mindspore::lite::RET_OK; | using mindspore::lite::RET_OK; | ||||
| using mindspore::schema::PrimitiveType_ExpandDims; | |||||
| using mindspore::schema::PrimitiveType_Reshape; | using mindspore::schema::PrimitiveType_Reshape; | ||||
| using mindspore::schema::PrimitiveType_Squeeze; | using mindspore::schema::PrimitiveType_Squeeze; | ||||
| using mindspore::schema::PrimitiveType_Unsqueeze; | |||||
| namespace mindspore::kernel { | 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, kNumberTypeFloat16, PrimitiveType_Reshape, OpenCLKernelCreator<ReshapeOpenCLKernel>) | ||||
| REG_KERNEL(kGPU, kNumberTypeFloat32, PrimitiveType_Squeeze, OpenCLKernelCreator<ReshapeOpenCLKernel>) | REG_KERNEL(kGPU, kNumberTypeFloat32, PrimitiveType_Squeeze, OpenCLKernelCreator<ReshapeOpenCLKernel>) | ||||
| REG_KERNEL(kGPU, kNumberTypeFloat16, 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 | } // namespace mindspore::kernel | ||||
| @@ -24,7 +24,7 @@ namespace { | |||||
| // PrimitiveType_Stack: src/ops/populate/stack_populate.cc | // PrimitiveType_Stack: src/ops/populate/stack_populate.cc | ||||
| OpParameter *CreateParameter(float epsilon, int normalized_dims_, std::vector<int> normalizedShape) { | OpParameter *CreateParameter(float epsilon, int normalized_dims_, std::vector<int> normalizedShape) { | ||||
| auto *param = test::CreateParameter<LayerNormParameter>(schema::PrimitiveType_LayerNorm); | auto *param = test::CreateParameter<LayerNormParameter>(schema::PrimitiveType_LayerNorm); | ||||
| param->elementwise_mode_ = ELEMENTWISE_PER_CHANNEL; | |||||
| param->elementwise_mode_ = ELEMENTWISE_PER_NUM; | |||||
| param->epsilon_ = epsilon; | param->epsilon_ = epsilon; | ||||
| param->normalized_dims_ = normalized_dims_; | param->normalized_dims_ = normalized_dims_; | ||||
| for (int i = 0; i < normalizedShape.size() && i < normalized_dims_; ++i) { | for (int i = 0; i < normalizedShape.size() && i < normalized_dims_; ++i) { | ||||