Open3D (C++ API)  0.20.0
Loading...
Searching...
No Matches
ContinuousConvSYCLKernels.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2026 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8// SYCL port of ContinuousConvCUDAKernels.{h,cu}. Declares the FillColumn /
9// FillColumnTranspose kernels (coordinate mapping + interpolation, one
10// work-group per output point, ported from FillColumnKernel /
11// FillColumnTransposeKernel) and the small element-wise "multiply by
12// per-column scalar" kernels (used by the transpose/importance paths).
13#pragma once
14
15#include <sycl/sycl.hpp>
16#include <vector>
17
19
20namespace open3d {
21namespace ml {
22namespace impl {
23
31template <class TFeat, class TReal, class TIndex>
32sycl::event FillColumnSYCL(sycl::queue& queue,
33 TFeat* columns,
34 int in_channels,
35 TIndex begin_idx,
36 TIndex end_idx,
37 TIndex num_out,
38 const TReal* const out_positions,
39 TIndex num_inp,
40 const TReal* const inp_positions,
41 const TFeat* const inp_features,
42 const TFeat* const inp_importance,
43 size_t neighbors_index_size,
44 const TIndex* const neighbors_index,
45 const TFeat* const neighbors_importance,
46 const int64_t* const neighbors_row_splits,
47 const TReal* const extents,
48 const TReal* const offsets,
49 const std::vector<int>& filter_dims,
50 InterpolationMode interpolation,
51 CoordinateMapping coordinate_mapping,
52 bool align_corners,
53 bool individual_extent,
54 bool isotropic_extent,
55 bool normalize,
56 const std::vector<sycl::event>& deps = {});
57
61template <class TFeat, class TReal, class TIndex>
62sycl::event FillColumnTransposeSYCL(
63 sycl::queue& queue,
64 TFeat* columns,
65 int in_channels,
66 TIndex begin_idx,
67 TIndex end_idx,
68 TIndex num_out,
69 const TReal* const out_positions,
70 TIndex num_inp,
71 const TReal* const inp_positions,
72 const TFeat* const inp_features,
73 const TFeat* const inp_neighbors_importance_sum,
74 const int64_t* const inp_neighbors_prefix_sum,
75 size_t neighbors_index_size,
76 const TIndex* const neighbors_index,
77 const TFeat* const neighbors_importance,
78 const int64_t* const neighbors_row_splits,
79 const TReal* const extents,
80 const TReal* const offsets,
81 const std::vector<int>& filter_dims,
82 InterpolationMode interpolation,
83 CoordinateMapping coordinate_mapping,
84 bool align_corners,
85 bool individual_extent,
86 bool isotropic_extent,
87 bool normalize,
88 const std::vector<sycl::event>& deps = {});
89
93template <class T>
94sycl::event MultiplyColumnsSYCL(sycl::queue& queue,
95 size_t rows,
96 size_t cols,
97 T* col_major_matrix,
98 const T* const vector,
99 const std::vector<sycl::event>& deps = {});
100
105template <class T>
107 sycl::queue& queue,
108 size_t rows,
109 size_t cols,
110 T* out_ptr,
111 const T* const col_major_matrix,
112 const T* const vector,
113 const std::vector<sycl::event>& deps = {});
114
115} // namespace impl
116} // namespace ml
117} // namespace open3d
const NeighborOffsets & offsets
Definition NormalDistributionsTransform.cpp:254
sycl::queue queue
Definition SYCLContext.cpp:88
sycl::event FillColumnSYCL(sycl::queue &queue, TFeat *columns, int in_channels, TIndex begin_idx, TIndex end_idx, TIndex num_out, const TReal *const out_positions, TIndex num_inp, const TReal *const inp_positions, const TFeat *const inp_features, const TFeat *const inp_importance, size_t neighbors_index_size, const TIndex *const neighbors_index, const TFeat *const neighbors_importance, const int64_t *const neighbors_row_splits, const TReal *const extents, const TReal *const offsets, const std::vector< int > &filter_dims, InterpolationMode interpolation, CoordinateMapping coordinate_mapping, bool align_corners, bool individual_extent, bool isotropic_extent, bool normalize, const std::vector< sycl::event > &deps)
Definition ContinuousConvSYCLKernels.cpp:462
InterpolationMode
Definition ContinuousConvTypes.h:18
sycl::event FillColumnTransposeSYCL(sycl::queue &queue, TFeat *columns, int in_channels, TIndex begin_idx, TIndex end_idx, TIndex num_out, const TReal *const out_positions, TIndex num_inp, const TReal *const inp_positions, const TFeat *const inp_features, const TFeat *const inp_neighbors_importance_sum, const int64_t *const inp_neighbors_prefix_sum, size_t neighbors_index_size, const TIndex *const neighbors_index, const TFeat *const neighbors_importance, const int64_t *const neighbors_row_splits, const TReal *const extents, const TReal *const offsets, const std::vector< int > &filter_dims, InterpolationMode interpolation, CoordinateMapping coordinate_mapping, bool align_corners, bool individual_extent, bool isotropic_extent, bool normalize, const std::vector< sycl::event > &deps)
Definition ContinuousConvSYCLKernels.cpp:533
CoordinateMapping
Definition ContinuousConvTypes.h:26
sycl::event MultiplyColumnsSYCL(sycl::queue &queue, size_t rows, size_t cols, T *col_major_matrix, const T *const vector, const std::vector< sycl::event > &deps)
Definition ContinuousConvSYCLKernels.cpp:25
sycl::event MultiplyAndCopyColumnsSYCL(sycl::queue &queue, size_t rows, size_t cols, T *out_ptr, const T *const col_major_matrix, const T *const vector, const std::vector< sycl::event > &deps)
Definition ContinuousConvSYCLKernels.cpp:50
Definition PinholeCameraIntrinsic.cpp:16