ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
SparseConvCUDAKernels.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 #include <vector>
10 
11 namespace cloudViewer {
12 namespace ml {
13 namespace impl {
14 
66 template <class TReal, class TIndex, class TKernelIndex>
67 void FillColumn(const cudaStream_t& stream,
68  TReal* columns,
69  int in_channels,
70  TIndex begin_idx,
71  TIndex end_idx,
72  TIndex num_out,
73  TIndex num_inp,
74  const TReal* const __restrict__ inp_features,
75  const TReal* const __restrict__ inp_importance,
76  size_t neighbors_index_size,
77  const TIndex* const __restrict__ neighbors_index,
78  const TKernelIndex* const __restrict__ neighbors_kernel_index,
79  const TReal* const __restrict__ neighbors_importance,
80  const int64_t* const __restrict__ neighbors_row_splits,
81  const int num_kernel_elements,
82  bool normalize);
83 
86 template <class TReal, class TIndex, class TKernelIndex>
88  const cudaStream_t& stream,
89  TReal* columns,
90  int in_channels,
91  TIndex begin_idx,
92  TIndex end_idx,
93  TIndex num_out,
94  TIndex num_inp,
95  const TReal* const __restrict__ inp_features,
96  const TReal* const __restrict__ inp_neighbors_importance_sum,
97  const int64_t* const __restrict__ inp_neighbors_prefix_sum,
98  size_t neighbors_index_size,
99  const TIndex* const __restrict__ neighbors_index,
100  const TKernelIndex* const __restrict__ neighbors_kernel_index,
101  const TReal* const __restrict__ neighbors_importance,
102  const int64_t* const __restrict__ neighbors_row_splits,
103  const int num_kernel_elements,
104  bool normalize);
105 
106 } // namespace impl
107 } // namespace ml
108 } // namespace cloudViewer
__host__ __device__ float2 normalize(float2 v)
Definition: cutil_math.h:1179
void FillColumnTranspose(const cudaStream_t &stream, TFeat *columns, int in_channels, TIndex begin_idx, TIndex end_idx, TIndex num_out, const TReal *const __restrict__ out_positions, TIndex num_inp, const TReal *const __restrict__ inp_positions, const TFeat *const __restrict__ inp_features, const TFeat *const __restrict__ inp_neighbors_importance_sum, const int64_t *const __restrict__ inp_neighbors_prefix_sum, size_t neighbors_index_size, const TIndex *const __restrict__ neighbors_index, const TFeat *const __restrict__ neighbors_importance, const int64_t *const __restrict__ neighbors_row_splits, const TReal *const __restrict__ extents, const TReal *const __restrict__ offsets, const std::vector< int > &filter_dims, InterpolationMode interpolation, CoordinateMapping coordinate_mapping, bool align_corners, bool individual_extent, bool isotropic_extent, bool normalize)
void FillColumn(const cudaStream_t &stream, TFeat *columns, int in_channels, TIndex begin_idx, TIndex end_idx, TIndex num_out, const TReal *const __restrict__ out_positions, TIndex num_inp, const TReal *const __restrict__ inp_positions, const TFeat *const __restrict__ inp_features, const TFeat *const __restrict__ inp_importance, size_t neighbors_index_size, const TIndex *const __restrict__ neighbors_index, const TFeat *const __restrict__ neighbors_importance, const int64_t *const __restrict__ neighbors_row_splits, const TReal *const __restrict__ extents, const TReal *const __restrict__ offsets, const std::vector< int > &filter_dims, InterpolationMode interpolation, CoordinateMapping coordinate_mapping, bool align_corners, bool individual_extent, bool isotropic_extent, bool normalize)
Generic file read and write utility for python interface.