|
Open3D (C++ API)
0.18.0+252c867
|
#include <HashMap.h>
Public Member Functions | |
| HashMap (int64_t init_capacity, const Dtype &key_dtype, const SizeVector &key_element_shape, const Dtype &value_dtype, const SizeVector &value_element_shapes, const Device &device, const HashBackendType &backend=HashBackendType::Default) | |
| Initialize a hash map given a key and a value dtype and element shape. More... | |
| HashMap (int64_t init_capacity, const Dtype &key_dtype, const SizeVector &key_element_shape, const std::vector< Dtype > &dtypes_value, const std::vector< SizeVector > &element_shapes_value, const Device &device, const HashBackendType &backend=HashBackendType::Default) | |
| ~HashMap ()=default | |
| Default destructor. More... | |
| void | Reserve (int64_t capacity) |
| Reserve the internal hash map with the given capacity by rehashing. More... | |
| std::pair< Tensor, Tensor > | Insert (const Tensor &input_keys, const Tensor &input_values) |
| std::pair< Tensor, Tensor > | Insert (const Tensor &input_keys, const std::vector< Tensor > &input_values_soa) |
| std::pair< Tensor, Tensor > | Activate (const Tensor &input_keys) |
| std::pair< Tensor, Tensor > | Find (const Tensor &input_keys) |
| Tensor | Erase (const Tensor &input_keys) |
| Tensor | GetActiveIndices () const |
| void | Insert (const Tensor &input_keys, const Tensor &input_values, Tensor &output_buf_indices, Tensor &output_masks) |
| void | Insert (const Tensor &input_keys, const std::vector< Tensor > &input_values_soa, Tensor &output_buf_indices, Tensor &output_masks) |
| void | Activate (const Tensor &input_keys, Tensor &output_buf_indices, Tensor &output_masks) |
| void | Find (const Tensor &input_keys, Tensor &output_buf_indices, Tensor &output_masks) |
| void | Erase (const Tensor &input_keys, Tensor &output_masks) |
| void | GetActiveIndices (Tensor &output_buf_indices) const |
| void | Clear () |
| Clear stored map without reallocating the buffers. More... | |
| void | Save (const std::string &file_name) |
| HashMap | Clone () const |
| Clone the hash map with buffers. More... | |
| HashMap | To (const Device &device, bool copy=false) const |
| Convert the hash map to another device. More... | |
| int64_t | Size () const |
| Get the size (number of active entries) of the hash map. More... | |
| int64_t | GetCapacity () const |
| Get the capacity of the hash map. More... | |
| int64_t | GetBucketCount () const |
| Get the number of buckets of the internal hash map. More... | |
| Device | GetDevice () const override |
| Get the device of the hash map. More... | |
| Tensor | GetKeyTensor () const |
| std::vector< Tensor > | GetValueTensors () const |
| Tensor | GetValueTensor (size_t index=0) const |
| std::vector< int64_t > | BucketSizes () const |
| Return number of elements per bucket. More... | |
| float | LoadFactor () const |
| Return size / bucket_count. More... | |
| std::shared_ptr< DeviceHashBackend > | GetDeviceHashBackend () const |
| Return the implementation of the device hash backend. More... | |
Public Member Functions inherited from open3d::core::IsDevice | |
| IsDevice ()=default | |
| virtual | ~IsDevice ()=default |
| bool | IsCPU () const |
| bool | IsCUDA () const |
Static Public Member Functions | |
| static HashMap | Load (const std::string &file_name) |
Protected Member Functions | |
| void | Init (int64_t init_capacity, const Device &device, const HashBackendType &backend) |
| void | InsertImpl (const Tensor &input_keys, const std::vector< Tensor > &input_values_soa, Tensor &output_buf_indices, Tensor &output_masks, bool is_activate_op=false) |
| void | CheckKeyLength (const Tensor &input_keys) const |
| void | CheckKeyValueLengthCompatibility (const Tensor &input_keys, const std::vector< Tensor > &input_values_soa) const |
| void | CheckKeyCompatibility (const Tensor &input_keys) const |
| void | CheckValueCompatibility (const std::vector< Tensor > &input_values_soa) const |
| void | PrepareIndicesOutput (Tensor &output_buf_indices, int64_t length) const |
| void | PrepareMasksOutput (Tensor &output_masks, int64_t length) const |
| std::pair< int64_t, std::vector< int64_t > > | GetCommonValueSizeDivisor () |
| open3d::core::HashMap::HashMap | ( | int64_t | init_capacity, |
| const Dtype & | key_dtype, | ||
| const SizeVector & | key_element_shape, | ||
| const Dtype & | value_dtype, | ||
| const SizeVector & | value_element_shapes, | ||
| const Device & | device, | ||
| const HashBackendType & | backend = HashBackendType::Default |
||
| ) |
Initialize a hash map given a key and a value dtype and element shape.
| open3d::core::HashMap::HashMap | ( | int64_t | init_capacity, |
| const Dtype & | key_dtype, | ||
| const SizeVector & | key_element_shape, | ||
| const std::vector< Dtype > & | dtypes_value, | ||
| const std::vector< SizeVector > & | element_shapes_value, | ||
| const Device & | device, | ||
| const HashBackendType & | backend = HashBackendType::Default |
||
| ) |
Initialize a hash map given a key dtype and element shape, and a vector of value dtypes and element shapes for values stored in structure of arrays.
|
default |
Default destructor.
Parallel activate arrays of keys in Tensor. Specifically useful for large value elements (e.g., a 3D tensor), where we can do in-place management after activation. Return: output_buf_indices and output_masks, their roles are the same as in Insert.
| void open3d::core::HashMap::Activate | ( | const Tensor & | input_keys, |
| Tensor & | output_buf_indices, | ||
| Tensor & | output_masks | ||
| ) |
Same as Activate, but takes output_buf_indices and output_masks as input. If their shapes and types match, reallocation is not needed.
| std::vector< int64_t > open3d::core::HashMap::BucketSizes | ( | ) | const |
Return number of elements per bucket.
|
protected |
|
protected |
|
protected |
|
protected |
| void open3d::core::HashMap::Clear | ( | ) |
Clear stored map without reallocating the buffers.
| HashMap open3d::core::HashMap::Clone | ( | ) | const |
Clone the hash map with buffers.
Parallel erase an array of keys in Tensor. Return: output_masks stores if the erase is a success or failure (key not found all already erased in another thread).
Same as Erase, but takes output_masks as input. If its shape and type matches, reallocation is not needed.
Parallel find an array of keys in Tensor. Return: output_buf_indices, its role is the same as in Insert. Return: output_masks stores if the finding is a success or failure (key not found).
| void open3d::core::HashMap::Find | ( | const Tensor & | input_keys, |
| Tensor & | output_buf_indices, | ||
| Tensor & | output_masks | ||
| ) |
Same as Find, but takes output_buf_indices and output_masks as input. If their shapes and types match, reallocation is not needed.
| Tensor open3d::core::HashMap::GetActiveIndices | ( | ) | const |
Parallel collect all indices in the buffer corresponding to the active entries in the hash map. Return output_buf_indices, collected buffer indices.
| void open3d::core::HashMap::GetActiveIndices | ( | Tensor & | output_buf_indices | ) | const |
Same as GetActiveIndices, but takes output_buf_indices as input. If its shape and type matches, reallocation is not needed.
| int64_t open3d::core::HashMap::GetBucketCount | ( | ) | const |
Get the number of buckets of the internal hash map.
| int64_t open3d::core::HashMap::GetCapacity | ( | ) | const |
Get the capacity of the hash map.
|
protected |
|
overridevirtual |
Get the device of the hash map.
Implements open3d::core::IsDevice.
|
inline |
Return the implementation of the device hash backend.
| Tensor open3d::core::HashMap::GetKeyTensor | ( | ) | const |
Get the key tensor buffer to be used along with buf_indices and masks. Example: GetKeyTensor().IndexGet({buf_indices.To(core::Int64).IndexGet{masks}})
| Tensor open3d::core::HashMap::GetValueTensor | ( | size_t | index = 0 | ) | const |
Get the i-th value tensor buffer to be used along with buf_indices and masks. Example: GetValueTensors(0).IndexGet({buf_indices.To(core::Int64).IndexGet{masks}})
| std::vector< Tensor > open3d::core::HashMap::GetValueTensors | ( | ) | const |
Get the values tensor buffers to be used along with buf_indices and masks. Example: GetValueTensors()[0].IndexGet({buf_indices.To(core::Int64).IndexGet{masks}})
|
protected |
| std::pair< Tensor, Tensor > open3d::core::HashMap::Insert | ( | const Tensor & | input_keys, |
| const std::vector< Tensor > & | input_values_soa | ||
| ) |
Parallel insert arrays of keys and a structure of value arrays in Tensors. Return: output_buf_indices and output_masks, their role are the same as in single value Insert interface.
| void open3d::core::HashMap::Insert | ( | const Tensor & | input_keys, |
| const std::vector< Tensor > & | input_values_soa, | ||
| Tensor & | output_buf_indices, | ||
| Tensor & | output_masks | ||
| ) |
Same as Insert with a SoA of values, but takes output_buf_indices and output_masks as input. If their shapes and types match, reallocation is not needed.
| std::pair< Tensor, Tensor > open3d::core::HashMap::Insert | ( | const Tensor & | input_keys, |
| const Tensor & | input_values | ||
| ) |
Parallel insert arrays of keys and values in Tensors. Return: output_buf_indices stores buffer indices that access buffer tensors obtained from GetKeyTensor() and GetValueTensor() via advanced indexing. NOTE: output_buf_indices are stored in Int32. A conversion to Int64 is required for further indexing. Return: output_masks stores if the insertion is a success or failure (key already exists).
| void open3d::core::HashMap::Insert | ( | const Tensor & | input_keys, |
| const Tensor & | input_values, | ||
| Tensor & | output_buf_indices, | ||
| Tensor & | output_masks | ||
| ) |
Same as Insert with a single value array, but takes output_buf_indices and output_masks as input. If their shapes and types match, reallocation is not needed.
|
protected |
|
static |
Load active keys and values from a npz file that contains 'key', 'n_values', 'value_{:03d}'.
| float open3d::core::HashMap::LoadFactor | ( | ) | const |
Return size / bucket_count.
|
protected |
|
protected |
| void open3d::core::HashMap::Reserve | ( | int64_t | capacity | ) |
Reserve the internal hash map with the given capacity by rehashing.
| void open3d::core::HashMap::Save | ( | const std::string & | file_name | ) |
Save active keys and values to a npz file at 'key' and 'value_{:03d}'. The number of values is stored in 'n_values'. The file name should end with 'npz', otherwise 'npz' will be added as an extension.
| int64_t open3d::core::HashMap::Size | ( | ) | const |
Get the size (number of active entries) of the hash map.
Convert the hash map to another device.