diff --git a/paddle/phi/kernels/cpu/lookup_table_grad_kernel.cc b/paddle/phi/kernels/cpu/lookup_table_grad_kernel.cc index 7fb86c520678cf..34da4253d19206 100644 --- a/paddle/phi/kernels/cpu/lookup_table_grad_kernel.cc +++ b/paddle/phi/kernels/cpu/lookup_table_grad_kernel.cc @@ -11,7 +11,7 @@ // 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/lookup_table_grad_kernel.h" #include #include @@ -25,8 +25,6 @@ namespace phi { -constexpr int64_t kNoPadding = -1; - template void LookupTableGradKernel(const Context &dev_ctx, const DenseTensor &w, diff --git a/paddle/phi/kernels/cpu/lookup_table_kernel.cc b/paddle/phi/kernels/cpu/lookup_table_kernel.cc index bc9e84d6899f2b..58b9542166fe1f 100644 --- a/paddle/phi/kernels/cpu/lookup_table_kernel.cc +++ b/paddle/phi/kernels/cpu/lookup_table_kernel.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "paddle/phi/kernels/lookup_table_kernel.h" #include #include - #include "paddle/phi/core/dense_tensor.h" #include "paddle/phi/core/enforce.h" #include "paddle/phi/kernels/funcs/blas/blas.h" diff --git a/paddle/phi/kernels/gpu/lookup_table_grad_kernel.cu b/paddle/phi/kernels/gpu/lookup_table_grad_kernel.cu index 466947676d383d..1a989960d47629 100644 --- a/paddle/phi/kernels/gpu/lookup_table_grad_kernel.cu +++ b/paddle/phi/kernels/gpu/lookup_table_grad_kernel.cu @@ -11,7 +11,7 @@ // 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/lookup_table_grad_kernel.h" #include "paddle/phi/backends/gpu/gpu_primitives.h" #include "paddle/phi/common/memory_utils.h" #include "paddle/phi/core/kernel_registry.h" diff --git a/paddle/phi/kernels/gpu/lookup_table_kernel.cu b/paddle/phi/kernels/gpu/lookup_table_kernel.cu index 7b601eaa17d5ca..a21834887b3d19 100644 --- a/paddle/phi/kernels/gpu/lookup_table_kernel.cu +++ b/paddle/phi/kernels/gpu/lookup_table_kernel.cu @@ -11,7 +11,7 @@ // 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/lookup_table_kernel.h" #include "paddle/phi/backends/gpu/gpu_primitives.h" #include "paddle/phi/common/memory_utils.h" #include "paddle/phi/core/kernel_registry.h" diff --git a/paddle/phi/kernels/lookup_table_grad_kernel.h b/paddle/phi/kernels/lookup_table_grad_kernel.h new file mode 100644 index 00000000000000..5d8f72854f7127 --- /dev/null +++ b/paddle/phi/kernels/lookup_table_grad_kernel.h @@ -0,0 +1,109 @@ +// Copyright (c) 2024 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. + +#pragma once + +#include +#include + +#include "paddle/phi/core/dense_tensor.h" +#include "paddle/phi/core/enforce.h" +#include "paddle/phi/core/selected_rows.h" + +namespace phi { + +constexpr int64_t kNoPadding = -1; + +template +void LookupTableGradCUDAKernel(const Context &dev_ctx, + const DenseTensor &w, + const DenseTensor &ids_in, + const DenseTensor &out_grad, + bool is_sparse, + bool is_distributed, + int64_t padding_idx, + bool remote_prefetch, + const std::string &entry_config, + bool is_test, + const std::string &entry, + const std::string &table_class, + const std::vector &table_names, + int trainer_id, + bool grad_inplace, + const std::vector &epmap, + const std::vector &height_sections, + DenseTensor *w_grad); + +template +void LookupTableSparseGradCUDAKernel( + const Context &dev_ctx, + const DenseTensor &w, + const DenseTensor &ids_in, + const DenseTensor &out_grad, + bool is_sparse, + bool is_distributed, + int64_t padding_idx, + bool remote_prefetch, + const std::string &entry_config, + bool is_test, + const std::string &entry, + const std::string &table_class, + const std::vector &table_names, + int trainer_id, + bool grad_inplace, + const std::vector &epmap, + const std::vector &height_sections, + SelectedRows *w_grad); + +template +void LookupTableGradKernel(const Context &dev_ctx, + const DenseTensor &w, + const DenseTensor &ids_in, + const DenseTensor &out_grad, + bool is_sparse, + bool is_distributed, + int64_t padding_idx, + bool remote_prefetch, + const std::string &entry_config, + bool is_test, + const std::string &entry, + const std::string &table_class, + const std::vector &table_names, + int trainer_id, + bool grad_inplace, + const std::vector &epmap, + const std::vector &height_sections, + DenseTensor *w_grad); + +template +void LookupTableSparseGradKernel(const Context &dev_ctx, + const DenseTensor &w, + const DenseTensor &ids_in, + const DenseTensor &out_grad, + bool is_sparse, + bool is_distributed, + int64_t padding_idx, + bool remote_prefetch, + const std::string &entry_config, + bool is_test, + const std::string &entry, + const std::string &table_class, + const std::vector &table_names, + int trainer_id, + bool grad_inplace, + const std::vector &epmap, + const std::vector &height_sections, + SelectedRows *w_grad); + +} // namespace phi diff --git a/paddle/phi/kernels/lookup_table_kernel.h b/paddle/phi/kernels/lookup_table_kernel.h new file mode 100644 index 00000000000000..94be9b655f95ac --- /dev/null +++ b/paddle/phi/kernels/lookup_table_kernel.h @@ -0,0 +1,65 @@ +// Copyright (c) 2024 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. + +#pragma once + +#include +#include + +#include "paddle/phi/core/dense_tensor.h" +#include "paddle/phi/core/enforce.h" + +namespace phi { + +constexpr int64_t kNoPadding = -1; + +template +void LookupTableCUDAKernel(const Context &dev_ctx, + const DenseTensor &w, + const DenseTensor &ids_in, + bool is_sparse, + bool is_distributed, + int64_t padding_idx, + bool remote_prefetch, + const std::string &entry_config, + bool is_test, + const std::string &entry, + const std::string &table_class, + const std::vector &table_names, + int trainer_id, + bool grad_inplace, + const std::vector &epmap, + const std::vector &height_sections, + DenseTensor *out); + +template +void LookupTableKernel(const Context &dev_ctx, + const DenseTensor &w, + const DenseTensor &ids_in, + bool is_sparse, + bool is_distributed, + int64_t padding_idx, + bool remote_prefetch, + const std::string &entry_config, + bool is_test, + const std::string &entry, + const std::string &table_class, + const std::vector &table_names, + int trainer_id, + bool grad_inplace, + const std::vector &epmap, + const std::vector &height_sections, + DenseTensor *out); + +} // namespace phi