From 3e7be9c973c87bf6a97abf0885abfc769a1bcc98 Mon Sep 17 00:00:00 2001 From: zhangyuqin1998 <75946871+zhangyuqin1998@users.noreply.github.com> Date: Sat, 6 May 2023 10:44:24 +0800 Subject: [PATCH] Rename randint_raw and move it to legacy (#53157) * Rename randint_raw and move it to legacy * Update fetch_v2_op.cc * Update randint_kernel.cc * Update randint_kernel.cu * Empty Commit to setup deployments --- paddle/phi/kernels/cpu/randint_kernel.cc | 27 ++------ paddle/phi/kernels/gpu/randint_kernel.cu | 25 ++------ .../phi/kernels/legacy/cpu/randint_kernel.cc | 55 ++++++++++++++++ .../phi/kernels/legacy/gpu/randint_kernel.cu | 48 ++++++++++++++ .../phi/kernels/legacy/xpu/randint_kernel.cc | 64 +++++++++++++++++++ paddle/phi/kernels/randint_kernel.h | 9 --- paddle/phi/kernels/xpu/randint_kernel.cc | 27 ++------ paddle/phi/ops/compat/randint_sig.cc | 6 +- 8 files changed, 190 insertions(+), 71 deletions(-) create mode 100644 paddle/phi/kernels/legacy/cpu/randint_kernel.cc create mode 100644 paddle/phi/kernels/legacy/gpu/randint_kernel.cu create mode 100644 paddle/phi/kernels/legacy/xpu/randint_kernel.cc diff --git a/paddle/phi/kernels/cpu/randint_kernel.cc b/paddle/phi/kernels/cpu/randint_kernel.cc index 2c7433f5d21..72f3b15b934 100644 --- a/paddle/phi/kernels/cpu/randint_kernel.cc +++ b/paddle/phi/kernels/cpu/randint_kernel.cc @@ -22,13 +22,13 @@ namespace phi { template -void RandintRawKernel(const Context& dev_ctx, - int low, - int high, - const IntArray& shape, - DataType dtype, - int seed, - DenseTensor* out) { +void RandintKernel(const Context& dev_ctx, + int low, + int high, + const IntArray& shape, + DataType dtype, + DenseTensor* out) { + int seed = 0; out->Resize(phi::make_ddim(shape.GetData())); T* data = dev_ctx.template Alloc(out); auto numel = out->numel(); @@ -45,20 +45,7 @@ void RandintRawKernel(const Context& dev_ctx, } } -template -void RandintKernel(const Context& dev_ctx, - int low, - int high, - const IntArray& shape, - DataType dtype, - DenseTensor* out) { - RandintRawKernel(dev_ctx, low, high, shape, dtype, 0, out); -} - } // namespace phi -PD_REGISTER_KERNEL( - randint_raw, CPU, ALL_LAYOUT, phi::RandintRawKernel, int, int64_t) {} - PD_REGISTER_KERNEL(randint, CPU, ALL_LAYOUT, phi::RandintKernel, int, int64_t) { } diff --git a/paddle/phi/kernels/gpu/randint_kernel.cu b/paddle/phi/kernels/gpu/randint_kernel.cu index 80deff47970..39a57a5a6e8 100644 --- a/paddle/phi/kernels/gpu/randint_kernel.cu +++ b/paddle/phi/kernels/gpu/randint_kernel.cu @@ -23,21 +23,6 @@ namespace phi { -template -void RandintRawKernel(const Context& dev_ctx, - int low, - int high, - const IntArray& shape, - DataType dtype, - int seed, - DenseTensor* out) { - out->Resize(phi::make_ddim(shape.GetData())); - T* data = dev_ctx.template Alloc(out); - funcs::uniform_distribution dist; - funcs::uniform_int_transform trans(low, high); - funcs::distribution_and_transform(dev_ctx, out, dist, trans); -} - template void RandintKernel(const Context& dev_ctx, int low, @@ -45,13 +30,15 @@ void RandintKernel(const Context& dev_ctx, const IntArray& shape, DataType dtype, DenseTensor* out) { - RandintRawKernel(dev_ctx, low, high, shape, dtype, 0, out); + int seed = 0; + out->Resize(phi::make_ddim(shape.GetData())); + T* data = dev_ctx.template Alloc(out); + funcs::uniform_distribution dist; + funcs::uniform_int_transform trans(low, high); + funcs::distribution_and_transform(dev_ctx, out, dist, trans); } } // namespace phi -PD_REGISTER_KERNEL( - randint_raw, GPU, ALL_LAYOUT, phi::RandintRawKernel, int, int64_t) {} - PD_REGISTER_KERNEL(randint, GPU, ALL_LAYOUT, phi::RandintKernel, int, int64_t) { } diff --git a/paddle/phi/kernels/legacy/cpu/randint_kernel.cc b/paddle/phi/kernels/legacy/cpu/randint_kernel.cc new file mode 100644 index 00000000000..f246ef8faf7 --- /dev/null +++ b/paddle/phi/kernels/legacy/cpu/randint_kernel.cc @@ -0,0 +1,55 @@ +// Copyright (c) 2023 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 + +#include "paddle/phi/backends/cpu/cpu_context.h" +#include "paddle/phi/common/int_array.h" +#include "paddle/phi/core/dense_tensor.h" +#include "paddle/phi/core/kernel_registry.h" + +namespace phi { + +template +void RandintWithSeedKernel(const Context& dev_ctx, + int low, + int high, + const IntArray& shape, + DataType dtype, + int seed, + DenseTensor* out) { + out->Resize(phi::make_ddim(shape.GetData())); + T* data = dev_ctx.template Alloc(out); + auto numel = out->numel(); + std::shared_ptr engine; + if (seed) { + engine = std::make_shared(); + engine->seed(seed); + } else { + engine = dev_ctx.GetGenerator()->GetCPUEngine(); + } + std::uniform_int_distribution dist(low, high - 1); + for (int64_t i = 0; i < numel; ++i) { + data[i] = dist(*engine); + } +} + +} // namespace phi + +PD_REGISTER_KERNEL(randint_with_seed, + CPU, + ALL_LAYOUT, + phi::RandintWithSeedKernel, + int, + int64_t) {} diff --git a/paddle/phi/kernels/legacy/gpu/randint_kernel.cu b/paddle/phi/kernels/legacy/gpu/randint_kernel.cu new file mode 100644 index 00000000000..b4aa5e9d8c4 --- /dev/null +++ b/paddle/phi/kernels/legacy/gpu/randint_kernel.cu @@ -0,0 +1,48 @@ +// Copyright (c) 2023 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 + +#include "paddle/phi/backends/gpu/gpu_context.h" +#include "paddle/phi/common/int_array.h" +#include "paddle/phi/common/memory_utils.h" +#include "paddle/phi/core/dense_tensor.h" +#include "paddle/phi/core/kernel_registry.h" +#include "paddle/phi/kernels/funcs/distribution_helper.h" + +namespace phi { + +template +void RandintWithSeedKernel(const Context& dev_ctx, + int low, + int high, + const IntArray& shape, + DataType dtype, + int seed, + DenseTensor* out) { + out->Resize(phi::make_ddim(shape.GetData())); + T* data = dev_ctx.template Alloc(out); + funcs::uniform_distribution dist; + funcs::uniform_int_transform trans(low, high); + funcs::distribution_and_transform(dev_ctx, out, dist, trans); +} + +} // namespace phi + +PD_REGISTER_KERNEL(randint_with_seed, + GPU, + ALL_LAYOUT, + phi::RandintWithSeedKernel, + int, + int64_t) {} diff --git a/paddle/phi/kernels/legacy/xpu/randint_kernel.cc b/paddle/phi/kernels/legacy/xpu/randint_kernel.cc new file mode 100644 index 00000000000..0349ad964c4 --- /dev/null +++ b/paddle/phi/kernels/legacy/xpu/randint_kernel.cc @@ -0,0 +1,64 @@ +// Copyright (c) 2023 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 + +#include "paddle/phi/backends/xpu/enforce_xpu.h" +#include "paddle/phi/common/int_array.h" +#include "paddle/phi/common/memory_utils.h" +#include "paddle/phi/core/dense_tensor.h" +#include "paddle/phi/core/generator.h" +#include "paddle/phi/core/kernel_registry.h" + +namespace phi { + +template +void RandintWithSeedKernel(const Context& dev_ctx, + int low, + int high, + const IntArray& shape, + DataType dtype, + int seed, + DenseTensor* out) { + int64_t size = out->numel(); + out->Resize(phi::make_ddim(shape.GetData())); + T* data = dev_ctx.template Alloc(out); + auto numel = out->numel(); + std::shared_ptr engine; + if (seed) { + engine = std::make_shared(); + engine->seed(seed); + } else { + engine = dev_ctx.GetGenerator()->GetCPUEngine(); + } + std::unique_ptr data_cpu(new T[size]); + std::uniform_int_distribution dist(low, high - 1); + for (int64_t i = 0; i < numel; ++i) { + data_cpu[i] = dist(*engine); + } + memory_utils::Copy(dev_ctx.GetPlace(), + data, + phi::CPUPlace(), + reinterpret_cast(data_cpu.get()), + size * sizeof(T)); +} + +} // namespace phi + +PD_REGISTER_KERNEL(randint_with_seed, + XPU, + ALL_LAYOUT, + phi::RandintWithSeedKernel, + int, + int64_t) {} diff --git a/paddle/phi/kernels/randint_kernel.h b/paddle/phi/kernels/randint_kernel.h index 85d440e3056..0fe7db803b9 100644 --- a/paddle/phi/kernels/randint_kernel.h +++ b/paddle/phi/kernels/randint_kernel.h @@ -27,13 +27,4 @@ void RandintKernel(const Context& dev_ctx, DataType dtype, DenseTensor* out); -template -void RandintRawKernel(const Context& dev_ctx, - int low, - int high, - const IntArray& shape, - DataType dtype, - int seed, - DenseTensor* out); - } // namespace phi diff --git a/paddle/phi/kernels/xpu/randint_kernel.cc b/paddle/phi/kernels/xpu/randint_kernel.cc index ec17f9a20df..ce86d7e77a9 100644 --- a/paddle/phi/kernels/xpu/randint_kernel.cc +++ b/paddle/phi/kernels/xpu/randint_kernel.cc @@ -24,13 +24,13 @@ namespace phi { template -void RandintRawKernel(const Context& dev_ctx, - int low, - int high, - const IntArray& shape, - DataType dtype, - int seed, - DenseTensor* out) { +void RandintKernel(const Context& dev_ctx, + int low, + int high, + const IntArray& shape, + DataType dtype, + DenseTensor* out) { + int seed = 0; int64_t size = out->numel(); out->Resize(phi::make_ddim(shape.GetData())); T* data = dev_ctx.template Alloc(out); @@ -54,20 +54,7 @@ void RandintRawKernel(const Context& dev_ctx, size * sizeof(T)); } -template -void RandintKernel(const Context& dev_ctx, - int low, - int high, - const IntArray& shape, - DataType dtype, - DenseTensor* out) { - RandintRawKernel(dev_ctx, low, high, shape, dtype, 0, out); -} - } // namespace phi -PD_REGISTER_KERNEL( - randint_raw, XPU, ALL_LAYOUT, phi::RandintRawKernel, int, int64_t) {} - PD_REGISTER_KERNEL(randint, XPU, ALL_LAYOUT, phi::RandintKernel, int, int64_t) { } diff --git a/paddle/phi/ops/compat/randint_sig.cc b/paddle/phi/ops/compat/randint_sig.cc index eb6da78a258..e075a079677 100644 --- a/paddle/phi/ops/compat/randint_sig.cc +++ b/paddle/phi/ops/compat/randint_sig.cc @@ -21,7 +21,7 @@ KernelSignature RandintOpArgumentMapping(const ArgumentMappingContext& ctx) { if (seed) { if (ctx.InputSize("ShapeTensorList") > 0) { return KernelSignature( - "randint_raw", + "randint_with_seed", {}, {"low", "high", "ShapeTensorList", "seed", "dtype"}, {"Out"}); @@ -29,12 +29,12 @@ KernelSignature RandintOpArgumentMapping(const ArgumentMappingContext& ctx) { const auto& shape = paddle::any_cast>(ctx.Attr("shape")); if (ctx.HasInput("ShapeTensor") && shape.empty()) { - return KernelSignature("randint_raw", + return KernelSignature("randint_with_seed", {}, {"low", "high", "ShapeTensor", "seed", "dtype"}, {"Out"}); } else { - return KernelSignature("randint_raw", + return KernelSignature("randint_with_seed", {}, {"low", "high", "shape", "seed", "dtype"}, {"Out"}); -- GitLab