warpcore 0.0.1
Hashing at the Speed of Light on modern CUDA-accelerators
warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize > Class Template Reference

double hashing scheme: \(hash(k,i) = h_1(k)+i\cdot h_2(k)\) More...

Public Types

using key_type = typename Hasher1::key_type
 
using index_type = index_t
 
using tag = typename std::conditional< checks::is_true_permutation_hasher< Hasher1 >() &&checks::is_true_permutation_hasher< Hasher2 >(), tags::cycle_free_probing_scheme, tags::probing_scheme >::type
 

Public Member Functions

__device__ DoubleHashing (index_type capacity, index_type probing_length, const cg::thread_block_tile< CGSize > &group)
 constructor More...
 
template<class T >
__device__ index_type begin (T, T)=delete
 
template<class T >
__device__ index_type begin (T)=delete
 
__device__ index_type begin (key_type key, key_type seed=0) noexcept
 begin probing sequence More...
 
__device__ index_type next () noexcept
 next probing index for key More...
 

Static Public Member Functions

static constexpr __host____device__ index_type cg_size () noexcept
 get cooperative group size More...
 
static constexpr __device__ index_type end () noexcept
 end specifier of probing sequence More...
 

Detailed Description

template<class Hasher1, class Hasher2, index_t CGSize = 1>
class warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >

double hashing scheme: \(hash(k,i) = h_1(k)+i\cdot h_2(k)\)

Template Parameters
Hasher1first hash function
Hasher1second hash function
CGSizecooperative group size

Definition at line 23 of file probing_schemes.cuh.

Member Typedef Documentation

◆ index_type

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
using warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::index_type = index_t

Definition at line 37 of file probing_schemes.cuh.

◆ key_type

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
using warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::key_type = typename Hasher1::key_type

Definition at line 36 of file probing_schemes.cuh.

◆ tag

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
using warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::tag = typename std::conditional< checks::is_true_permutation_hasher<Hasher1>() && checks::is_true_permutation_hasher<Hasher2>(), tags::cycle_free_probing_scheme, tags::probing_scheme>::type

Definition at line 38 of file probing_schemes.cuh.

Constructor & Destructor Documentation

◆ DoubleHashing()

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
__device__ warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::DoubleHashing ( index_type  capacity,
index_type  probing_length,
const cg::thread_block_tile< CGSize > &  group 
)
inlineexplicit

constructor

Parameters
[in]capacitycapacity of the underlying hash table
[in]probing_lengthnumber of probing attempts
[in]groupcooperative group

Definition at line 56 of file probing_schemes.cuh.

Member Function Documentation

◆ begin() [1/3]

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
__device__ index_type warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::begin ( key_type  key,
key_type  seed = 0 
)
inlinenoexcept

begin probing sequence

Parameters
[in]keykey to be probed
[in]seedrandom seed
Returns
initial probing index for key

Definition at line 79 of file probing_schemes.cuh.

◆ begin() [2/3]

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
template<class T >
__device__ index_type warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::begin ( )
inlinedelete

◆ begin() [3/3]

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
template<class T >
__device__ index_type warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::begin ( ,
 
)
inlinedelete

◆ cg_size()

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
static constexpr __host____device__ index_type warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::cg_size ( )
inlinestaticconstexprnoexcept

get cooperative group size

Returns
cooperative group size

Definition at line 48 of file probing_schemes.cuh.

◆ end()

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
static constexpr __device__ index_type warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::end ( )
inlinestaticconstexprnoexcept

end specifier of probing sequence

Returns
end specifier

Definition at line 106 of file probing_schemes.cuh.

◆ next()

template<class Hasher1 , class Hasher2 , index_t CGSize = 1>
__device__ index_type warpcore::probing_schemes::DoubleHashing< Hasher1, Hasher2, CGSize >::next ( )
inlinenoexcept

next probing index for key

Returns
next probing index for key

Definition at line 94 of file probing_schemes.cuh.


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