Skip to content

generate: zero session state for native packs before the prompt path - #167

Closed
samuelishida wants to merge 1 commit into
Niko1221:mainfrom
samuelishida:pr-session-zero
Closed

samuelishida wants to merge 1 commit into
Niko1221:mainfrom
samuelishida:pr-session-zero

Conversation

@samuelishida

Copy link
Copy Markdown
Contributor

A native (IQ) pack breaks out of the canonical put_input loop before position 0 and runs verify windows instead, so generate mode never reached the session_zero call that the canonical path uses. On a reused cudaMalloc allocation that left GDN, QSA KV/indexer, PLE history, and R uninitialized, producing NaN/overflow and degenerate identical-token output.

Zero the session state explicitly when native_pack is set.

Also removes an unused argmax() helper that emitted a compiler warning, and ignores the local .pi/ harness directory.

The canonical path zeroes session state from put_input at position 0, but a
native pack breaks out of that loop before the first put_input and runs verify
windows instead, leaving cudaMalloc'd state uninitialized. On a reused
allocation that produced NaN/overflow and degenerate identical-token output.
Zero the state explicitly when native_pack is set.

Also removes an unused argmax() helper that emitted a compiler warning, and
ignores the local .pi/ harness directory.
@Niko1221

Copy link
Copy Markdown
Owner

Released in 0.1.29: and extended to every pack type (a canonical pack on the batched prompt path had the same gap). Merged under your name (cherry-picked, so GitHub doesn't show it as merged). Thank you!

@Niko1221 Niko1221 closed this Sep 30, 2026
gputier pushed a commit to gputier/StrataGP that referenced this pull request Sep 30, 2026
…mode (Niko1221#167 follow-up); no .pi/ ignore line

(cherry picked from commit ec64796)
asp345 pushed a commit to asp345/Strata-dual-3060 that referenced this pull request Sep 30, 2026
…mode (Niko1221#167 follow-up); no .pi/ ignore line

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154bwiad8gY7wRehCXy27pN
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Sep 30, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 1, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
eddoursul added a commit to eddoursul/Strata that referenced this pull request Oct 1, 2026
…g, the split sampler, fixes

Upstream's 103 commits since a790805, with this branch's engine kept wherever both sides do the same thing (the
prompt path, the verify window's kernels, the QSA block scores, the prompt cache, --ple-io ram).

Taken:
- serve/: upstream's server: optional idle unload, POST /unload and /load, a free-VRAM guard and a before_load hook
  (Niko1221#208); /status behind the API key (Niko1221#212) and a constant-time key check (Niko1221#213); an engine exit quotes its last log
  line (Niko1221#215); tool calls end at their own </parameter> (Niko1221#210); the engine, the image encoder and the MCP servers end
  with the server on Windows; no stack trace when a client hangs up; the prompt speed on the dashboard; SIGTERM.
  Without a "gpu" key in the config, the Monitor and the VRAM guard read the cards of --main-gpu and --second-gpu.
- Sampling: top_k by a lexicographic threshold, split over the whole GPU (Niko1221#197, the same tokens).
- Fixes: the session state zeroed at start in generate mode (Niko1221#167); a serve request that fails on a CUDA fault exits at
  once (Niko1221#224), and every failed request's reason goes to the log; the error string cleared per request; the expert
  cache shrinks by 1 GiB steps when the free VRAM reads 0 (Niko1221#153), and says so when no VRAM is left for it (Niko1221#174);
  s_gemv's q8 split kernel reaches its barrier; a NaN stays a quiet NaN in f32 -> bf16; NOMINMAX; iq_pack writes
  native_experts.txt under a temporary name (Niko1221#172).
- STRATA_IQ_MT_MIN=1 (opt-in, Niko1221#152), the AVX-2 i-quant prefetch, the table indexer's spare rotated at position 0
  (bitwise unscaled), version 0.1.30; tests: mmvq_multi_parity, bf16_bits_test, the sampler's three paths.
- setup.py, docs, Docker, the AMD RDNA4 and Pascal files (not built here), data/draft_vocab_en.bin (byte-identical to
  this branch's data/draft_vocab.bin).  DETAILS.md gains the GPU-sharing options, STRATA_IQ_MT_MIN and this branch's
  draft vocabulary; examples/README.md lists the upstream options this branch's engine leaves out.

Not taken: rope scaling (contexts past 262K; the QSA RoPE kernels keep their form), the conversation cache (the
prompt cache stashes replaced conversations), the low-RAM resident variant, the multi-GPU session carve, coupled draft
sampling, the shared expert arena (Linux), the WSL2 context order, upstream's GDN recurrence pipelining and its
1024-token expert streaming (this branch's prompt path has its own forms), STATE_HASH.  Their files are in the tree,
not built.

Window hashes on fixed text (--adapt-every 0, the second GPU's tier pinned) equal the previous build's on both models;
the API tests (prompt cache, streaming, keep-alives, disconnect) pass.

Claude-Session: https://claude.ai/code/session_01GgM6qCebHZfQmgkcxNY1U5
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 1, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 2, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 2, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 2, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 3, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
MAHDI-AQ pushed a commit to MAHDI-AQ/Strata-AGX that referenced this pull request Oct 4, 2026
…mode (Niko1221#167 follow-up); no .pi/ ignore line

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154bwiad8gY7wRehCXy27pN
(cherry picked from commit ec64796)
MAHDI-AQ pushed a commit to MAHDI-AQ/Strata-AGX that referenced this pull request Oct 4, 2026
…mode (Niko1221#167 follow-up); no .pi/ ignore line

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154bwiad8gY7wRehCXy27pN
(cherry picked from commit ec64796)
MAHDI-AQ pushed a commit to MAHDI-AQ/Strata-AGX that referenced this pull request Oct 4, 2026
…mode (Niko1221#167 follow-up); no .pi/ ignore line

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154bwiad8gY7wRehCXy27pN
(cherry picked from commit ec64796)
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 4, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
Hugua700 pushed a commit to Hugua700/Strata that referenced this pull request Oct 6, 2026
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 6, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.
anon761 pushed a commit to anon761/Strata-upstream that referenced this pull request Oct 6, 2026
anon761 pushed a commit to anon761/Strata-upstream that referenced this pull request Oct 6, 2026
…mode (Niko1221#167 follow-up); no .pi/ ignore line

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154bwiad8gY7wRehCXy27pN
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 8, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.

1. Introduced the dense path (dense_model, kernels, and --serve binary) tailored for the Qwen3.8-27B model.
2. The architecture utilizes the same line protocol as strata --serve through the unchanged StrataEngine.
3. Cleaned up CMakeLists by reverting parts of a prior commit to drop obsolete files and tests.
4. Implemented quantized KV cache support featuring fp16, int8, q4_0, and k8v4 formats.
5. Integrated a 256-dimension Walsh-Hadamard rotation to handle Q8 and Q4 quantized formats.
6. Updated chunked prefill kernels (kv_append_rows and attn_chunk) to natively read the quantized cache.
7. Removed the restriction that previously disabled chunked prefill when using a quantized KV cache.
8. Optimized the decode path by walking columns through chunk kernels, drastically reducing driver launches.
9. Fixed a pre-existing memory overrun bug within the bounds of the positions_kernel component.
10. Gated the MMQ prompt path verification on relative error instead of strict absolute bit parity.
11. Added GDN state checkpointing along with conversation history and last hidden states to pinned host RAM.
12. The GDN checkpoints prevent full prompt re-reading from token 0 when a chat template prefix breaks.
13. Introduced a Tensor Core (WMMA) chunk attention kernel for GQA 6:1 and head_dim 256.
14. The WMMA kernel implements a two-pass online softmax and handles Walsh-Hadamard rotations for Q4 keys/values.
15. Verified that the final conflict-resolution commits kept the crucial checkpointing logic fully intact.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 10, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.

1. Introduced the dense path (dense_model, kernels, and --serve binary) tailored for the Qwen3.8-27B model.
2. The architecture utilizes the same line protocol as strata --serve through the unchanged StrataEngine.
3. Cleaned up CMakeLists by reverting parts of a prior commit to drop obsolete files and tests.
4. Implemented quantized KV cache support featuring fp16, int8, q4_0, and k8v4 formats.
5. Integrated a 256-dimension Walsh-Hadamard rotation to handle Q8 and Q4 quantized formats.
6. Updated chunked prefill kernels (kv_append_rows and attn_chunk) to natively read the quantized cache.
7. Removed the restriction that previously disabled chunked prefill when using a quantized KV cache.
8. Optimized the decode path by walking columns through chunk kernels, drastically reducing driver launches.
9. Fixed a pre-existing memory overrun bug within the bounds of the positions_kernel component.
10. Gated the MMQ prompt path verification on relative error instead of strict absolute bit parity.
11. Added GDN state checkpointing along with conversation history and last hidden states to pinned host RAM.
12. The GDN checkpoints prevent full prompt re-reading from token 0 when a chat template prefix breaks.
13. Introduced a Tensor Core (WMMA) chunk attention kernel for GQA 6:1 and head_dim 256.
14. The WMMA kernel implements a two-pass online softmax and handles Walsh-Hadamard rotations for Q4 keys/values.
15. Verified that the final conflict-resolution commits kept the crucial checkpointing logic fully intact.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 12, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.

1. Introduced the dense path (dense_model, kernels, and --serve binary) tailored for the Qwen3.8-27B model.
2. The architecture utilizes the same line protocol as strata --serve through the unchanged StrataEngine.
3. Cleaned up CMakeLists by reverting parts of a prior commit to drop obsolete files and tests.
4. Implemented quantized KV cache support featuring fp16, int8, q4_0, and k8v4 formats.
5. Integrated a 256-dimension Walsh-Hadamard rotation to handle Q8 and Q4 quantized formats.
6. Updated chunked prefill kernels (kv_append_rows and attn_chunk) to natively read the quantized cache.
7. Removed the restriction that previously disabled chunked prefill when using a quantized KV cache.
8. Optimized the decode path by walking columns through chunk kernels, drastically reducing driver launches.
9. Fixed a pre-existing memory overrun bug within the bounds of the positions_kernel component.
10. Gated the MMQ prompt path verification on relative error instead of strict absolute bit parity.
11. Added GDN state checkpointing along with conversation history and last hidden states to pinned host RAM.
12. The GDN checkpoints prevent full prompt re-reading from token 0 when a chat template prefix breaks.
13. Introduced a Tensor Core (WMMA) chunk attention kernel for GQA 6:1 and head_dim 256.
14. The WMMA kernel implements a two-pass online softmax and handles Walsh-Hadamard rotations for Q4 keys/values.
15. Verified that the final conflict-resolution commits kept the crucial checkpointing logic fully intact.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 14, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.

1. Introduced the dense path (dense_model, kernels, and --serve binary) tailored for the Qwen3.8-27B model.
2. The architecture utilizes the same line protocol as strata --serve through the unchanged StrataEngine.
3. Cleaned up CMakeLists by reverting parts of a prior commit to drop obsolete files and tests.
4. Implemented quantized KV cache support featuring fp16, int8, q4_0, and k8v4 formats.
5. Integrated a 256-dimension Walsh-Hadamard rotation to handle Q8 and Q4 quantized formats.
6. Updated chunked prefill kernels (kv_append_rows and attn_chunk) to natively read the quantized cache.
7. Removed the restriction that previously disabled chunked prefill when using a quantized KV cache.
8. Optimized the decode path by walking columns through chunk kernels, drastically reducing driver launches.
9. Fixed a pre-existing memory overrun bug within the bounds of the positions_kernel component.
10. Gated the MMQ prompt path verification on relative error instead of strict absolute bit parity.
11. Added GDN state checkpointing along with conversation history and last hidden states to pinned host RAM.
12. The GDN checkpoints prevent full prompt re-reading from token 0 when a chat template prefix breaks.
13. Introduced a Tensor Core (WMMA) chunk attention kernel for GQA 6:1 and head_dim 256.
14. The WMMA kernel implements a two-pass online softmax and handles Walsh-Hadamard rotations for Q4 keys/values.
15. Verified that the final conflict-resolution commits kept the crucial checkpointing logic fully intact.
perronemirko pushed a commit to perronemirko/Strata that referenced this pull request Oct 17, 2026
New qwen35 attention kernel + core/qwen35 glue; wire into strata_engine and CMake (engine lib, build tests).

gr.cu block_sum double->float to cut register pressure on the norm path; f32 sum of 2560 squares is
close enough to ref/gr.py's float64 that the shuffle-order difference no longer matters.

fused_gdn now owns the GDN step, so gdn.cu drops its softplus helper and the parity test trims unused layout code.

generate: zero session state on startup (Niko1221#167) - native packs skip put_input at pos 0 and left R/KV/PLE
uninitialized, saturating every decode to one token after allocator reuse; also accept ple_io=ram for a
locked PLE table and print its load time.

serve fast-exits (std::_Exit) on CUDA fault (Niko1221#224) instead of unwinding destructors that hang past the watchdog.

1. Introduced the dense path (dense_model, kernels, and --serve binary) tailored for the Qwen3.8-27B model.
2. The architecture utilizes the same line protocol as strata --serve through the unchanged StrataEngine.
3. Cleaned up CMakeLists by reverting parts of a prior commit to drop obsolete files and tests.
4. Implemented quantized KV cache support featuring fp16, int8, q4_0, and k8v4 formats.
5. Integrated a 256-dimension Walsh-Hadamard rotation to handle Q8 and Q4 quantized formats.
6. Updated chunked prefill kernels (kv_append_rows and attn_chunk) to natively read the quantized cache.
7. Removed the restriction that previously disabled chunked prefill when using a quantized KV cache.
8. Optimized the decode path by walking columns through chunk kernels, drastically reducing driver launches.
9. Fixed a pre-existing memory overrun bug within the bounds of the positions_kernel component.
10. Gated the MMQ prompt path verification on relative error instead of strict absolute bit parity.
11. Added GDN state checkpointing along with conversation history and last hidden states to pinned host RAM.
12. The GDN checkpoints prevent full prompt re-reading from token 0 when a chat template prefix breaks.
13. Introduced a Tensor Core (WMMA) chunk attention kernel for GQA 6:1 and head_dim 256.
14. The WMMA kernel implements a two-pass online softmax and handles Walsh-Hadamard rotations for Q4 keys/values.
15. Verified that the final conflict-resolution commits kept the crucial checkpointing logic fully intact.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants