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_
 K-mer length in symbols.
 
static constexpr uint16_t m = M_
 Minimizer width in symbols.
 
static constexpr uint16_t s = S_
 S-mer width (Bloom hash seed) in symbols.
 
static constexpr uint64_t hashCount = HashCount_
 Independent Bloom hash functions.
 
static constexpr uint64_t alphabetSize = Alphabet::symbolCount
 Number of symbols in the alphabet.
 
static constexpr uint64_t symbolWidth = Alphabet::symbolWidth
 Input bytes per symbol.
 
static constexpr uint64_t symbolBits = cuda::std::bit_width(alphabetSize - 1)
 Bits per packed symbol in a uint64_t k-mer.
 
static constexpr uint64_t symbolMask = (uint64_t{1} << symbolBits) - 1
 Low symbolBits mask for one encoded symbol.
 
static constexpr uint64_t filterBlockBits = 256
 Bits per shard (filter block).
 
static constexpr uint64_t cudaBlockSize = CudaBlockSize_
 CUDA threads per kernel block.
 
static constexpr uint64_t wordBits = 64
 Bits per shard word.
 
static constexpr uint64_t blockWordCount = filterBlockBits / wordBits
 64-bit words per 256-bit shard.
 
static constexpr uint64_t minimizerSpan = k - m + 1
 M-mers evaluated per k-mer window.
 
static constexpr uint64_t findereSpan = k - s + 1
 S-mers hashed per k-mer (findere).
 
static constexpr uint64_t insertGroupSize = blockWordCount
 Threads cooperating on insert.
 
static constexpr uint64_t queryGroupSize = 1
 Threads cooperating on query (fused path).
 
static constexpr uint64_t maxRunKmers = cudaBlockSize
 Max consecutive k-mers per warp run.
 

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 35 of file config.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 36 of file config.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

Number of symbols in the alphabet.

Definition at line 47 of file config.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

64-bit words per 256-bit shard.

Definition at line 62 of file config.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

CUDA threads per kernel block.

Definition at line 57 of file config.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

Bits per shard (filter block).

Definition at line 55 of file config.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

S-mers hashed per k-mer (findere).

Definition at line 66 of file config.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

Independent Bloom hash functions.

Definition at line 45 of file config.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

Threads cooperating on insert.

Definition at line 68 of file config.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

K-mer length in symbols.

Definition at line 39 of file config.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

Minimizer width in symbols.

Definition at line 41 of file config.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

Max consecutive k-mers per warp run.

Definition at line 72 of file config.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

M-mers evaluated per k-mer window.

Definition at line 64 of file config.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

Threads cooperating on query (fused path).

Definition at line 70 of file config.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

S-mer width (Bloom hash seed) in symbols.

Definition at line 43 of file config.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

Bits per packed symbol in a uint64_t k-mer.

Definition at line 51 of file config.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

Low symbolBits mask for one encoded symbol.

Definition at line 53 of file config.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

Input bytes per symbol.

Definition at line 49 of file config.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

Bits per shard word.

Definition at line 60 of file config.cuh.


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