Cute Dsl FMHA Params#
-
struct LlmFmhaParams#
Everything the dense LLM descriptors need, gathered once per CuteDslFMHARunner::run() call.
Public Members
-
void const *qPtr = {}#
-
void const *kvPtr = {}#
-
void *oPtr = {}#
-
int32_t const *cuKVSeqLens = {}#
-
int32_t batchSize = {}#
-
int32_t seqLenQ = {}#
-
int32_t numQHeads = {}#
-
int32_t numKVHeads = {}#
-
int32_t headDim = {}#
-
int32_t kvCacheCapacity = {}#
-
int32_t windowSizeLeft = {}#
-
float attentionScale = {}#
-
float scaleQ = {}#
-
float scaleK = {}#
-
float scaleV = {}#
-
float invScaleO = {}#
-
float skipSoftmaxThresholdLog2 = {}#
Skip-softmax (BLASST) threshold as log2(lambda); 0.0 = disabled. Only the *_skipsoftmax launchers forward it — the other wrappers have no such argument.
-
cudaStream_t stream = {}#
-
void const *qPtr = {}#
-
struct LlmFmhaPagedParams#
Everything the paged LLM descriptors need, gathered once per CuteDslFMHARunner::runPaged() call.
Public Members
-
void const *qPtr = {}#
-
void const *pagedKVPoolPtr = {}#
-
int32_t const *kvCachePageList = {}#
-
void *oPtr = {}#
-
int32_t const *cuQSeqLens = {}#
-
int32_t const *cuKVSeqLens = {}#
-
int32_t const *bidirectionalBlockBegin = {}#
-
int32_t const *bidirectionalBlockEnd = {}#
-
int32_t batchSize = {}#
-
int32_t seqLenQ = {}#
-
int32_t numQHeads = {}#
-
int32_t numKVHeads = {}#
-
int32_t headDim = {}#
-
int32_t numPages = {}#
-
int32_t maxPagesPerSeq = {}#
-
int32_t tokensPerPage = {}#
-
int32_t windowSizeLeft = {}#
-
float attentionScale = {}#
-
float scaleQ = {}#
-
float scaleK = {}#
-
float scaleV = {}#
-
float invScaleO = {}#
-
float skipSoftmaxThresholdLog2 = {}#
Skip-softmax (BLASST) threshold as log2(lambda); 0.0 = disabled. Only the *_skipsoftmax_paged launchers forward it — the other wrappers have no such argument.
-
cudaStream_t stream = {}#
-
void const *qPtr = {}#
-
struct VitFmhaParams#
Everything the ViT descriptors need, gathered once per CuteDslFMHARunner ViT run() call. The ViT AOT variants are plain MHA, hence a single head count.
Public Members
-
void const *qPtr = {}#
-
void const *kPtr = {}#
-
void const *vPtr = {}#
-
void *oPtr = {}#
-
int32_t const *cuSeqLens = {}#
-
int32_t totalSeqLen = {}#
-
int32_t numHeads = {}#
-
int32_t headDim = {}#
-
int32_t maxSeqLen = {}#
-
int32_t batchSize = {}#
-
float scaleSoftmaxLog2 = {}#
-
float attentionScale = {}#
-
float scaleOutput = {}#
-
cudaStream_t stream = {}#
-
void const *qPtr = {}#
-
struct FmhaV2LlmParams#
Everything the FMHA-v2 dense LLM descriptors need, gathered once per CuteDslFMHAV2Runner::run() call.
Public Members
-
void const *qPtr = {}#
-
void const *kPtr = {}#
-
void const *vPtr = {}#
-
void *oPtr = {}#
-
int32_t const *cuKVSeqLens = {}#
-
int32_t batchSize = {}#
-
int32_t seqLenQ = {}#
-
int32_t kvSeqLen = {}#
-
int32_t numQHeads = {}#
-
int32_t numKVHeads = {}#
-
int32_t headDim = {}#
-
int32_t windowSizeLeft = {}#
-
float attentionScale = {}#
-
float scaleQ = {}#
-
float scaleK = {}#
-
float scaleV = {}#
-
float invScaleO = {}#
-
cudaStream_t stream = {}#
-
int32_t const *blockBegin = {}#
Per-query-row [begin, end) block intervals, packed [B, S_q]. Both null for the plain causal/sliding variants; both set for the bidirectional variants.
-
int32_t const *blockEnd = {}#
-
void const *qPtr = {}#
-
struct FmhaV2VitParams#
Everything the FMHA-v2 ViT descriptors need, gathered once per CuteDslFMHAV2Runner ViT run() call. Unlike VitFmhaParams these variants are GQA, so Q and KV head counts differ.
Public Members
-
void const *qPtr = {}#
-
void const *kPtr = {}#
-
void const *vPtr = {}#
-
void *oPtr = {}#
-
int32_t const *cuSeqLens = {}#
-
int32_t totalSeqLen = {}#
-
int32_t numQHeads = {}#
-
int32_t numKVHeads = {}#
-
int32_t headDim = {}#
-
int32_t maxSeqLen = {}#
-
int32_t batchSize = {}#
-
float scaleSoftmaxLog2 = {}#
-
float attentionScale = {}#
-
float scaleOutput = {}#
-
cudaStream_t stream = {}#
-
void const *qPtr = {}#