[Engine] Two prompt block scorers enabled at once: WMMA silently wins and no log line is printed

Aperta Adatta ai principianti
#5,693 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 4 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
68/100
Tipo di issue
Documentazione
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
cpp

Direzione di ricerca

Inizia cercando nel motore STRATA_SELECT_WMMA, STRATA_SELECT_SIMT e STRATA_SCORES_THREAD per individuare la selezione dello scorer e i punti esistenti per la registrazione o la documentazione. Segui il modo in cui vengono controllate queste opzioni per confermare quale scorer prevale quando ne sono abilitate più di una. Il lavoro è completo quando una riga di log identifica lo scorer selezionato in caso di conflitto tra le opzioni e la precedenza è documentata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Environment (anonymized): RX 7900 XTX 24 GB (gfx1100), Ryzen 9 5900X, 62 GiB RAM, Debian 13 (kernel 7.2.12+deb13-amd64),
ROCm 10.1 (HIP 7.16), engine 0.1.59-linux-x86_64-hip-rx7900 from the signed feed (release v0.2.13).
Model Swift-1.5 IQ3_S (qwen4exp: 48 layers, 512 experts / 10 active, native ctx 262144).
Args: --parallel 2 --max-context 262144 --kv int8 --kv-resident 32768 --prefill auto --ple-io direct --expert-cache auto.

What I saw. With both STRATA_SELECT_WMMA=1 (the block scorer on the matrix cores, as the RDNA3 tuning note
suggests) and STRATA_SCORES_THREAD=1 (the exact four-lanes-per-query scorer) set at startup, the engine uses the WMMA
path and the thread scorer never runs. Nothing is logged — not even with STRATA_SCORES_THREAD_TRACE=1. The variables
are present in the engine's /proc/<pid>/environ.

Measurements — one fresh prompt of ~123K unique random tokens per arm, cached_tokens=0, max_tokens 8,
temperature 0, one engine start per arm (the engine's own prompt N tokens ... read in X ms line):

STRATA_SELECT_WMMA STRATA_SCORES_THREAD engagement line? prefill
1 0 — 3174.6 tok/s
1 1 no (masked) 3175.7 tok/s
0 1 qsa exact thread: ... nq=256 active_blocks=16385 capacity=65538 3048.4 tok/s
0 0 — (warp scorer) 1747.2 tok/s

Why it matters. The thread scorer does work on gfx1100 under ROCm 10.1: when WMMA is off it engages and is
1.74x faster than the warp scorer (3048 vs 1747 tok/s) and about 4% slower than WMMA. With WMMA on, the option looks
dead — my first A/B measured a 0.03% difference and I nearly reported the kernel as broken. Others will hit the same.

The dispatch gate itself is fine: max_blocks = max_context/4 + 2 = 65538, active_blocks = 16385 at the scorer's
first window, nq = 256, so active_blocks >= 16385 && active_blocks <= max_blocks && nq >= 64 holds.

Requests. (1) Print one line when more than one prompt block scorer is enabled, naming the one that won (like the
prefill gemm: hipBLASLt tuning enabled (...) line does). (2) Document the precedence between
STRATA_SELECT_WMMA, STRATA_SELECT_SIMT and STRATA_SCORES_THREAD.

Lingua principale
C++
Stelle
11.6k
Fork
1k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Niko1221/Strata

Tutte le issue di Niko1221/Strata

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.