Le profile fin (KZTTS_CP_PROFILE=1) a révélé que ~75% du temps CP par frame est dans ggml_graph_compute (4-6 ms/sub-step × 15 = 80 ms) et ~22% dans le delta CPU host (~24 ms/frame). Ce delta était entièrement le sample_head : 2048 dot products de 1024 floats SCALAIRE × 15 heads/frame = 31.5M ops/frame. Implémentation NEON aarch64 16-way unroll (vfmaq_f32 × 4 accumulators) sur dot_neon_1024(). Gated par KZTTS_CP_NO_NEON=1 pour fallback debug. Mesure Pad3 (KZTTS_THREADS=6 GGML_NUM_THREADS=8, seed=42, Bonjour Kazeia) : scalar : CP 106.8 ms/frame, total 8.05s, RTF 2.93 NEON : CP 72.1 ms/frame, total 6.75s, RTF 2.45 (-33% CP, -16% pipe) WAV md5 identiques c3dd71cbc783013842a3dacedfefd758 (BIT-EXACT) Le scalaire compilé par clang -O3 -march=armv8.6-a n'a apparemment pas auto-vectorisé cette boucle malgré l'évidence (peut-être à cause des indices non-trivials avec head_idx). NEON explicite débloque immédiatement. Reste : decoder = 51% du total maintenant (3.34s sur 6.75s). BigVGAN ggml-cpu déjà NEON vectorisé donc moins de marge évidente côté host code. Cibles potentielles : text_projection 50ms one-shot au prefill, mais marginal sur pipeline total. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| dist | ||
| docs | ||
| eval | ||
| ql@6e0edba837 | ||
| .gitignore | ||
| CHANTIER_HMX_DENSE.md | ||
| CLAUDE.md | ||
| RAPPORT_RD.md | ||
| c4.sh | ||
| casc.sh | ||
| casc2.sh | ||
| casc3.sh | ||
| cascade_test.sh | ||
| cf.sh | ||
| qcmp.sh | ||
| spk.sh | ||