Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | List of all members
Tpetra::Details::Hash< KeyType, DeviceType, OffsetType, ResultType > Struct Template Reference

The hash function for FixedHashTable. More...

#include <Tpetra_Details_Hash.hpp>

Public Types

typedef KeyType argument_type
 Type of the hash function's input.
 
typedef ResultType result_type
 Type of the return value of the hash function.
 
typedef OffsetType offset_type
 Type of offsets into the hash table's array of (key,value) pairs.
 

Static Public Member Functions

static KOKKOS_INLINE_FUNCTION result_type hashFunc (const argument_type &key, const offset_type &size)
 The hash function.
 
static result_type getRecommendedSize (const offset_type size)
 Number of "buckets" that the constructor of FixedHashTable should allocate.
 

Detailed Description

template<class KeyType, class DeviceType, class OffsetType = typename std::make_signed<typename Kokkos::View<KeyType*, DeviceType>::size_type>::type, class ResultType = int>
struct Tpetra::Details::Hash< KeyType, DeviceType, OffsetType, ResultType >

The hash function for FixedHashTable.

Template Parameters
KeyTypeThe type of hash function inputs. Corresponds to Tpetra's GlobalOrdinal type.
DeviceTypeKokkos::Device specialization.
OffsetTypeType of each entry of the "buckets" (offsets) array ptr_ in FixedHashTable.
ResultTypeType of the return value of the hash function.

Definition at line 75 of file Tpetra_Details_Hash.hpp.

Member Typedef Documentation

◆ argument_type

template<class KeyType , class DeviceType , class OffsetType = typename std::make_signed<typename Kokkos::View<KeyType*, DeviceType>::size_type>::type, class ResultType = int>
typedef KeyType Tpetra::Details::Hash< KeyType, DeviceType, OffsetType, ResultType >::argument_type

Type of the hash function's input.

This is the same typedef as found in std::hash.

Definition at line 79 of file Tpetra_Details_Hash.hpp.

◆ result_type

template<class KeyType , class DeviceType , class OffsetType = typename std::make_signed<typename Kokkos::View<KeyType*, DeviceType>::size_type>::type, class ResultType = int>
typedef ResultType Tpetra::Details::Hash< KeyType, DeviceType, OffsetType, ResultType >::result_type

Type of the return value of the hash function.

This is the same typedef as found in std::hash.

Definition at line 84 of file Tpetra_Details_Hash.hpp.

◆ offset_type

template<class KeyType , class DeviceType , class OffsetType = typename std::make_signed<typename Kokkos::View<KeyType*, DeviceType>::size_type>::type, class ResultType = int>
typedef OffsetType Tpetra::Details::Hash< KeyType, DeviceType, OffsetType, ResultType >::offset_type

Type of offsets into the hash table's array of (key,value) pairs.

Definition at line 87 of file Tpetra_Details_Hash.hpp.

Member Function Documentation

◆ hashFunc()

template<class KeyType , class DeviceType , class OffsetType = typename std::make_signed<typename Kokkos::View<KeyType*, DeviceType>::size_type>::type, class ResultType = int>
static KOKKOS_INLINE_FUNCTION result_type Tpetra::Details::Hash< KeyType, DeviceType, OffsetType, ResultType >::hashFunc ( const argument_type key,
const offset_type size 
)
inlinestatic

The hash function.

Parameters
key[in] The key to hash.
size[in] Number of "buckets" in the hash table.

It is legal to call this function in a Kokkos parallel kernel.

Definition at line 96 of file Tpetra_Details_Hash.hpp.

◆ getRecommendedSize()

template<class KeyType , class DeviceType , class OffsetType = typename std::make_signed<typename Kokkos::View<KeyType*, DeviceType>::size_type>::type, class ResultType = int>
static result_type Tpetra::Details::Hash< KeyType, DeviceType, OffsetType, ResultType >::getRecommendedSize ( const offset_type  size)
inlinestatic

Number of "buckets" that the constructor of FixedHashTable should allocate.

Parameters
size[in] Number of entries in the table. (FixedHashTable fixes the number of entries in its constructor.)

This is included in Hash, because a correct and efficient implementation is a function of result_type. The point is to factor out all of the non-generic stuff into this Hash struct, which can be specialized for the types of interest.

Definition at line 112 of file Tpetra_Details_Hash.hpp.


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