33 #define INSTANTIATE_TYPES(DTYPE, DIM) \
34 using key_t = utility::MiniVec<DTYPE, DIM>; \
35 using hash_t = utility::MiniVecHash<DTYPE, DIM>; \
36 using eq_t = utility::MiniVecEq<DTYPE, DIM>;
38 #define DIM_SWITCHER(DTYPE, DIM, ...) \
40 INSTANTIATE_TYPES(DTYPE, 1) \
41 return __VA_ARGS__(); \
42 } else if (DIM == 2) { \
43 INSTANTIATE_TYPES(DTYPE, 2) \
44 return __VA_ARGS__(); \
45 } else if (DIM == 3) { \
46 INSTANTIATE_TYPES(DTYPE, 3) \
47 return __VA_ARGS__(); \
48 } else if (DIM == 4) { \
49 INSTANTIATE_TYPES(DTYPE, 4) \
50 return __VA_ARGS__(); \
51 } else if (DIM == 5) { \
52 INSTANTIATE_TYPES(DTYPE, 5) \
53 return __VA_ARGS__(); \
54 } else if (DIM == 6) { \
55 INSTANTIATE_TYPES(DTYPE, 6) \
56 return __VA_ARGS__(); \
59 "Unsupported dim {}, please modify {} and compile from " \
65 #define DISPATCH_DTYPE_AND_DIM_TO_TEMPLATE(DTYPE, DIM, ...) \
67 if (DTYPE == open3d::core::Int64) { \
68 DIM_SWITCHER(int64_t, DIM, __VA_ARGS__) \
69 } else if (DTYPE == open3d::core::Int32) { \
70 DIM_SWITCHER(int, DIM, __VA_ARGS__) \
71 } else if (DTYPE == open3d::core::Int16) { \
72 DIM_SWITCHER(short, DIM, __VA_ARGS__) \
75 "Unsupported dtype {}, please use integer types (Int64, " \
85 #define DISPATCH_DIVISOR_SIZE_TO_BLOCK_T(DIVISOR, ...) \
87 if (DIVISOR == 16) { \
88 using block_t = int4; \
89 return __VA_ARGS__(); \
90 } else if (DIVISOR == 12) { \
91 using block_t = int3; \
92 return __VA_ARGS__(); \
93 } else if (DIVISOR == 8) { \
94 using block_t = int2; \
95 return __VA_ARGS__(); \
96 } else if (DIVISOR == 4) { \
97 using block_t = int; \
98 return __VA_ARGS__(); \
99 } else if (DIVISOR == 2) { \
100 using block_t = int16_t; \
101 return __VA_ARGS__(); \
103 using block_t = uint8_t; \
104 return __VA_ARGS__(); \
112 template <
typename T,
int N>
116 uint64_t hash = UINT64_C(14695981039346656037);
117 #if defined(__CUDA_ARCH__)
120 for (
int i = 0; i < N; ++i) {
121 hash ^=
static_cast<uint64_t>(key[i]);
122 hash *= UINT64_C(1099511628211);
128 template <
typename T,
int N>
133 bool is_equal =
true;
134 #if defined(__CUDA_ARCH__)
137 for (
int i = 0; i < N; ++i) {
138 is_equal = is_equal && (lhs[i] == rhs[i]);
#define OPEN3D_HOST_DEVICE
Definition: CUDAUtils.h:63
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample uint64_t
Definition: K4aPlugin.cpp:362
Definition: PinholeCameraIntrinsic.cpp:35
Definition: Dispatch.h:129
OPEN3D_HOST_DEVICE bool operator()(const MiniVec< T, N > &lhs, const MiniVec< T, N > &rhs) const
Definition: Dispatch.h:131
Definition: Dispatch.h:113
OPEN3D_HOST_DEVICE uint64_t operator()(const MiniVec< T, N > &key) const
Definition: Dispatch.h:115