ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq > Class Template Reference

#include <StdGPUHashBackend.h>

Inheritance diagram for cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >:
Collaboration diagram for cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >:

Public Member Functions

 StdGPUHashBackend (int64_t init_capacity, int64_t key_dsize, const std::vector< int64_t > &value_dsizes, const Device &device)
 
 ~StdGPUHashBackend ()
 
void Reserve (int64_t capacity) override
 
void Insert (const void *input_keys, const std::vector< const void * > &input_values_soa, buf_index_t *output_buf_indices, bool *output_masks, int64_t count) override
 Parallel insert contiguous arrays of keys and values. More...
 
void Find (const void *input_keys, buf_index_t *output_buf_indices, bool *output_masks, int64_t count) override
 Parallel find a contiguous array of keys. More...
 
void Erase (const void *input_keys, bool *output_masks, int64_t count) override
 Parallel erase a contiguous array of keys. More...
 
int64_t GetActiveIndices (buf_index_t *output_indices) override
 Parallel collect all iterators in the hash table. More...
 
void Clear () override
 Clear stored map without reallocating memory. More...
 
int64_t Size () const override
 Get the size (number of valid entries) of the hash map. More...
 
int64_t GetBucketCount () const override
 Get the number of buckets of the hash map. More...
 
std::vector< int64_t > BucketSizes () const override
 Get the number of entries per bucket. More...
 
float LoadFactor () const override
 Get the current load factor, defined as size / bucket count. More...
 
InternalStdGPUHashBackend< Key, Hash, Eq > GetImpl () const
 
void Allocate (int64_t capacity)
 
void Free ()
 
- Public Member Functions inherited from cloudViewer::core::DeviceHashBackend
 DeviceHashBackend (int64_t init_capacity, int64_t key_dsize, const std::vector< int64_t > &value_dsizes, const Device &device)
 
virtual ~DeviceHashBackend ()
 
int64_t GetCapacity () const
 Get the maximum capacity of the hash map. More...
 
Device GetDevice () const
 Get the current device. More...
 
Tensor GetKeyBuffer ()
 Get the key buffer that stores actual keys. More...
 
std::vector< TensorGetValueBuffers ()
 Get the value buffers that store actual array of values. More...
 
Tensor GetValueBuffer (size_t i=0)
 Get the i-th value buffer that store an actual value array. More...
 

Protected Attributes

InternalStdGPUHashBackend< Key, Hash, Eq > impl_
 
CUDAHashBackendBufferAccessor buffer_accessor_
 

Additional Inherited Members

- Public Attributes inherited from cloudViewer::core::DeviceHashBackend
int64_t capacity_
 
int64_t key_dsize_
 
std::vector< int64_t > value_dsizes_
 
Device device_
 
std::shared_ptr< HashBackendBufferbuffer_
 

Detailed Description

template<typename Key, typename Hash, typename Eq>
class cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >

Definition at line 105 of file StdGPUHashBackend.h.

Constructor & Destructor Documentation

◆ StdGPUHashBackend()

template<typename Key , typename Hash , typename Eq >
cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::StdGPUHashBackend ( int64_t  init_capacity,
int64_t  key_dsize,
const std::vector< int64_t > &  value_dsizes,
const Device device 
)

◆ ~StdGPUHashBackend()

template<typename Key , typename Hash , typename Eq >
cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::~StdGPUHashBackend

Definition at line 165 of file StdGPUHashBackend.h.

References cloudViewer::core::Free().

Member Function Documentation

◆ Allocate()

template<typename Key , typename Hash , typename Eq >
void cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::Allocate ( int64_t  capacity)
virtual

◆ BucketSizes()

template<typename Key , typename Hash , typename Eq >
std::vector< int64_t > cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::BucketSizes ( ) const
overridevirtual

Get the number of entries per bucket.

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 292 of file StdGPUHashBackend.h.

References LogError.

◆ Clear()

template<typename Key , typename Hash , typename Eq >
void cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::Clear ( )
overridevirtual

Clear stored map without reallocating memory.

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 274 of file StdGPUHashBackend.h.

◆ Erase()

template<typename Key , typename Hash , typename Eq >
void cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::Erase ( const void *  input_keys,
bool *  output_masks,
int64_t  count 
)
overridevirtual

◆ Find()

template<typename Key , typename Hash , typename Eq >
void cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::Find ( const void *  input_keys,
buf_index_t output_buf_indices,
bool *  output_masks,
int64_t  count 
)
overridevirtual

Parallel find a contiguous array of keys.

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 195 of file StdGPUHashBackend.h.

References count, cloudViewer::core::STDGPUFindKernel(), and cloudViewer::core::cuda::Synchronize().

◆ Free()

template<typename Key , typename Hash , typename Eq >
void cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::Free
virtual

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 411 of file StdGPUHashBackend.h.

◆ GetActiveIndices()

template<typename Key , typename Hash , typename Eq >
int64_t cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::GetActiveIndices ( buf_index_t output_buf_indices)
overridevirtual

Parallel collect all iterators in the hash table.

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 262 of file StdGPUHashBackend.h.

◆ GetBucketCount()

template<typename Key , typename Hash , typename Eq >
int64_t cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::GetBucketCount ( ) const
overridevirtual

Get the number of buckets of the hash map.

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 286 of file StdGPUHashBackend.h.

◆ GetImpl()

template<typename Key , typename Hash , typename Eq >
InternalStdGPUHashBackend<Key, Hash, Eq> cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::GetImpl ( ) const
inline

◆ Insert()

template<typename Key , typename Hash , typename Eq >
void cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::Insert ( const void *  input_keys,
const std::vector< const void * > &  input_values,
buf_index_t output_buf_indices,
bool *  output_masks,
int64_t  count 
)
overridevirtual

Parallel insert contiguous arrays of keys and values.

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 358 of file StdGPUHashBackend.h.

References count, and cloudViewer::core::cuda::Synchronize().

◆ LoadFactor()

template<typename Key , typename Hash , typename Eq >
float cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::LoadFactor ( ) const
overridevirtual

Get the current load factor, defined as size / bucket count.

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 298 of file StdGPUHashBackend.h.

◆ Reserve()

template<typename Key , typename Hash , typename Eq >
void cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::Reserve ( int64_t  capacity)
overridevirtual

Reserve expects a lot of extra memory space at runtime, since it consists of 1) dumping all key value pairs to a buffer 2) creating a new hash table 3) parallel inserting dumped key value pairs 4) deallocating old hash table

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 281 of file StdGPUHashBackend.h.

◆ Size()

template<typename Key , typename Hash , typename Eq >
int64_t cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::Size ( ) const
overridevirtual

Get the size (number of valid entries) of the hash map.

Implements cloudViewer::core::DeviceHashBackend.

Definition at line 171 of file StdGPUHashBackend.h.

Member Data Documentation

◆ buffer_accessor_

template<typename Key , typename Hash , typename Eq >
CUDAHashBackendBufferAccessor cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::buffer_accessor_
protected

Definition at line 150 of file StdGPUHashBackend.h.

◆ impl_

template<typename Key , typename Hash , typename Eq >
InternalStdGPUHashBackend<Key, Hash, Eq> cloudViewer::core::StdGPUHashBackend< Key, Hash, Eq >::impl_
protected

The documentation for this class was generated from the following file: