From 077aa3827bd28d50734f5ecc1f7b9f654bd72a7b Mon Sep 17 00:00:00 2001 From: risemeup1 <62429225+risemeup1@users.noreply.github.com> Date: Wed, 31 Aug 2022 16:48:50 +0800 Subject: [PATCH] move label_smmoth XPU kernel to PHI,test=kunlun (#45571) * move label_smmoth XPU kernel to PHI,test=kunlun * delete label_smooth_op_xpu.cc and modfied label_smooth_kernel.cc,test=kunlun * delete add_label_smooth.cc,test=kunlun --- paddle/fluid/operators/label_smooth_op_xpu.cc | 62 ------------------- paddle/phi/kernels/xpu/label_smooth_kernel.cc | 48 ++++++++++++++ 2 files changed, 48 insertions(+), 62 deletions(-) delete mode 100644 paddle/fluid/operators/label_smooth_op_xpu.cc create mode 100644 paddle/phi/kernels/xpu/label_smooth_kernel.cc diff --git a/paddle/fluid/operators/label_smooth_op_xpu.cc b/paddle/fluid/operators/label_smooth_op_xpu.cc deleted file mode 100644 index ae458e99354..00000000000 --- a/paddle/fluid/operators/label_smooth_op_xpu.cc +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -#ifdef PADDLE_WITH_XPU -#include "paddle/fluid/framework/op_registry.h" - -namespace paddle { -namespace operators { - -template -class LabelSmoothXPUKernel : public framework::OpKernel { - public: - void Compute(const framework::ExecutionContext& ctx) const { - auto* out_t = ctx.Output("Out"); - auto* in_t = ctx.Input("X"); - auto* dist_t = ctx.Input("PriorDist"); - auto label_dim = in_t->dims()[in_t->dims().size() - 1]; - auto ptr = out_t->mutable_data(ctx.GetPlace()); - - auto epsilon = ctx.Attr("epsilon"); - auto& dev_ctx = ctx.template device_context(); - if (dist_t) { - PADDLE_THROW( - platform::errors::External("XPU doesn't support dist label smooth")); - } else { - int r = xpu::label_smooth(dev_ctx.x_context(), - in_t->data(), - ptr, - in_t->numel(), - epsilon, - label_dim); - PADDLE_ENFORCE_EQ( - r, - XPU_SUCCESS, - platform::errors::External("XPU API(label_smooth) return wrong " - "value[%d %s]", - r, - XPUAPIErrorMsg[r])); - } - } -}; - -} // namespace operators -} // namespace paddle - -namespace ops = paddle::operators; - -REGISTER_OP_XPU_KERNEL( - label_smooth, - ops::LabelSmoothXPUKernel); -#endif diff --git a/paddle/phi/kernels/xpu/label_smooth_kernel.cc b/paddle/phi/kernels/xpu/label_smooth_kernel.cc new file mode 100644 index 00000000000..c96326138fd --- /dev/null +++ b/paddle/phi/kernels/xpu/label_smooth_kernel.cc @@ -0,0 +1,48 @@ +// Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#include "paddle/phi/kernels/label_smooth_kernel.h" +#include "paddle/phi/core/kernel_registry.h" +namespace phi { + +template +void LabelSmoothKernel(const Context& ctx, + const DenseTensor& label, + const paddle::optional& prior_dist, + float epsilon, + DenseTensor* out) { + auto label_dim = label.dims()[label.dims().size() - 1]; + auto ptr = ctx.template Alloc(out); + if (prior_dist.is_initialized()) { + PADDLE_THROW( + phi::errors::External("XPU doesn't support dist label smooth")); + } else { + int r = xpu::label_smooth(ctx.x_context(), + label.data(), + ptr, + label.numel(), + epsilon, + label_dim); + PADDLE_ENFORCE_EQ( + r, + XPU_SUCCESS, + phi::errors::External("XPU API(label_smooth) return wrong " + "value[%d %s]", + r, + XPUAPIErrorMsg[r])); + } +} +} // namespace phi + +PD_REGISTER_KERNEL( + label_smooth, XPU, ALL_LAYOUT, phi::LabelSmoothKernel, float) {} -- GitLab