hipengine 0.2.1__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. {hipengine-0.2.1 → hipengine-0.2.2}/CHANGELOG.md +35 -0
  2. {hipengine-0.2.1 → hipengine-0.2.2}/PKG-INFO +1 -1
  3. {hipengine-0.2.1 → hipengine-0.2.2}/WORKLOG.md +87 -0
  4. {hipengine-0.2.1 → hipengine-0.2.2}/docs/API.md +17 -4
  5. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/generation/qwen35_paro.py +43 -9
  6. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/llm.py +30 -0
  7. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/qwen35_paro.py +2 -0
  8. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/runtime/qwen35_paro_runner.py +431 -2
  9. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/server/__main__.py +35 -0
  10. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/server/api.py +306 -17
  11. {hipengine-0.2.1 → hipengine-0.2.2}/pyproject.toml +1 -1
  12. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_generation_qwen35_paro.py +68 -1
  13. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_server_api.py +119 -3
  14. {hipengine-0.2.1 → hipengine-0.2.2}/.gitattributes +0 -0
  15. {hipengine-0.2.1 → hipengine-0.2.2}/.github/workflows/publish.yml +0 -0
  16. {hipengine-0.2.1 → hipengine-0.2.2}/.gitignore +0 -0
  17. {hipengine-0.2.1 → hipengine-0.2.2}/AGENTS.md +0 -0
  18. {hipengine-0.2.1 → hipengine-0.2.2}/CLAUDE.md +0 -0
  19. {hipengine-0.2.1 → hipengine-0.2.2}/LICENSE +0 -0
  20. {hipengine-0.2.1 → hipengine-0.2.2}/README.md +0 -0
  21. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/7900XTX.md +0 -0
  22. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/CHANGELOG.md +0 -0
  23. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/MTP.md +0 -0
  24. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/README.md +0 -0
  25. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/W7900.md +0 -0
  26. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/configs/llamacpp-mtp-qwen36-27b.json +0 -0
  27. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/prompts/mtpbench-code-general-ja.jsonl +0 -0
  28. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/.gitkeep +0 -0
  29. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-13-hipengine-qwen35-paro-optimal-blocked.json +0 -0
  30. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-13-source-lineage-qwen35-paro-optimal-4k-128.json +0 -0
  31. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-13-source-lineage-qwen35-paro-optimal-512-128.json +0 -0
  32. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-c1-parent-fixture-blocked.json +0 -0
  33. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-cn-correctness-blocked.json +0 -0
  34. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-ab-fused-lmhead128-graph-diagnostic.json +0 -0
  35. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-c1-diagnostic.json +0 -0
  36. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-graph-diagnostic.json +0 -0
  37. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-linear-qkv-z-full-qk-fused-graph-diagnostic.json +0 -0
  38. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-linear-qkv-z-fused-graph-diagnostic.json +0 -0
  39. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-lmhead128-qk-qkvz-fused-graph-diagnostic.json +0 -0
  40. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-tokenizer-cache-diagnostic.json +0 -0
  41. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-0p8b-paro-512-128-blocked.json +0 -0
  42. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c1-parent-fixture-accepted.json +0 -0
  43. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c1-parent-mixed-blocked.json +0 -0
  44. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c1-router-qnorm-blocked.json +0 -0
  45. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c1-scheduler-serial-bench-blocked.json +0 -0
  46. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c2-native-compact-prefill-correctness-accepted.json +0 -0
  47. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c2-scheduler-serial-bench-blocked.json +0 -0
  48. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c2-scheduler-serial-runner-accepted.json +0 -0
  49. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c2-serial-slot-runner-accepted.json +0 -0
  50. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c4-native-compact-prefill-correctness-accepted.json +0 -0
  51. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c4-scheduler-serial-bench-blocked.json +0 -0
  52. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c4-scheduler-serial-runner-accepted.json +0 -0
  53. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c8-native-compact-prefill-correctness-accepted.json +0 -0
  54. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c8-scheduler-serial-bench-blocked.json +0 -0
  55. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c8-scheduler-serial-runner-accepted.json +0 -0
  56. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-cn-generated-equality-accepted.json +0 -0
  57. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-dflash-ddtree-blocked.json +0 -0
  58. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-linear-attn-segment-prefill-accepted.json +0 -0
  59. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-compact-c8-blocked.json +0 -0
  60. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-full-attn-boundary-blocked.json +0 -0
  61. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-full-single-request-accepted.json +0 -0
  62. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-multiloop-512-4k-diagnostic.json +0 -0
  63. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-plan-blocked.json +0 -0
  64. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-attention-accepted.json +0 -0
  65. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-attn-rejected.json +0 -0
  66. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-decode-rejected.json +0 -0
  67. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-gated-recurrent-rejected.json +0 -0
  68. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-stage-bisect-rejected.json +0 -0
  69. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer3-fullattn-stage-accepted.json +0 -0
  70. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-prefill-rejected.json +0 -0
  71. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-scratch-restore-sweep.json +0 -0
  72. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-serial-fullattn-layer4-accepted.json +0 -0
  73. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-serial-suffix-full40-accepted.json +0 -0
  74. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-sweep-rejected.json +0 -0
  75. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-prefix-bisect-blocked.json +0 -0
  76. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-varlen-full-attn-prefill-accepted.json +0 -0
  77. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-gguf-q4k-pack8-bf16out-diagnostic.json +0 -0
  78. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-gguf-q4k-pack8-gemv-diagnostic.json +0 -0
  79. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-gguf-qwen35-e2e-correctness-diagnostic.json +0 -0
  80. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-gguf-vs-paro-diagnostic.json +0 -0
  81. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-cast-glue-diagnostic.json +0 -0
  82. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-gate-rotate-diagnostic.json +0 -0
  83. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-threshold-sweep-diagnostic.json +0 -0
  84. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-v3-memory-diagnostic.json +0 -0
  85. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-v3-prefill-diagnostic.json +0 -0
  86. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-comparison-tables-diagnostic.json +0 -0
  87. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-decode-graph-replay-diagnostic.json +0 -0
  88. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-long-checkpoint-diagnostic.json +0 -0
  89. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-prefill-chunking-diagnostic.json +0 -0
  90. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gfx1151-shisa-qwen36-packed-canonical-sweep-diagnostic.json +0 -0
  91. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gfx1151-shisa-qwen36-packed-chunk256-sweep-diagnostic.json +0 -0
  92. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-aotriton-v3-prefill-diagnostic.json +0 -0
  93. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-bulk-prefill-q4km-accepted.json +0 -0
  94. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-decode-graph-replay-diagnostic.json +0 -0
  95. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-full-attn-gpu-prelude-diagnostic.json +0 -0
  96. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-local-quant-coverage-diagnostic.json +0 -0
  97. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-prefill-projection-diagnostic.json +0 -0
  98. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-q4km-parity-benchmark-diagnostic.json +0 -0
  99. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-resident-session-diagnostic.json +0 -0
  100. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-08b-gfx1151-dense-diagnostic.json +0 -0
  101. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-35b-qwen36-27b-gfx1151-diagnostic.json +0 -0
  102. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d11-rotate-dual-pack8-fusion-rejected.json +0 -0
  103. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d12-rmsnorm-producer-fusion-deferred.json +0 -0
  104. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d13-same-input-projection-fusions-rejected.json +0 -0
  105. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d14-selected-moe-postop-fold-rejected.json +0 -0
  106. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d15-router-coop-fold-rejected.json +0 -0
  107. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d16-kv-pack8-fusion-rejected.json +0 -0
  108. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d21-marlin-k-qweight-neutral-diagnostic.json +0 -0
  109. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d31-d33-grouped-gqa-long-context-diagnostic.json +0 -0
  110. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d42-dispatch-cap-rejected.json +0 -0
  111. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d44-launch-bounds-deferred.json +0 -0
  112. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d51-gdn-decode-audit.json +0 -0
  113. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d52-w8a16-decode-audit.json +0 -0
  114. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-p33-moe-metadata-fanout-deferred.json +0 -0
  115. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-p52-prefill-chunk-autotune-accepted.json +0 -0
  116. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p11-rocblas-ab-rejected.json +0 -0
  117. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p12-shared-gate-up-token-tile-diagnostic.json +0 -0
  118. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p13-shared-down-combine-token-tile-diagnostic.json +0 -0
  119. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p14-moe-wmma-threshold-diagnostic.json +0 -0
  120. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p16-prefill-mcumode-rejected.json +0 -0
  121. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p31-gdn-rotate-rejected.json +0 -0
  122. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p32-router-sigmoid-rejected.json +0 -0
  123. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-paro-dual-format-diagnostic.json +0 -0
  124. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-w1-unroll600-ablation-diagnostic.json +0 -0
  125. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-rocprof-amdahl-diagnostic.json +0 -0
  126. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-512-128-paro-blocker-profile.json +0 -0
  127. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-bench-paro-comparison-diagnostic.json +0 -0
  128. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-bulk-moe-prefill-diagnostic.json +0 -0
  129. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-bulk-parity-diagnostic.json +0 -0
  130. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-decode-pack8-raw-partial.json +0 -0
  131. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-decode-profile-diagnostic.json +0 -0
  132. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-expert-pack8-sidecar-diagnostic.json +0 -0
  133. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-fast-bulk-default-promoted-diagnostic.json +0 -0
  134. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-full-attn-parity-fixed-diagnostic.json +0 -0
  135. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-intake-diagnostic.json +0 -0
  136. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-linear-recurrent-parity-fixed-diagnostic.json +0 -0
  137. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-native-attention-bulk-moe-diagnostic.json +0 -0
  138. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-public-generate-smoke.json +0 -0
  139. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-selected-device-experts-diagnostic.json +0 -0
  140. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-packed-shared-decode-fusion-diagnostic.json +0 -0
  141. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-shisa-force-legacy-diagnostic.json +0 -0
  142. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-shisa-packed-vs-legacy-refresh-diagnostic.json +0 -0
  143. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-llamacpp-hip-qwen36-peak.json +0 -0
  144. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-llamacpp-upstream-gfx1151-qwen36-gguf-rerun-diagnostic.json +0 -0
  145. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-17-llamacpp-vulkan-qwen36-peak.json +0 -0
  146. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-gfx1100-qwen36-27b-paro-diagnostic.json +0 -0
  147. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-gfx1100-shisa-qwen36-packed-gt1k-default-diagnostic.json +0 -0
  148. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-p8_2-dense-q4k-wmma-prefill-diagnostic.json +0 -0
  149. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-gt1k-prefill-chunk-policy-diagnostic.json +0 -0
  150. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-128k-quality-perf-diagnostic.json +0 -0
  151. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-256k-capacity-blocked.json +0 -0
  152. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-256k-single-buffer-capacity-diagnostic.json +0 -0
  153. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-aotriton-query-reuse-diagnostic.json +0 -0
  154. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-scratch-release-diagnostic.json +0 -0
  155. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p8-compact-moe-wmma-accepted.json +0 -0
  156. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_a3-gdn-k2-chain-accepted.json +0 -0
  157. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c1-wmma-tile-sweep-blocked.json +0 -0
  158. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c10-combined-gap-analysis.json +0 -0
  159. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c11-hot-expert-final-blocked.json +0 -0
  160. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c3-selected-moe-profile.json +0 -0
  161. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c4-q4-hot-fulltile-v1-rejected.json +0 -0
  162. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c5-q4-sidemeta-v1-rejected.json +0 -0
  163. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c7-q5-opt-v1-rejected.json +0 -0
  164. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c8-q6-retain-legacy.json +0 -0
  165. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c9-tail-no-padding-not-retained.json +0 -0
  166. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-prefill-q8-wmma-p8_1.json +0 -0
  167. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_b7-decode-gemv-rejected.json +0 -0
  168. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_c12-q4t16-repack-design.json +0 -0
  169. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_c13-q4t16-materializer.json +0 -0
  170. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_e2-e2e-correctness-rejected.json +0 -0
  171. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h1-fastpath-safety-correctness-accepted.json +0 -0
  172. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h2-decode-repack-design.json +0 -0
  173. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h3-t16-512x128-bench.json +0 -0
  174. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h3-t16-e2e-correctness-accepted.json +0 -0
  175. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h3-t16-rocprof-512x16-summary.json +0 -0
  176. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-packed-int8-kv-readme-memory-diagnostic.json +0 -0
  177. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-19-llamacpp-mtp-qwen36-27b-diagnostic.json +0 -0
  178. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p10-b5-p9-e2e-gate-blocked.json +0 -0
  179. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p10-b6-acceptance-blocked.json +0 -0
  180. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p10-wave1-blocked.json +0 -0
  181. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_c14-q4t16-selected-wmma-prototype.json +0 -0
  182. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_c15-q4t16-replay-rejected.json +0 -0
  183. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_c16-selected-moe-alternatives.json +0 -0
  184. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_c17-no-q4-redesign-blocked.json +0 -0
  185. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d1-router-split-coop.json +0 -0
  186. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d10-q8t16-dual-split-64.json +0 -0
  187. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d11-rejected-q8t16-shared-silu.json +0 -0
  188. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d15-dense-dual-alpha-beta.json +0 -0
  189. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d16-q8t16-f32-ssm-out.json +0 -0
  190. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d17-key-bf16-rope.json +0 -0
  191. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d18-splitk-gqa-gate.json +0 -0
  192. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d2-bf16-key-rope-rejected.json +0 -0
  193. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d4-q4t16-silu-decode.json +0 -0
  194. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d6-q8t16-pair-dispatch.json +0 -0
  195. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d7-q8t16-qkv-gate-pair.json +0 -0
  196. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d8-q8t16-dcache-rejected.json +0 -0
  197. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d9-q8t16-triple-qkv.json +0 -0
  198. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_g1-final-acceptance-blocked.json +0 -0
  199. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-attn-gate-fusion.json +0 -0
  200. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-attn128.json +0 -0
  201. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-q4t16-silu256.json +0 -0
  202. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-q5q6-direct-probes.json +0 -0
  203. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-q6dense-dpreload.json +0 -0
  204. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-aotriton-v2-v3-diagnostic.json +0 -0
  205. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-d10-splitk-rocprof.json +0 -0
  206. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-d11-comparison-review.json +0 -0
  207. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-d8-splitk-decode.json +0 -0
  208. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-d9-splitk-sweep.json +0 -0
  209. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-decode-repack-residency-audit.json +0 -0
  210. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-long-context-chunked-smoke.json +0 -0
  211. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-long-context-preflight-blocked.json +0 -0
  212. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-memory-decode-pass-review.json +0 -0
  213. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-no-prefill-scratch-kv.json +0 -0
  214. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-q8-t16-scale-broadcast-rejected.json +0 -0
  215. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-r0-rocprof-baseline.json +0 -0
  216. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-r1-post-x1-rocprof.json +0 -0
  217. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-retained-safe-mode.json +0 -0
  218. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-selected-moe-t16-launchbounds-rejected.json +0 -0
  219. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-task39-32k-smoke.json +0 -0
  220. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-task40-prefill-vs-paro-diagnosis.json +0 -0
  221. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-x1-correctness-plus-x2-wmma-blocker.json +0 -0
  222. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-21-local-rx7900xtx-gguf-vs-paro-memory-comparison.json +0 -0
  223. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-after-memory-decode-pass-review.json +0 -0
  224. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-direct-selected-moe-c1-4k128-accepted.json +0 -0
  225. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-final-gate-4k128-accepted.json +0 -0
  226. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-q8-t16-decode-probes-rejected.json +0 -0
  227. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-q8-t16-second-pass-rejected.json +0 -0
  228. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-router256-4k128-accepted.json +0 -0
  229. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-selected-moe-down64-rejected.json +0 -0
  230. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-selected-moe-t16-qk256-rejected.json +0 -0
  231. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-small-kernel-second-pass-rejected.json +0 -0
  232. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-small-kernel-third-pass-rejected.json +0 -0
  233. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-qwen36-35b-a3b-q4ks-persistent-session-w7900-gap-review.json +0 -0
  234. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-qwen36-35b-a3b-q4ks-w7900-cold-start-diagnostic.json +0 -0
  235. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-qwen36-35b-a3b-q4ks-w7900-readme-sweep-accepted.json +0 -0
  236. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-qwen36-35b-a3b-q4ks-w7900-therock713-diagnostic.json +0 -0
  237. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-w7900-therock713-gguf-paro-512-4k-spot-diagnostic.json +0 -0
  238. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-paro-512-prefill-workspace-overlap-rootcause-diagnostic.json +0 -0
  239. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-paro-prefill-workspace-overlap-threshold-diagnostic.json +0 -0
  240. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-1024-128.json +0 -0
  241. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-131072-128-blocked.json +0 -0
  242. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-32768-128.json +0 -0
  243. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-4096-128.json +0 -0
  244. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-512-128-rerun.json +0 -0
  245. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-65536-128-blocked.json +0 -0
  246. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4ks-4096-128.json +0 -0
  247. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-1024-128.json +0 -0
  248. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-131072-128.json +0 -0
  249. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-32768-128.json +0 -0
  250. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-4096-128.json +0 -0
  251. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-512-128.json +0 -0
  252. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-65536-128.json +0 -0
  253. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-int8kv-131072-128.json +0 -0
  254. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-int8kv-65536-128.json +0 -0
  255. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-llamacpp-hip-q4km-f16kv-sweep.json +0 -0
  256. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-llamacpp-hip-q4km-q8kv-maxctx.json +0 -0
  257. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-llamacpp-vulkan-q4km-f16kv-sweep.json +0 -0
  258. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-llamacpp-vulkan-q4km-q8kv-maxctx.json +0 -0
  259. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-paro-v011-current-regression-check.json +0 -0
  260. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-rocm7130423-current-head-paro-512-4k-check.json +0 -0
  261. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-rocm7130423-pure-current-head-paro-512-4k-check.json +0 -0
  262. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-rocm7130423-pure-packed-qwen36-paro-512-4k-check.json +0 -0
  263. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-rocm714-current-head-paro-512-4k-check.json +0 -0
  264. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-23-w7900-hipengine-therock713-paro-gguf-sweep-diagnostic.json +0 -0
  265. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-25-w7900-hipengine-gguf-q4ks-readme-persistent-5run.json +0 -0
  266. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-25-w7900-hipengine-paro-readme-persistent-5run.json +0 -0
  267. {hipengine-0.2.1 → hipengine-0.2.2}/benchmarks/results/2026-05-25-w7900-hipengine-readme-persistent-5run-diagnostic.json +0 -0
  268. {hipengine-0.2.1 → hipengine-0.2.2}/docs/BENCHMARK.md +0 -0
  269. {hipengine-0.2.1 → hipengine-0.2.2}/docs/DFLASH.md +0 -0
  270. {hipengine-0.2.1 → hipengine-0.2.2}/docs/ENVS.md +0 -0
  271. {hipengine-0.2.1 → hipengine-0.2.2}/docs/GGUF.md +0 -0
  272. {hipengine-0.2.1 → hipengine-0.2.2}/docs/GGUF_DECODE_REPACK.md +0 -0
  273. {hipengine-0.2.1 → hipengine-0.2.2}/docs/IMPLEMENTATION.md +0 -0
  274. {hipengine-0.2.1 → hipengine-0.2.2}/docs/KERNELS.md +0 -0
  275. {hipengine-0.2.1 → hipengine-0.2.2}/docs/KVCACHE.md +0 -0
  276. {hipengine-0.2.1 → hipengine-0.2.2}/docs/LESSONS-LEARNED.md +0 -0
  277. {hipengine-0.2.1 → hipengine-0.2.2}/docs/MARLIN.md +0 -0
  278. {hipengine-0.2.1 → hipengine-0.2.2}/docs/MTP.md +0 -0
  279. {hipengine-0.2.1 → hipengine-0.2.2}/docs/OPTIMIZE-DENSE.md +0 -0
  280. {hipengine-0.2.1 → hipengine-0.2.2}/docs/OPTIMIZE.md +0 -0
  281. {hipengine-0.2.1 → hipengine-0.2.2}/docs/PLAN.md +0 -0
  282. {hipengine-0.2.1 → hipengine-0.2.2}/docs/PREFILL.md +0 -0
  283. {hipengine-0.2.1 → hipengine-0.2.2}/docs/PUBLISH.md +0 -0
  284. {hipengine-0.2.1 → hipengine-0.2.2}/docs/README.md +0 -0
  285. {hipengine-0.2.1 → hipengine-0.2.2}/docs/RELAXED.md +0 -0
  286. {hipengine-0.2.1 → hipengine-0.2.2}/docs/ROOFLINE-gfx1151.md +0 -0
  287. {hipengine-0.2.1 → hipengine-0.2.2}/docs/ROOFLINE.md +0 -0
  288. {hipengine-0.2.1 → hipengine-0.2.2}/docs/SPECULATIVE-DECODE.md +0 -0
  289. {hipengine-0.2.1 → hipengine-0.2.2}/docs/TESTING.md +0 -0
  290. {hipengine-0.2.1 → hipengine-0.2.2}/docs/source_lineage.json +0 -0
  291. {hipengine-0.2.1 → hipengine-0.2.2}/fixtures/qwen35_paro/parent_512_32_seed1234.json +0 -0
  292. {hipengine-0.2.1 → hipengine-0.2.2}/hatch_build.py +0 -0
  293. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/__init__.py +0 -0
  294. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/benchmark/__init__.py +0 -0
  295. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/benchmark/correctness.py +0 -0
  296. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/core/__init__.py +0 -0
  297. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/core/build.py +0 -0
  298. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/core/device.py +0 -0
  299. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/core/dtype.py +0 -0
  300. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/core/hip.py +0 -0
  301. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/core/memory.py +0 -0
  302. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/core/rocblas.py +0 -0
  303. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/core/tensor.py +0 -0
  304. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/dispatch/__init__.py +0 -0
  305. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/dispatch/batch.py +0 -0
  306. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/dispatch/fusion.py +0 -0
  307. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/dispatch/kv.py +0 -0
  308. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/distributed/__init__.py +0 -0
  309. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/generation/__init__.py +0 -0
  310. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/generation/batch_scheduler.py +0 -0
  311. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/generation/qwen35_gguf.py +0 -0
  312. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/generation/registry.py +0 -0
  313. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/__init__.py +0 -0
  314. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/backends.py +0 -0
  315. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/cpu_reference/__init__.py +0 -0
  316. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/cpu_reference/fixtures.py +0 -0
  317. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/cpu_reference/ops.py +0 -0
  318. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/cuda_sm86/__init__.py +0 -0
  319. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/__init__.py +0 -0
  320. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/__init__.py +0 -0
  321. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton.py +0 -0
  322. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_release.toml +0 -0
  323. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/MANIFEST.vendor.json +0 -0
  324. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/aiter_hip_common.h +0 -0
  325. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/flash/aiter.h +0 -0
  326. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/kernel_cluster.h +0 -0
  327. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/lazy_tensor_internal.h +0 -0
  328. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/packed_kernel.h +0 -0
  329. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/triton_kernel.h +0 -0
  330. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/util.h +0 -0
  331. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/config.h +0 -0
  332. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/cpp_tune.h +0 -0
  333. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/dtypes.h +0 -0
  334. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/flash.h +0 -0
  335. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/runtime.h +0 -0
  336. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/util.h +0 -0
  337. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/v2/flash.h +0 -0
  338. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_F_F_0_0___gfx11xx.aks2" +0 -0
  339. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_F_F_0_1___gfx11xx.aks2" +0 -0
  340. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_F_F_3_0___gfx11xx.aks2" +0 -0
  341. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_F_T_0_0___gfx11xx.aks2" +0 -0
  342. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_F_T_0_1___gfx11xx.aks2" +0 -0
  343. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_F_T_3_0___gfx11xx.aks2" +0 -0
  344. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_T_F_0_0___gfx11xx.aks2" +0 -0
  345. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_T_F_0_1___gfx11xx.aks2" +0 -0
  346. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_T_F_3_0___gfx11xx.aks2" +0 -0
  347. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_T_T_0_0___gfx11xx.aks2" +0 -0
  348. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_T_T_0_1___gfx11xx.aks2" +0 -0
  349. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/aotriton.images/amd-gfx11xx/flash/attn_fwd/FONLY__/357/274/212bf16@16_256_T_T_3_0___gfx11xx.aks2" +0 -0
  350. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/libaotriton_v2.so +0 -0
  351. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/libaotriton_v2.so.0.11.2 +0 -0
  352. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_wrap.cc +0 -0
  353. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_wrap.py +0 -0
  354. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/paged_attn_decode.hip +0 -0
  355. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/paged_attn_decode.py +0 -0
  356. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/paged_kv_write.hip +0 -0
  357. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/paged_kv_write.py +0 -0
  358. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/common/__init__.py +0 -0
  359. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/convert/__init__.py +0 -0
  360. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/convert/cast.hip +0 -0
  361. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/convert/cast.py +0 -0
  362. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/__init__.py +0 -0
  363. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/gguf_ops.hip +0 -0
  364. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/gguf_ops.py +0 -0
  365. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/paro_combine.hip +0 -0
  366. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/paro_combine.py +0 -0
  367. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/paro_silu.hip +0 -0
  368. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/paro_silu.py +0 -0
  369. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/__init__.py +0 -0
  370. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/dense_gemv.hip +0 -0
  371. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/dense_gemv.py +0 -0
  372. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/lm_head.hip +0 -0
  373. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/lm_head.py +0 -0
  374. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/__init__.py +0 -0
  375. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/conv.hip +0 -0
  376. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/conv.py +0 -0
  377. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/gdn.hip +0 -0
  378. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/gdn.py +0 -0
  379. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/__init__.py +0 -0
  380. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/group_scatter.hip +0 -0
  381. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/group_scatter.py +0 -0
  382. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/prefill.py +0 -0
  383. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/router.hip +0 -0
  384. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/router.py +0 -0
  385. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/norm/__init__.py +0 -0
  386. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/norm/rmsnorm.hip +0 -0
  387. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/norm/rmsnorm.py +0 -0
  388. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/__init__.py +0 -0
  389. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_expert_pack8_gemv.hip +0 -0
  390. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_expert_pack8_gemv.py +0 -0
  391. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_gemv.hip +0 -0
  392. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_gemv.py +0 -0
  393. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_selected_pack8_gemv.hip +0 -0
  394. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_selected_pack8_gemv.py +0 -0
  395. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_selected_prefill.hip +0 -0
  396. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_selected_prefill.py +0 -0
  397. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_t16_selected_prefill.hip +0 -0
  398. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_t16_selected_prefill.py +0 -0
  399. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_gemv.hip +0 -0
  400. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_gemv.py +0 -0
  401. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_pack8_gemv.hip +0 -0
  402. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_pack8_gemv.py +0 -0
  403. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_prefill.hip +0 -0
  404. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_prefill.py +0 -0
  405. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_selected_pack8_gemv.hip +0 -0
  406. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_selected_pack8_gemv.py +0 -0
  407. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_selected_prefill.hip +0 -0
  408. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_selected_prefill.py +0 -0
  409. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_t16_selected_prefill.hip +0 -0
  410. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_t16_selected_prefill.py +0 -0
  411. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_embedding.hip +0 -0
  412. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_embedding.py +0 -0
  413. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_pack8_gemv.hip +0 -0
  414. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_pack8_gemv.py +0 -0
  415. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_t16_gemv.hip +0 -0
  416. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_t16_gemv.py +0 -0
  417. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_pack8_gemv.hip +0 -0
  418. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_pack8_gemv.py +0 -0
  419. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_prefill.hip +0 -0
  420. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_prefill.py +0 -0
  421. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_t16_gemv.hip +0 -0
  422. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_t16_gemv.py +0 -0
  423. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_t16_prefill.hip +0 -0
  424. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_t16_prefill.py +0 -0
  425. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_t16_selected_gemv.hip +0 -0
  426. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_t16_selected_gemv.py +0 -0
  427. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/paro_awq_gemv.hip +0 -0
  428. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/paro_awq_gemv.py +0 -0
  429. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/paro_marlin_k.hip +0 -0
  430. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/paro_marlin_k.py +0 -0
  431. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/w8a16_linear.hip +0 -0
  432. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/w8a16_linear.py +0 -0
  433. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/__init__.py +0 -0
  434. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/paro_rotate.hip +0 -0
  435. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/paro_rotate.py +0 -0
  436. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/qwen35_rotary.hip +0 -0
  437. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/qwen35_rotary.py +0 -0
  438. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/runtime/__init__.py +0 -0
  439. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/runtime/state.hip +0 -0
  440. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/runtime/state.py +0 -0
  441. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/smoke/__init__.py +0 -0
  442. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/smoke/smoke_add.hip +0 -0
  443. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/smoke/smoke_add.py +0 -0
  444. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/wmma/__init__.py +0 -0
  445. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/wmma/paro_awq_wmma.hip +0 -0
  446. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/wmma/paro_awq_wmma.py +0 -0
  447. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1151/__init__.py +0 -0
  448. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kernels/registry.py +0 -0
  449. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kvcache/__init__.py +0 -0
  450. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kvcache/policy.py +0 -0
  451. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/kvcache/spans.py +0 -0
  452. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/layers/__init__.py +0 -0
  453. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/layers/base.py +0 -0
  454. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/__init__.py +0 -0
  455. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/gguf.py +0 -0
  456. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/hf_cache.py +0 -0
  457. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/materialize.py +0 -0
  458. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/qwen35_gguf.py +0 -0
  459. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/qwen35_gguf_expert_sidecar.py +0 -0
  460. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/qwen35_gguf_materialize.py +0 -0
  461. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/loading/safetensors.py +0 -0
  462. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/models/__init__.py +0 -0
  463. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/models/base.py +0 -0
  464. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/models/qwen35.py +0 -0
  465. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/models/registry.py +0 -0
  466. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/models/toy.py +0 -0
  467. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/__init__.py +0 -0
  468. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/base.py +0 -0
  469. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/bf16.py +0 -0
  470. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/fp16.py +0 -0
  471. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/gguf.py +0 -0
  472. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/gguf_k.py +0 -0
  473. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/gguf_q4_k.py +0 -0
  474. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/gguf_t16.py +0 -0
  475. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/registry.py +0 -0
  476. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/quant/w4_paro.py +0 -0
  477. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/runtime/__init__.py +0 -0
  478. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/runtime/gguf_embedding.py +0 -0
  479. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/runtime/gguf_linear.py +0 -0
  480. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/runtime/prefill.py +0 -0
  481. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/runtime/qwen35_gguf_runner.py +0 -0
  482. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/runtime/qwen35_paro.py +0 -0
  483. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/runtime/workspace.py +0 -0
  484. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/server/__init__.py +0 -0
  485. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/speculative/__init__.py +0 -0
  486. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/speculative/interfaces.py +0 -0
  487. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/tokenization/__init__.py +0 -0
  488. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/tokenization/gguf.py +0 -0
  489. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/util/__init__.py +0 -0
  490. {hipengine-0.2.1 → hipengine-0.2.2}/hipengine/util/amdgpu_vram.py +0 -0
  491. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/__init__.py +0 -0
  492. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/check_fixtures.py +0 -0
  493. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/check_lineage.py +0 -0
  494. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/fetch_aotriton.sh +0 -0
  495. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/gdn_decode_probe.py +0 -0
  496. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/gguf_k_gemv_smoke.py +0 -0
  497. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/gguf_prefill_projection_smoke.py +0 -0
  498. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/gguf_q6_k_embedding_smoke.py +0 -0
  499. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/inspect_gguf.py +0 -0
  500. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/llamacpp_bench_with_peak.py +0 -0
  501. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/llamacpp_mtp_bench.py +0 -0
  502. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_batch_correctness.py +0 -0
  503. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_batch_packed_prefill_correctness.py +0 -0
  504. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_batch_serial_bench.py +0 -0
  505. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_batch_serial_correctness.py +0 -0
  506. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_compare_tables.py +0 -0
  507. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_decode_graph_fixture_gate.py +0 -0
  508. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_dflash_ddtree_blocker.py +0 -0
  509. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_e2e_correctness.py +0 -0
  510. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_aotriton_prefill_sweep.py +0 -0
  511. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_bench.py +0 -0
  512. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_build_expert_sidecar.py +0 -0
  513. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_bulk_parity.py +0 -0
  514. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_decode_graph_smoke.py +0 -0
  515. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_e2e_correctness.py +0 -0
  516. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_expert_pack8_smoke.py +0 -0
  517. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_moe_replay.py +0 -0
  518. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_p9_e2e_correctness.py +0 -0
  519. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_gguf_rocprof_summary.py +0 -0
  520. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_kv_e2e_fixture_gate.py +0 -0
  521. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_kv_int8_accuracy.py +0 -0
  522. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_kv_policy_args.py +0 -0
  523. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_native_compact_prefill_plan.py +0 -0
  524. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_native_prefill_boundary.py +0 -0
  525. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_native_prefill_correctness.py +0 -0
  526. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_native_prefill_fixture_gate.py +0 -0
  527. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_native_prefill_fullattn_stage_probe.py +0 -0
  528. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_native_prefill_plan.py +0 -0
  529. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_native_prefill_stage_probe.py +0 -0
  530. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_paro_bench.py +0 -0
  531. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_paro_next_token.py +0 -0
  532. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_paro_packed_bench.py +0 -0
  533. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_readme_sweep.py +0 -0
  534. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/qwen35_rocprof_audit.py +0 -0
  535. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/resolve_worklog_conflict.py +0 -0
  536. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/smoke.py +0 -0
  537. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/strip_paro_safetensors.py +0 -0
  538. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/vendor_aotriton.sh +0 -0
  539. {hipengine-0.2.1 → hipengine-0.2.2}/scripts/w8a16_decode_probe.py +0 -0
  540. {hipengine-0.2.1 → hipengine-0.2.2}/tests/_gguf_synthetic_weights.py +0 -0
  541. {hipengine-0.2.1 → hipengine-0.2.2}/tests/conftest.py +0 -0
  542. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/cpu_reference/attention_decode_masked.json +0 -0
  543. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/cpu_reference/full_attn_prefill_causal_gqa_gate.json +0 -0
  544. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/cpu_reference/kv_int8_dequant_per_token_head.json +0 -0
  545. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/cpu_reference/linear_basic.json +0 -0
  546. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/cpu_reference/paged_attn_decode_int8_per_token_head.json +0 -0
  547. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/cpu_reference/rmsnorm_basic.json +0 -0
  548. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/cpu_reference/rotate_split_half.json +0 -0
  549. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/gguf/qwen35_0_8b_q4_1_e2e.json +0 -0
  550. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/gguf/qwen35_0_8b_q4_k_m_e2e.json +0 -0
  551. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/gguf/qwen35_0_8b_q8_0_e2e.json +0 -0
  552. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/gguf/qwen35_0_8b_ud_q4_k_xl_e2e.json +0 -0
  553. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/gguf/qwen36_35b_a3b_q4km_p9_e2e.json +0 -0
  554. {hipengine-0.2.1 → hipengine-0.2.2}/tests/fixtures/gguf/qwen36_35b_a3b_q4km_smoke.json +0 -0
  555. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_aotriton_discovery.py +0 -0
  556. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_build.py +0 -0
  557. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_cast_plan.py +0 -0
  558. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_check_lineage.py +0 -0
  559. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_cpu_reference.py +0 -0
  560. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_dense_gemv_plan.py +0 -0
  561. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_dispatch_batch.py +0 -0
  562. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_fusion_spike.py +0 -0
  563. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_generation_batch_scheduler.py +0 -0
  564. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gfx1151_backend.py +0 -0
  565. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_e2e_acceptance.py +0 -0
  566. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_embedding_dispatch.py +0 -0
  567. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_expert_pack8_gemv.py +0 -0
  568. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_gemv_decode_dispatch.py +0 -0
  569. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_k_gemv.py +0 -0
  570. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_k_selected_pack8_gemv_decode.py +0 -0
  571. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_k_selected_wmma_prefill.py +0 -0
  572. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_k_t16_selected_wmma_prefill.py +0 -0
  573. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_linear_dispatch.py +0 -0
  574. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_ops.py +0 -0
  575. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q4_k_gemv.py +0 -0
  576. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q4_k_pack8_gemv_decode.py +0 -0
  577. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q4_k_selected_dual_pack8_gemv_decode.py +0 -0
  578. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q4_k_selected_wmma_prefill.py +0 -0
  579. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q4_k_t16_selected_wmma_prefill.py +0 -0
  580. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q4_k_tile16_repack.py +0 -0
  581. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q4_k_wmma_prefill.py +0 -0
  582. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q6_k_embedding.py +0 -0
  583. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q6_k_pack8_gemv_decode.py +0 -0
  584. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q6_k_t16_gemv_decode.py +0 -0
  585. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q8_0_pack8_gemv_decode.py +0 -0
  586. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q8_0_t16_gemv_decode.py +0 -0
  587. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q8_0_t16_wmma_prefill.py +0 -0
  588. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q8_0_wmma_prefill.py +0 -0
  589. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_q8_0_wmma_prefill_dual.py +0 -0
  590. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_quant_layout.py +0 -0
  591. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_reader.py +0 -0
  592. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_t16_repack.py +0 -0
  593. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_gguf_t16_selected_gemv_decode.py +0 -0
  594. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_hf_cache.py +0 -0
  595. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_hip_runtime.py +0 -0
  596. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_kernel_registry.py +0 -0
  597. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_kv_dispatch.py +0 -0
  598. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_kvcache_policy.py +0 -0
  599. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_kvcache_spans.py +0 -0
  600. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_llm_generate.py +0 -0
  601. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_llm_gguf_generate_path.py +0 -0
  602. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_lm_head_plan.py +0 -0
  603. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_loading_materialize.py +0 -0
  604. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_loading_safetensors.py +0 -0
  605. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_memory_stats.py +0 -0
  606. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_model_quant_and_imports.py +0 -0
  607. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_paro_awq_gemv_plan.py +0 -0
  608. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_paro_awq_wmma_plan.py +0 -0
  609. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_paro_combine_plan.py +0 -0
  610. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_paro_rotate_plan.py +0 -0
  611. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_paro_silu_plan.py +0 -0
  612. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_bench_memory_audit.py +0 -0
  613. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_decode_state.py +0 -0
  614. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_chunked_prefill.py +0 -0
  615. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_compact_moe_gemv_routing.py +0 -0
  616. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_compact_moe_wmma_resolver.py +0 -0
  617. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_compact_moe_wmma_routing.py +0 -0
  618. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_decode_graph_policy.py +0 -0
  619. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_decode_repack_dispatch.py +0 -0
  620. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_decode_repack_semantics.py +0 -0
  621. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_expert_sidecar.py +0 -0
  622. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_fastpath_safety.py +0 -0
  623. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_full_attention_gpu.py +0 -0
  624. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_gdn_prefill_correctness.py +0 -0
  625. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_gdn_prefill_routing.py +0 -0
  626. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_mapping.py +0 -0
  627. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_materialize.py +0 -0
  628. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_moe_replay.py +0 -0
  629. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_p10_x2_layer_correctness.py +0 -0
  630. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_p9_e2e_correctness.py +0 -0
  631. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_rocprof_summary.py +0 -0
  632. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_runner.py +0 -0
  633. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_gguf_tokenizer.py +0 -0
  634. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_kv_e2e_fixture_gate.py +0 -0
  635. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_kv_int8_accuracy.py +0 -0
  636. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_linear_attn_conv_plan.py +0 -0
  637. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_linear_attn_gdn_plan.py +0 -0
  638. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_moe_group_scatter_plan.py +0 -0
  639. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_native_prefill_boundary.py +0 -0
  640. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_native_prefill_fullattn_stage_probe.py +0 -0
  641. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_paged_attn_decode_plan.py +0 -0
  642. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_paged_kv_write_plan.py +0 -0
  643. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_paro_layout.py +0 -0
  644. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_paro_marlin_k.py +0 -0
  645. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_prefill_workspace_policy.py +0 -0
  646. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_resident_batch_layout.py +0 -0
  647. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_rmsnorm_plan.py +0 -0
  648. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_rotary_plan.py +0 -0
  649. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_qwen35_router_plan.py +0 -0
  650. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_runtime_state_plan.py +0 -0
  651. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_runtime_workspace.py +0 -0
  652. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_smoke_add_plan.py +0 -0
  653. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_speculative_interfaces.py +0 -0
  654. {hipengine-0.2.1 → hipengine-0.2.2}/tests/test_w8a16_linear_plan.py +0 -0
@@ -6,6 +6,41 @@ This changelog is for package/API releases. Performance rollup history remains i
6
6
  [`benchmarks/CHANGELOG.md`](benchmarks/CHANGELOG.md), with detailed benchmark
7
7
  evidence under [`benchmarks/results/`](benchmarks/results/).
8
8
 
9
+ ## Unreleased
10
+
11
+ No changes yet.
12
+
13
+ ## v0.2.2 - 2026-05-26
14
+
15
+ Patch release improving server startup context preallocation, KV memory
16
+ admission, and request defaults.
17
+
18
+ ### Added
19
+
20
+ - Server-wide resident context/KV preallocation controls:
21
+ `--max-context-tokens`, `--kv-storage`, `--kv-scale-dtype`, and
22
+ `--kv-scale-granularity`. Eager startup prepares the resident PARO session for
23
+ the configured context, and requests beyond that context or with a different
24
+ KV policy are rejected instead of resizing/reloading the model.
25
+ - Automatic server context sizing when `--max-context-tokens` is omitted: after
26
+ resident weights load, the runtime estimates the selected KV dtype plus
27
+ persistent context metadata and preallocates
28
+ `min(model_max_context_tokens, allocatable_context_tokens)`.
29
+ - Fast PARO retained-KV capacity estimate during resident session build. The
30
+ runtime uses current `hipMemGetInfo` after model weights load to report the
31
+ estimated max context for the selected KV dtype and for INT8 KV, warning when
32
+ INT8 still falls below the model's advertised max context.
33
+
34
+ ### Changed
35
+
36
+ - Chat requests that omit `max_tokens` now use `max_tokens=auto`, meaning the
37
+ remaining admitted context (`max_context_tokens - prompt_tokens - 1`).
38
+
39
+ ### Fixed
40
+
41
+ - Clean up partially-built PARO resident sessions if capacity preflight or
42
+ allocation fails, avoiding leaked resident buffers on startup/admission OOM.
43
+
9
44
  ## v0.2.1 - 2026-05-25
10
45
 
11
46
  Patch release improving server session management, streaming, and
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hipengine
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: ROCm-native local LLM inference engine with a torch-free runtime hot path
5
5
  Project-URL: Homepage, https://github.com/shisa-ai/hipEngine
6
6
  Project-URL: Repository, https://github.com/shisa-ai/hipEngine
@@ -26634,3 +26634,90 @@ uv run --extra dev python -m pytest -q tests/test_server_api.py tests/test_llm_g
26634
26634
  ```
26635
26635
 
26636
26636
  Restarted the LAN server from the local checkout with TheRock ROCm library paths. Eager startup completed after 31s, `/v1/models` returned `qwen-paro`, and VRAM was already resident at 19.54GB before serving requests. A subsequent streamed chat request returned the role chunk at 0.01s and reasoning chunks as `delta.reasoning_content` from 0.49s onward, with VRAM staying resident at 19.54GB. Server PID 12107, wrapper PID 12082, log `/tmp/hipengine-server-8000.log`.
26637
+
26638
+ ## 2026-05-25 — PARO KV capacity preflight for server sizing
26639
+
26640
+ Revisited the first-request reload diagnosis. The chat default should remain `max_tokens=8192`; the real issue is that session sizing is request-driven, so a warmed 4096-token resident session can be discarded when a later request needs a larger KV arena. Before changing admission/preallocation policy, added a fast retained-KV capacity estimate in `Qwen35ParoResidentSession`: after resident weights load and before full-attention KV buffers are allocated, the runtime reads `hipMemGetInfo`, subtracts a configurable reserve (`HIPENGINE_KV_CAPACITY_RESERVE_MIB`, default 512 MiB), computes bytes/token for the selected KV dtype and for INT8 KV, emits structured progress records, and logs a warning when INT8 capacity is below the model's advertised max context. This gives startup logs such as "INT8 KV can fit about N tokens vs model max M" instead of discovering the limit via an OOMing `hipMalloc`.
26641
+
26642
+ Wired the estimate into server policy: `ServerConfig`/CLI now have `--max-context-tokens` (default 131072), `--kv-storage`, `--kv-scale-dtype`, and `--kv-scale-granularity`. Eager startup calls `LLM.prepare(max_sequence_length=...)` before the warmup generation, so the resident PARO session/KV arena is preallocated for the configured context. Request admission checks `prompt_tokens + max_tokens + 1 <= max_context_tokens`, and per-request KV settings must match the server-wide preallocated policy; violations return OpenAI-style 400 errors instead of triggering a session resize/reload.
26643
+
26644
+ Also made PARO resident session construction clean up partially-built buffers if preflight/allocation fails, so an over-large requested context fails cleanly instead of leaking resident weights/KV. Chat default coverage was restored to assert the intended 8192-token server default.
26645
+
26646
+ Validation:
26647
+
26648
+ ```bash
26649
+ python -m pytest -q tests/test_server_api.py tests/test_generation_qwen35_paro.py tests/test_llm_generate.py
26650
+ # 24 passed
26651
+ python -m py_compile hipengine/runtime/qwen35_paro_runner.py hipengine/loading/qwen35_paro.py hipengine/server/api.py hipengine/server/__main__.py hipengine/llm.py hipengine/generation/qwen35_paro.py
26652
+ ```
26653
+
26654
+ ## 2026-05-25 — server auto context sizing accounts for retained metadata
26655
+
26656
+ Follow-up to the PARO server KV preallocation work: a real startup with default auto sizing attempted the model max 262144-token BF16 context and OOMed before the old KV estimate ran because `_allocate_common_buffers()` materialized a large persistent prefill block table (`prefill_capacity_rows x blocks`). Fixed the sizing path to load resident weights first, run the HIP free-memory estimate before context-dependent metadata/KV allocation, and include persistent context metadata in the allocatable-token calculation. Automatic server startup now selects `min(model_max_context_tokens, allocatable_context_tokens)` for the selected KV policy, while explicit `--max-context-tokens` still fails fast with guidance to lower the cap or use INT8 KV.
26657
+
26658
+ Also made chat `max_tokens` dynamic when omitted: after the resident context is prepared, chat requests default to the remaining admitted context (`max_context_tokens - prompt_tokens - 1`) instead of a fixed 8192. Startup logs were compacted to `Config`, `KVCache`, `WARMUP`, and `hipEngine is ready.` lines, with KVCache reporting KV bytes plus retained metadata bytes.
26659
+
26660
+ Validation:
26661
+
26662
+ ```bash
26663
+ python -m pytest -q tests/test_generation_qwen35_paro.py tests/test_server_api.py tests/test_llm_generate.py
26664
+ # 24 passed
26665
+ python -m py_compile hipengine/runtime/qwen35_paro_runner.py hipengine/server/api.py hipengine/generation/qwen35_paro.py hipengine/llm.py hipengine/server/__main__.py
26666
+ ```
26667
+
26668
+ ## 2026-05-25 — suppress duplicate low-level KV capacity logs
26669
+
26670
+ Kept the server `Config`/`KVCache` summary as the user-facing startup output and demoted the lower-level PARO runner KV-capacity info/warning lines to DEBUG. The resolved `Config` and `KVCache` lines intentionally remain after resident weights load because auto sizing uses actual `hipMemGetInfo` free memory after model materialization.
26671
+
26672
+ Validation:
26673
+
26674
+ ```bash
26675
+ python -m pytest -q tests/test_server_api.py tests/test_generation_qwen35_paro.py
26676
+ python -m py_compile hipengine/runtime/qwen35_paro_runner.py hipengine/server/api.py
26677
+ ```
26678
+
26679
+ ## 2026-05-26 — v0.2.1 release validation and artifact build
26680
+
26681
+ Prepared v0.2.1 for publishing with the server KV preallocation improvements folded into the `CHANGELOG.md` v0.2.1 entry (leaving `Unreleased` empty). Used a clean detached worktree at `/tmp/hipengine-release-v021.QhOZ2d` to avoid the main checkout's unrelated untracked `uv.lock`.
26682
+
26683
+ Validation and artifact commands:
26684
+
26685
+ ```bash
26686
+ git fetch --tags origin && git pull --ff-only
26687
+ python3 -m compileall -q hipengine scripts tests
26688
+ uv run --extra dev python -m pytest -q
26689
+ uv run --python 3.10 --extra dev python -m pytest -q
26690
+ uv run --extra dev hipengine-server --help
26691
+ rm -rf dist && python3 -m build
26692
+ unzip -p dist/hipengine-0.2.1-py3-none-manylinux_2_39_x86_64.whl hipengine-0.2.1.dist-info/WHEEL
26693
+ uvx --from twine twine check dist/*
26694
+ WHEEL=/tmp/hipengine-release-v021.QhOZ2d/dist/hipengine-0.2.1-py3-none-manylinux_2_39_x86_64.whl; \
26695
+ (cd /tmp && uv run --isolated --with "${WHEEL}[server]" hipengine-server --help)
26696
+ ```
26697
+
26698
+ Results: compileall passed; full pytest passed on CPython 3.10.16 (including the explicit `--python 3.10` run); server CLI smoke passed; `python3 -m build` produced `hipengine-0.2.1.tar.gz` and `hipengine-0.2.1-py3-none-manylinux_2_39_x86_64.whl`; wheel metadata reports `Root-Is-Purelib: false` and tag `py3-none-manylinux_2_39_x86_64`; `twine check` passed for both artifacts; isolated wheel server CLI smoke passed.
26699
+
26700
+ ## 2026-05-26 — retarget server KV preallocation release to v0.2.2
26701
+
26702
+ Confirmed `v0.2.1` was already immutable on PyPI and tagged on GitHub, so retargeted the server KV preallocation improvements to `v0.2.2`. Updated `pyproject.toml` to `0.2.2` and split `CHANGELOG.md` so `v0.2.1` retains the already-published session reuse/warmup/streaming notes while `v0.2.2` carries the resident context/KV preallocation controls, auto context sizing, retained-KV capacity estimate, `max_tokens=auto`, and partial-construction cleanup notes.
26703
+
26704
+ ## 2026-05-26 — v0.2.2 release validation and artifact build
26705
+
26706
+ Built the server KV preallocation release as `v0.2.2` from clean detached worktree `/tmp/hipengine-release-v021.QhOZ2d` at commit `fc16570` before the release-validation log append.
26707
+
26708
+ Validation and artifact commands:
26709
+
26710
+ ```bash
26711
+ python3 -m compileall -q hipengine scripts tests
26712
+ uv run --extra dev python -m pytest -q
26713
+ uv run --python 3.10 --extra dev python -m pytest -q
26714
+ uv run --extra dev hipengine-server --help
26715
+ rm -f uv.lock && rm -rf .venv dist
26716
+ python3 -m build
26717
+ unzip -p dist/hipengine-0.2.2-py3-none-manylinux_2_39_x86_64.whl hipengine-0.2.2.dist-info/WHEEL
26718
+ uvx --from twine twine check dist/*
26719
+ WHEEL=/tmp/hipengine-release-v021.QhOZ2d/dist/hipengine-0.2.2-py3-none-manylinux_2_39_x86_64.whl; \
26720
+ (cd /tmp && uv run --isolated --with "${WHEEL}[server]" hipengine-server --help)
26721
+ ```
26722
+
26723
+ Results: compileall passed; full pytest passed on CPython 3.10.16 (including the explicit `--python 3.10` run); server CLI smoke passed; `python3 -m build` produced `hipengine-0.2.2.tar.gz` and `hipengine-0.2.2-py3-none-manylinux_2_39_x86_64.whl`; wheel metadata reports `Root-Is-Purelib: false` and tag `py3-none-manylinux_2_39_x86_64`; `twine check` passed for both artifacts; isolated wheel server CLI smoke passed. Rebuild artifacts after this log append before publishing so `dist/` matches the final commit.
@@ -40,12 +40,25 @@ select `cpu_reference` where a CPU implementation exists; nearby targets such as
40
40
  `gfx1101`/`gfx1102` can force a backend with `--backend hip_gfx1100` or
41
41
  `HIPENGINE_BACKEND=hip_gfx1100` after local validation.
42
42
 
43
- By default the server eagerly loads the model and runs a short warmup
44
- generation at startup so the first real request does not pay load/compile cost.
45
- Disable with `--no-eager-load` or `HIPENGINE_EAGER_LOAD=0`. The warmup prompt
46
- and token count are configurable via `--eager-load-prompt` and
43
+ By default the server eagerly loads the model, loads resident weights, estimates
44
+ remaining HIP memory for KV cache plus persistent context metadata, then
45
+ preallocates `min(model max context, estimated allocatable context)`. Pass
46
+ `--max-context-tokens` (or `HIPENGINE_MAX_CONTEXT_TOKENS`) to force a lower cap.
47
+ Startup fails with a clear error if the requested cap cannot be allocated; lower
48
+ `--max-context-tokens` or use `--kv-storage int8_per_token_head`. Disable eager
49
+ startup with `--no-eager-load` or `HIPENGINE_EAGER_LOAD=0`. The warmup prompt and
50
+ token count are configurable via `--eager-load-prompt` and
47
51
  `--eager-load-max-tokens`.
48
52
 
53
+ The resident KV policy is server-wide: set `--kv-storage` (`auto`, `bf16`, or
54
+ `int8_per_token_head`), `--kv-scale-dtype`, and `--kv-scale-granularity` at
55
+ startup. Requests that ask for a different KV policy are rejected instead of
56
+ rebuilding the resident model. Startup logs include a compact KVCache summary
57
+ from current HIP free memory and warn when even INT8 KV is below the model's
58
+ advertised max context. Chat requests that omit `max_tokens` use
59
+ `max_tokens=auto`, meaning the remaining admitted context
60
+ (`max_context_tokens - prompt_tokens - 1`).
61
+
49
62
  Set `HIPENGINE_API_KEY` or pass `--api-key` to require OpenAI-style bearer
50
63
  authentication:
51
64
 
@@ -64,6 +64,36 @@ class Qwen35ParoOneTokenGenerator:
64
64
  for prompt in request.prompts
65
65
  ]
66
66
 
67
+ def prepare(self, *, max_sequence_length: int | None = None, sampling_params: Any | None = None) -> int:
68
+ params = sampling_params
69
+ runner = self._get_runner()
70
+ kv_policy = resolve_kv_policy(
71
+ getattr(params, "kv_storage", "auto"),
72
+ scale_dtype=getattr(params, "kv_scale_dtype", "fp16"),
73
+ scale_granularity=getattr(params, "kv_scale_granularity", "per_token_head"),
74
+ )
75
+ auto_context_length = max_sequence_length is None
76
+ if auto_context_length:
77
+ requested_length = int(getattr(runner.config, "max_position_embeddings", 0) or 0)
78
+ if requested_length <= 0:
79
+ requested_length = _session_capacity_for(1)
80
+ else:
81
+ if int(max_sequence_length) <= 0:
82
+ raise ValueError("max_sequence_length must be positive")
83
+ requested_length = int(max_sequence_length)
84
+ session_capacity = _session_capacity_for(requested_length)
85
+ session = self._get_session(
86
+ runner,
87
+ max_sequence_length=session_capacity,
88
+ kv_policy=kv_policy,
89
+ auto_context_length=auto_context_length,
90
+ )
91
+ return int(getattr(session, "max_sequence_length", self._session_capacity))
92
+
93
+ def count_tokens(self, text: str) -> int:
94
+ _last_token_id, prompt_ids = _select_token(Path(self.model_path), str(text), None)
95
+ return len(prompt_ids)
96
+
67
97
  def stream(self, request: GenerationRequest) -> Iterator[str]:
68
98
  if len(request.prompts) != 1:
69
99
  raise ValueError("streaming currently supports exactly one prompt")
@@ -183,6 +213,7 @@ class Qwen35ParoOneTokenGenerator:
183
213
  *,
184
214
  max_sequence_length: int,
185
215
  kv_policy,
216
+ auto_context_length: bool = False,
186
217
  ) -> Qwen35ParoResidentSession:
187
218
  kv_key = (
188
219
  kv_policy.storage_dtype.value,
@@ -190,20 +221,23 @@ class Qwen35ParoOneTokenGenerator:
190
221
  kv_policy.scale_granularity,
191
222
  int(kv_policy.block_size),
192
223
  )
224
+ capacity_ok = self._session_capacity >= max_sequence_length or bool(auto_context_length)
193
225
  if (
194
226
  self._session is None
195
- or self._session_capacity < max_sequence_length
227
+ or not capacity_ok
196
228
  or self._session_kv_key != kv_key
197
229
  ):
198
230
  self.close()
199
- self._session = Qwen35ParoResidentSession(
200
- runner,
201
- max_sequence_length=max_sequence_length,
202
- kv_policy=kv_policy.create_policy(),
203
- kv_scale_dtype=kv_policy.scale_dtype,
204
- kv_scale_granularity=kv_policy.scale_granularity,
205
- )
206
- self._session_capacity = max_sequence_length
231
+ session_kwargs = {
232
+ "max_sequence_length": max_sequence_length,
233
+ "kv_policy": kv_policy.create_policy(),
234
+ "kv_scale_dtype": kv_policy.scale_dtype,
235
+ "kv_scale_granularity": kv_policy.scale_granularity,
236
+ }
237
+ if auto_context_length:
238
+ session_kwargs["auto_context_length"] = True
239
+ self._session = Qwen35ParoResidentSession(runner, **session_kwargs)
240
+ self._session_capacity = int(getattr(self._session, "max_sequence_length", max_sequence_length))
207
241
  self._session_kv_key = kv_key
208
242
  else:
209
243
  self._session.reset()
@@ -71,6 +71,36 @@ class LLM:
71
71
  for text in generator.generate(request):
72
72
  yield text
73
73
 
74
+ def prepare(
75
+ self,
76
+ *,
77
+ max_sequence_length: int | None = None,
78
+ sampling_params: SamplingParams | None = None,
79
+ ) -> int | None:
80
+ """Eagerly prepare a resident session when the generator supports it.
81
+
82
+ Passing ``max_sequence_length=None`` lets generators choose the largest
83
+ context they can preallocate for the selected model/KV policy.
84
+ """
85
+
86
+ generator = self._get_text_generator()
87
+ preparer = getattr(generator, "prepare", None)
88
+ if not callable(preparer):
89
+ return None
90
+ return preparer(
91
+ max_sequence_length=None if max_sequence_length is None else int(max_sequence_length),
92
+ sampling_params=sampling_params or SamplingParams(),
93
+ )
94
+
95
+ def count_tokens(self, text: str) -> int:
96
+ """Return tokenizer token count when the resolved generator exposes one."""
97
+
98
+ generator = self._get_text_generator()
99
+ counter = getattr(generator, "count_tokens", None)
100
+ if not callable(counter):
101
+ raise NotImplementedError("token counting is not supported by this generator")
102
+ return int(counter(str(text)))
103
+
74
104
  def _get_text_generator(self) -> Any:
75
105
  if self._text_generator is not None:
76
106
  return self._text_generator
@@ -46,6 +46,7 @@ class Qwen35ParoConfig:
46
46
  layer_types: tuple[str, ...]
47
47
  quant_method: str
48
48
  vocab_size: int = 0
49
+ max_position_embeddings: int = 0
49
50
  rms_norm_eps: float = 1.0e-6
50
51
  rope_theta: float = 1000000.0
51
52
  rotary_dim: int = 0
@@ -142,6 +143,7 @@ def qwen35_paro_config_from_hf(config: dict[str, Any]) -> Qwen35ParoConfig:
142
143
  layer_types=layer_types,
143
144
  quant_method=quant_method,
144
145
  vocab_size=int(text.get("vocab_size", 0) or 0),
146
+ max_position_embeddings=int(text.get("max_position_embeddings", config.get("max_position_embeddings", 0)) or 0),
145
147
  rms_norm_eps=float(text.get("rms_norm_eps", 1.0e-6) or 1.0e-6),
146
148
  rope_theta=float(text.get("rope_theta", rope_parameters.get("rope_theta", 1000000.0)) or 1000000.0),
147
149
  rotary_dim=rotary_dim,