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]);
Definition: Dispatch.h:129
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: Dispatch.h:113
#define OPEN3D_HOST_DEVICE
Definition: CUDAUtils.h:63
OPEN3D_HOST_DEVICE bool operator()(const MiniVec< T, N > &lhs, const MiniVec< T, N > &rhs) const
Definition: Dispatch.h:131
Definition: PinholeCameraIntrinsic.cpp:35
OPEN3D_HOST_DEVICE uint64_t operator()(const MiniVec< T, N > &key) const
Definition: Dispatch.h:115