cuSBF
Loading...
Searching...
No Matches
Public Types | Static Public Attributes | List of all members
cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ > Struct Template Reference

Compile-time configuration for a cusbf::Filter. More...

Public Types

using Alphabet = Alphabet_
 

Static Public Attributes

static constexpr uint16_t k = K_
 
static constexpr uint16_t m = M_
 
static constexpr uint16_t s = S_
 
static constexpr uint64_t hashCount = HashCount_
 
static constexpr uint64_t alphabetSize = Alphabet::symbolCount
 
static constexpr uint64_t symbolWidth = Alphabet::symbolWidth
 
static constexpr uint64_t symbolBits = cuda::std::bit_width(alphabetSize - 1)
 
static constexpr uint64_t symbolMask = (uint64_t{1} << symbolBits) - 1
 
static constexpr uint64_t filterBlockBits = 256
 
static constexpr uint64_t cudaBlockSize = CudaBlockSize_
 
static constexpr uint64_t wordBits = 64
 
static constexpr uint64_t blockWordCount = filterBlockBits / wordBits
 
static constexpr uint64_t minimizerSpan = k - m + 1
 
static constexpr uint64_t findereSpan = k - s + 1
 
static constexpr uint64_t insertGroupSize = blockWordCount
 
static constexpr uint64_t queryGroupSize = 1
 
static constexpr uint64_t maxRunKmers = cudaBlockSize
 

Detailed Description

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
struct cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >

Compile-time configuration for a cusbf::Filter.

All filter behaviour (k-mer length, minimizer width, s-mer width, hash count, CUDA block size, and alphabet) is encoded in this struct so that separate configurations produce completely independent Filter types with zero run-time overhead.

Template Parameters
K_k-mer length (1-32).
S_s-mer width used as the Bloom hash seed (1-k).
M_minimizer width used for shard selection (1-k).
HashCount_number of independent Bloom hash functions (1-16, default 4).
CudaBlockSize_CUDA threads per block (multiple of 32, default 256).
Alphabet_byte-to-symbol alphabet encoding.

Definition at line 60 of file BloomFilter.cuh.

Member Typedef Documentation

◆ Alphabet

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
using cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::Alphabet = Alphabet_

Definition at line 61 of file BloomFilter.cuh.

Member Data Documentation

◆ alphabetSize

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::alphabetSize = Alphabet::symbolCount
staticconstexpr

Definition at line 67 of file BloomFilter.cuh.

◆ blockWordCount

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::blockWordCount = filterBlockBits / wordBits
staticconstexpr

Definition at line 75 of file BloomFilter.cuh.

◆ cudaBlockSize

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::cudaBlockSize = CudaBlockSize_
staticconstexpr

Definition at line 72 of file BloomFilter.cuh.

◆ filterBlockBits

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::filterBlockBits = 256
staticconstexpr

Definition at line 71 of file BloomFilter.cuh.

◆ findereSpan

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::findereSpan = k - s + 1
staticconstexpr

Definition at line 77 of file BloomFilter.cuh.

◆ hashCount

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::hashCount = HashCount_
staticconstexpr

Definition at line 66 of file BloomFilter.cuh.

◆ insertGroupSize

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::insertGroupSize = blockWordCount
staticconstexpr

Definition at line 78 of file BloomFilter.cuh.

◆ k

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint16_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::k = K_
staticconstexpr

Definition at line 63 of file BloomFilter.cuh.

◆ m

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint16_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::m = M_
staticconstexpr

Definition at line 64 of file BloomFilter.cuh.

◆ maxRunKmers

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::maxRunKmers = cudaBlockSize
staticconstexpr

Definition at line 80 of file BloomFilter.cuh.

◆ minimizerSpan

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::minimizerSpan = k - m + 1
staticconstexpr

Definition at line 76 of file BloomFilter.cuh.

◆ queryGroupSize

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::queryGroupSize = 1
staticconstexpr

Definition at line 79 of file BloomFilter.cuh.

◆ s

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint16_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::s = S_
staticconstexpr

Definition at line 65 of file BloomFilter.cuh.

◆ symbolBits

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::symbolBits = cuda::std::bit_width(alphabetSize - 1)
staticconstexpr

Definition at line 69 of file BloomFilter.cuh.

◆ symbolMask

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::symbolMask = (uint64_t{1} << symbolBits) - 1
staticconstexpr

Definition at line 70 of file BloomFilter.cuh.

◆ symbolWidth

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::symbolWidth = Alphabet::symbolWidth
staticconstexpr

Definition at line 68 of file BloomFilter.cuh.

◆ wordBits

template<uint16_t K_, uint16_t S_, uint16_t M_, uint64_t HashCount_ = 4, uint64_t CudaBlockSize_ = 256, Alphabet Alphabet_ = DnaAlphabet>
constexpr uint64_t cusbf::Config< K_, S_, M_, HashCount_, CudaBlockSize_, Alphabet_ >::wordBits = 64
staticconstexpr

Definition at line 74 of file BloomFilter.cuh.


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