From 35e15f399601c818a3efacd2c7d230a8fadcb379 Mon Sep 17 00:00:00 2001 From: inter Date: Sun, 21 Sep 2025 20:19:18 +0800 Subject: [PATCH] Add File --- .../pointnet2_batch/src/sampling.cpp | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 pcdet/ops/pointnet2/pointnet2_batch/src/sampling.cpp diff --git a/pcdet/ops/pointnet2/pointnet2_batch/src/sampling.cpp b/pcdet/ops/pointnet2/pointnet2_batch/src/sampling.cpp new file mode 100644 index 0000000..b001430 --- /dev/null +++ b/pcdet/ops/pointnet2/pointnet2_batch/src/sampling.cpp @@ -0,0 +1,46 @@ +/* +batch version of point sampling and gathering, modified from the original implementation of official PointNet++ codes. +Written by Shaoshuai Shi +All Rights Reserved 2018. +*/ + + +#include +#include +#include +#include "sampling_gpu.h" + + +int gather_points_wrapper_fast(int b, int c, int n, int npoints, + at::Tensor points_tensor, at::Tensor idx_tensor, at::Tensor out_tensor){ + const float *points = points_tensor.data(); + const int *idx = idx_tensor.data(); + float *out = out_tensor.data(); + + gather_points_kernel_launcher_fast(b, c, n, npoints, points, idx, out); + return 1; +} + + +int gather_points_grad_wrapper_fast(int b, int c, int n, int npoints, + at::Tensor grad_out_tensor, at::Tensor idx_tensor, at::Tensor grad_points_tensor) { + + const float *grad_out = grad_out_tensor.data(); + const int *idx = idx_tensor.data(); + float *grad_points = grad_points_tensor.data(); + + gather_points_grad_kernel_launcher_fast(b, c, n, npoints, grad_out, idx, grad_points); + return 1; +} + + +int farthest_point_sampling_wrapper(int b, int n, int m, + at::Tensor points_tensor, at::Tensor temp_tensor, at::Tensor idx_tensor) { + + const float *points = points_tensor.data(); + float *temp = temp_tensor.data(); + int *idx = idx_tensor.data(); + + farthest_point_sampling_kernel_launcher(b, n, m, points, temp, idx); + return 1; +}