hipengine 0.2.0__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 (658) hide show
  1. {hipengine-0.2.0 → hipengine-0.2.2}/CHANGELOG.md +76 -0
  2. {hipengine-0.2.0 → hipengine-0.2.2}/PKG-INFO +12 -5
  3. {hipengine-0.2.0 → hipengine-0.2.2}/README.md +11 -4
  4. {hipengine-0.2.0 → hipengine-0.2.2}/WORKLOG.md +166 -0
  5. {hipengine-0.2.0 → hipengine-0.2.2}/docs/API.md +27 -4
  6. hipengine-0.2.2/hipengine/generation/qwen35_paro.py +332 -0
  7. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/llm.py +74 -21
  8. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/loading/__init__.py +2 -0
  9. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/loading/gguf.py +2 -1
  10. hipengine-0.2.2/hipengine/loading/hf_cache.py +121 -0
  11. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/loading/qwen35_paro.py +2 -0
  12. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/loading/safetensors.py +3 -26
  13. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/runtime/qwen35_paro_runner.py +431 -2
  14. hipengine-0.2.2/hipengine/server/__main__.py +124 -0
  15. hipengine-0.2.2/hipengine/server/api.py +1087 -0
  16. {hipengine-0.2.0 → hipengine-0.2.2}/pyproject.toml +1 -1
  17. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/llamacpp_bench_with_peak.py +2 -3
  18. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_generation_qwen35_paro.py +108 -3
  19. hipengine-0.2.2/tests/test_hf_cache.py +63 -0
  20. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_llm_generate.py +88 -0
  21. hipengine-0.2.2/tests/test_server_api.py +384 -0
  22. hipengine-0.2.0/hipengine/generation/qwen35_paro.py +0 -155
  23. hipengine-0.2.0/hipengine/server/__main__.py +0 -55
  24. hipengine-0.2.0/hipengine/server/api.py +0 -580
  25. hipengine-0.2.0/tests/test_server_api.py +0 -194
  26. {hipengine-0.2.0 → hipengine-0.2.2}/.gitattributes +0 -0
  27. {hipengine-0.2.0 → hipengine-0.2.2}/.github/workflows/publish.yml +0 -0
  28. {hipengine-0.2.0 → hipengine-0.2.2}/.gitignore +0 -0
  29. {hipengine-0.2.0 → hipengine-0.2.2}/AGENTS.md +0 -0
  30. {hipengine-0.2.0 → hipengine-0.2.2}/CLAUDE.md +0 -0
  31. {hipengine-0.2.0 → hipengine-0.2.2}/LICENSE +0 -0
  32. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/7900XTX.md +0 -0
  33. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/CHANGELOG.md +0 -0
  34. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/MTP.md +0 -0
  35. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/README.md +0 -0
  36. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/W7900.md +0 -0
  37. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/configs/llamacpp-mtp-qwen36-27b.json +0 -0
  38. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/prompts/mtpbench-code-general-ja.jsonl +0 -0
  39. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/.gitkeep +0 -0
  40. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-13-hipengine-qwen35-paro-optimal-blocked.json +0 -0
  41. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-13-source-lineage-qwen35-paro-optimal-4k-128.json +0 -0
  42. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-13-source-lineage-qwen35-paro-optimal-512-128.json +0 -0
  43. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-c1-parent-fixture-blocked.json +0 -0
  44. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-cn-correctness-blocked.json +0 -0
  45. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-ab-fused-lmhead128-graph-diagnostic.json +0 -0
  46. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-c1-diagnostic.json +0 -0
  47. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-graph-diagnostic.json +0 -0
  48. {hipengine-0.2.0 → 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
  49. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-linear-qkv-z-fused-graph-diagnostic.json +0 -0
  50. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-lmhead128-qk-qkvz-fused-graph-diagnostic.json +0 -0
  51. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-14-hipengine-qwen35-paro-512-128-tokenizer-cache-diagnostic.json +0 -0
  52. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-0p8b-paro-512-128-blocked.json +0 -0
  53. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c1-parent-fixture-accepted.json +0 -0
  54. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c1-parent-mixed-blocked.json +0 -0
  55. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c1-router-qnorm-blocked.json +0 -0
  56. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c1-scheduler-serial-bench-blocked.json +0 -0
  57. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c2-native-compact-prefill-correctness-accepted.json +0 -0
  58. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c2-scheduler-serial-bench-blocked.json +0 -0
  59. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c2-scheduler-serial-runner-accepted.json +0 -0
  60. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c2-serial-slot-runner-accepted.json +0 -0
  61. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c4-native-compact-prefill-correctness-accepted.json +0 -0
  62. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c4-scheduler-serial-bench-blocked.json +0 -0
  63. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c4-scheduler-serial-runner-accepted.json +0 -0
  64. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c8-native-compact-prefill-correctness-accepted.json +0 -0
  65. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c8-scheduler-serial-bench-blocked.json +0 -0
  66. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-c8-scheduler-serial-runner-accepted.json +0 -0
  67. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-cn-generated-equality-accepted.json +0 -0
  68. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-dflash-ddtree-blocked.json +0 -0
  69. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-linear-attn-segment-prefill-accepted.json +0 -0
  70. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-compact-c8-blocked.json +0 -0
  71. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-full-attn-boundary-blocked.json +0 -0
  72. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-full-single-request-accepted.json +0 -0
  73. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-multiloop-512-4k-diagnostic.json +0 -0
  74. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefill-plan-blocked.json +0 -0
  75. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-attention-accepted.json +0 -0
  76. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-attn-rejected.json +0 -0
  77. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-decode-rejected.json +0 -0
  78. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-gated-recurrent-rejected.json +0 -0
  79. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer0-stage-bisect-rejected.json +0 -0
  80. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-layer3-fullattn-stage-accepted.json +0 -0
  81. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-prefill-rejected.json +0 -0
  82. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-scratch-restore-sweep.json +0 -0
  83. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-serial-fullattn-layer4-accepted.json +0 -0
  84. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-serial-suffix-full40-accepted.json +0 -0
  85. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-native-prefix-sweep-rejected.json +0 -0
  86. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-prefix-bisect-blocked.json +0 -0
  87. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-15-hipengine-qwen35-varlen-full-attn-prefill-accepted.json +0 -0
  88. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-gguf-q4k-pack8-bf16out-diagnostic.json +0 -0
  89. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-gguf-q4k-pack8-gemv-diagnostic.json +0 -0
  90. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-gguf-qwen35-e2e-correctness-diagnostic.json +0 -0
  91. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-gguf-vs-paro-diagnostic.json +0 -0
  92. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-cast-glue-diagnostic.json +0 -0
  93. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-gate-rotate-diagnostic.json +0 -0
  94. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-threshold-sweep-diagnostic.json +0 -0
  95. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-v3-memory-diagnostic.json +0 -0
  96. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-aotriton-v3-prefill-diagnostic.json +0 -0
  97. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-comparison-tables-diagnostic.json +0 -0
  98. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-decode-graph-replay-diagnostic.json +0 -0
  99. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-long-checkpoint-diagnostic.json +0 -0
  100. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-16-hipengine-qwen35-prefill-chunking-diagnostic.json +0 -0
  101. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gfx1151-shisa-qwen36-packed-canonical-sweep-diagnostic.json +0 -0
  102. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gfx1151-shisa-qwen36-packed-chunk256-sweep-diagnostic.json +0 -0
  103. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-aotriton-v3-prefill-diagnostic.json +0 -0
  104. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-bulk-prefill-q4km-accepted.json +0 -0
  105. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-decode-graph-replay-diagnostic.json +0 -0
  106. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-full-attn-gpu-prelude-diagnostic.json +0 -0
  107. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-local-quant-coverage-diagnostic.json +0 -0
  108. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-prefill-projection-diagnostic.json +0 -0
  109. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-q4km-parity-benchmark-diagnostic.json +0 -0
  110. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-gguf-resident-session-diagnostic.json +0 -0
  111. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-08b-gfx1151-dense-diagnostic.json +0 -0
  112. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-35b-qwen36-27b-gfx1151-diagnostic.json +0 -0
  113. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d11-rotate-dual-pack8-fusion-rejected.json +0 -0
  114. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d12-rmsnorm-producer-fusion-deferred.json +0 -0
  115. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d13-same-input-projection-fusions-rejected.json +0 -0
  116. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d14-selected-moe-postop-fold-rejected.json +0 -0
  117. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d15-router-coop-fold-rejected.json +0 -0
  118. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d16-kv-pack8-fusion-rejected.json +0 -0
  119. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d21-marlin-k-qweight-neutral-diagnostic.json +0 -0
  120. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d31-d33-grouped-gqa-long-context-diagnostic.json +0 -0
  121. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d42-dispatch-cap-rejected.json +0 -0
  122. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d44-launch-bounds-deferred.json +0 -0
  123. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d51-gdn-decode-audit.json +0 -0
  124. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-d52-w8a16-decode-audit.json +0 -0
  125. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-p33-moe-metadata-fanout-deferred.json +0 -0
  126. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-p52-prefill-chunk-autotune-accepted.json +0 -0
  127. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p11-rocblas-ab-rejected.json +0 -0
  128. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p12-shared-gate-up-token-tile-diagnostic.json +0 -0
  129. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p13-shared-down-combine-token-tile-diagnostic.json +0 -0
  130. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p14-moe-wmma-threshold-diagnostic.json +0 -0
  131. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p16-prefill-mcumode-rejected.json +0 -0
  132. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p31-gdn-rotate-rejected.json +0 -0
  133. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-p32-router-sigmoid-rejected.json +0 -0
  134. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-paro-dual-format-diagnostic.json +0 -0
  135. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-qwen36-w1-unroll600-ablation-diagnostic.json +0 -0
  136. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen35-rocprof-amdahl-diagnostic.json +0 -0
  137. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-512-128-paro-blocker-profile.json +0 -0
  138. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-bench-paro-comparison-diagnostic.json +0 -0
  139. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-bulk-moe-prefill-diagnostic.json +0 -0
  140. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-bulk-parity-diagnostic.json +0 -0
  141. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-decode-pack8-raw-partial.json +0 -0
  142. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-decode-profile-diagnostic.json +0 -0
  143. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-expert-pack8-sidecar-diagnostic.json +0 -0
  144. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-fast-bulk-default-promoted-diagnostic.json +0 -0
  145. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-full-attn-parity-fixed-diagnostic.json +0 -0
  146. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-intake-diagnostic.json +0 -0
  147. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-linear-recurrent-parity-fixed-diagnostic.json +0 -0
  148. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-native-attention-bulk-moe-diagnostic.json +0 -0
  149. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-public-generate-smoke.json +0 -0
  150. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-35b-a3b-q4km-selected-device-experts-diagnostic.json +0 -0
  151. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-packed-shared-decode-fusion-diagnostic.json +0 -0
  152. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-shisa-force-legacy-diagnostic.json +0 -0
  153. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-hipengine-qwen36-shisa-packed-vs-legacy-refresh-diagnostic.json +0 -0
  154. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-llamacpp-hip-qwen36-peak.json +0 -0
  155. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-llamacpp-upstream-gfx1151-qwen36-gguf-rerun-diagnostic.json +0 -0
  156. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-17-llamacpp-vulkan-qwen36-peak.json +0 -0
  157. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-gfx1100-qwen36-27b-paro-diagnostic.json +0 -0
  158. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-gfx1100-shisa-qwen36-packed-gt1k-default-diagnostic.json +0 -0
  159. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-p8_2-dense-q4k-wmma-prefill-diagnostic.json +0 -0
  160. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-gt1k-prefill-chunk-policy-diagnostic.json +0 -0
  161. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-128k-quality-perf-diagnostic.json +0 -0
  162. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-256k-capacity-blocked.json +0 -0
  163. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-256k-single-buffer-capacity-diagnostic.json +0 -0
  164. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-aotriton-query-reuse-diagnostic.json +0 -0
  165. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen35-int8-kv-scratch-release-diagnostic.json +0 -0
  166. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p8-compact-moe-wmma-accepted.json +0 -0
  167. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_a3-gdn-k2-chain-accepted.json +0 -0
  168. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c1-wmma-tile-sweep-blocked.json +0 -0
  169. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c10-combined-gap-analysis.json +0 -0
  170. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c11-hot-expert-final-blocked.json +0 -0
  171. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c3-selected-moe-profile.json +0 -0
  172. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c4-q4-hot-fulltile-v1-rejected.json +0 -0
  173. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c5-q4-sidemeta-v1-rejected.json +0 -0
  174. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c7-q5-opt-v1-rejected.json +0 -0
  175. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c8-q6-retain-legacy.json +0 -0
  176. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-p9_c9-tail-no-padding-not-retained.json +0 -0
  177. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-18-hipengine-qwen36-35b-a3b-q4km-prefill-q8-wmma-p8_1.json +0 -0
  178. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_b7-decode-gemv-rejected.json +0 -0
  179. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_c12-q4t16-repack-design.json +0 -0
  180. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_c13-q4t16-materializer.json +0 -0
  181. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_e2-e2e-correctness-rejected.json +0 -0
  182. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h1-fastpath-safety-correctness-accepted.json +0 -0
  183. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h2-decode-repack-design.json +0 -0
  184. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h3-t16-512x128-bench.json +0 -0
  185. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h3-t16-e2e-correctness-accepted.json +0 -0
  186. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-35b-a3b-q4km-p9_h3-t16-rocprof-512x16-summary.json +0 -0
  187. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-hipengine-qwen36-packed-int8-kv-readme-memory-diagnostic.json +0 -0
  188. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-19-llamacpp-mtp-qwen36-27b-diagnostic.json +0 -0
  189. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p10-b5-p9-e2e-gate-blocked.json +0 -0
  190. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p10-b6-acceptance-blocked.json +0 -0
  191. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p10-wave1-blocked.json +0 -0
  192. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_c14-q4t16-selected-wmma-prototype.json +0 -0
  193. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_c15-q4t16-replay-rejected.json +0 -0
  194. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_c16-selected-moe-alternatives.json +0 -0
  195. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_c17-no-q4-redesign-blocked.json +0 -0
  196. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d1-router-split-coop.json +0 -0
  197. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d10-q8t16-dual-split-64.json +0 -0
  198. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d11-rejected-q8t16-shared-silu.json +0 -0
  199. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d15-dense-dual-alpha-beta.json +0 -0
  200. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d16-q8t16-f32-ssm-out.json +0 -0
  201. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d17-key-bf16-rope.json +0 -0
  202. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d18-splitk-gqa-gate.json +0 -0
  203. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d2-bf16-key-rope-rejected.json +0 -0
  204. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d4-q4t16-silu-decode.json +0 -0
  205. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d6-q8t16-pair-dispatch.json +0 -0
  206. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d7-q8t16-qkv-gate-pair.json +0 -0
  207. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d8-q8t16-dcache-rejected.json +0 -0
  208. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_d9-q8t16-triple-qkv.json +0 -0
  209. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_g1-final-acceptance-blocked.json +0 -0
  210. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-attn-gate-fusion.json +0 -0
  211. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-attn128.json +0 -0
  212. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-q4t16-silu256.json +0 -0
  213. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-q5q6-direct-probes.json +0 -0
  214. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-20-hipengine-qwen36-35b-a3b-q4km-p9_h3-rejected-q6dense-dpreload.json +0 -0
  215. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-aotriton-v2-v3-diagnostic.json +0 -0
  216. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-d10-splitk-rocprof.json +0 -0
  217. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-d11-comparison-review.json +0 -0
  218. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-d8-splitk-decode.json +0 -0
  219. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-d9-splitk-sweep.json +0 -0
  220. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-decode-repack-residency-audit.json +0 -0
  221. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-long-context-chunked-smoke.json +0 -0
  222. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-long-context-preflight-blocked.json +0 -0
  223. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-memory-decode-pass-review.json +0 -0
  224. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-no-prefill-scratch-kv.json +0 -0
  225. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-q8-t16-scale-broadcast-rejected.json +0 -0
  226. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-r0-rocprof-baseline.json +0 -0
  227. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-r1-post-x1-rocprof.json +0 -0
  228. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-retained-safe-mode.json +0 -0
  229. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-selected-moe-t16-launchbounds-rejected.json +0 -0
  230. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-task39-32k-smoke.json +0 -0
  231. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-task40-prefill-vs-paro-diagnosis.json +0 -0
  232. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-hipengine-qwen36-35b-a3b-q4km-p10-x1-correctness-plus-x2-wmma-blocker.json +0 -0
  233. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-21-local-rx7900xtx-gguf-vs-paro-memory-comparison.json +0 -0
  234. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-after-memory-decode-pass-review.json +0 -0
  235. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-direct-selected-moe-c1-4k128-accepted.json +0 -0
  236. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-final-gate-4k128-accepted.json +0 -0
  237. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-q8-t16-decode-probes-rejected.json +0 -0
  238. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-q8-t16-second-pass-rejected.json +0 -0
  239. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-router256-4k128-accepted.json +0 -0
  240. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-selected-moe-down64-rejected.json +0 -0
  241. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-selected-moe-t16-qk256-rejected.json +0 -0
  242. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-small-kernel-second-pass-rejected.json +0 -0
  243. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-22-hipengine-qwen36-35b-a3b-q4km-q4ks-small-kernel-third-pass-rejected.json +0 -0
  244. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-qwen36-35b-a3b-q4ks-persistent-session-w7900-gap-review.json +0 -0
  245. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-qwen36-35b-a3b-q4ks-w7900-cold-start-diagnostic.json +0 -0
  246. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-qwen36-35b-a3b-q4ks-w7900-readme-sweep-accepted.json +0 -0
  247. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-qwen36-35b-a3b-q4ks-w7900-therock713-diagnostic.json +0 -0
  248. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-hipengine-w7900-therock713-gguf-paro-512-4k-spot-diagnostic.json +0 -0
  249. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-paro-512-prefill-workspace-overlap-rootcause-diagnostic.json +0 -0
  250. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-paro-prefill-workspace-overlap-threshold-diagnostic.json +0 -0
  251. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-1024-128.json +0 -0
  252. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-131072-128-blocked.json +0 -0
  253. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-32768-128.json +0 -0
  254. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-4096-128.json +0 -0
  255. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-512-128-rerun.json +0 -0
  256. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4km-65536-128-blocked.json +0 -0
  257. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-gguf-q4ks-4096-128.json +0 -0
  258. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-1024-128.json +0 -0
  259. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-131072-128.json +0 -0
  260. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-32768-128.json +0 -0
  261. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-4096-128.json +0 -0
  262. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-512-128.json +0 -0
  263. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-bf16kv-65536-128.json +0 -0
  264. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-int8kv-131072-128.json +0 -0
  265. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-hipengine-paro-int8kv-65536-128.json +0 -0
  266. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-llamacpp-hip-q4km-f16kv-sweep.json +0 -0
  267. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-llamacpp-hip-q4km-q8kv-maxctx.json +0 -0
  268. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-llamacpp-vulkan-q4km-f16kv-sweep.json +0 -0
  269. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-llamacpp-vulkan-q4km-q8kv-maxctx.json +0 -0
  270. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-paro-v011-current-regression-check.json +0 -0
  271. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-rocm7130423-current-head-paro-512-4k-check.json +0 -0
  272. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-rocm7130423-pure-current-head-paro-512-4k-check.json +0 -0
  273. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-rocm7130423-pure-packed-qwen36-paro-512-4k-check.json +0 -0
  274. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-rx7900xtx-rocm714-current-head-paro-512-4k-check.json +0 -0
  275. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-23-w7900-hipengine-therock713-paro-gguf-sweep-diagnostic.json +0 -0
  276. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-25-w7900-hipengine-gguf-q4ks-readme-persistent-5run.json +0 -0
  277. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-25-w7900-hipengine-paro-readme-persistent-5run.json +0 -0
  278. {hipengine-0.2.0 → hipengine-0.2.2}/benchmarks/results/2026-05-25-w7900-hipengine-readme-persistent-5run-diagnostic.json +0 -0
  279. {hipengine-0.2.0 → hipengine-0.2.2}/docs/BENCHMARK.md +0 -0
  280. {hipengine-0.2.0 → hipengine-0.2.2}/docs/DFLASH.md +0 -0
  281. {hipengine-0.2.0 → hipengine-0.2.2}/docs/ENVS.md +0 -0
  282. {hipengine-0.2.0 → hipengine-0.2.2}/docs/GGUF.md +0 -0
  283. {hipengine-0.2.0 → hipengine-0.2.2}/docs/GGUF_DECODE_REPACK.md +0 -0
  284. {hipengine-0.2.0 → hipengine-0.2.2}/docs/IMPLEMENTATION.md +0 -0
  285. {hipengine-0.2.0 → hipengine-0.2.2}/docs/KERNELS.md +0 -0
  286. {hipengine-0.2.0 → hipengine-0.2.2}/docs/KVCACHE.md +0 -0
  287. {hipengine-0.2.0 → hipengine-0.2.2}/docs/LESSONS-LEARNED.md +0 -0
  288. {hipengine-0.2.0 → hipengine-0.2.2}/docs/MARLIN.md +0 -0
  289. {hipengine-0.2.0 → hipengine-0.2.2}/docs/MTP.md +0 -0
  290. {hipengine-0.2.0 → hipengine-0.2.2}/docs/OPTIMIZE-DENSE.md +0 -0
  291. {hipengine-0.2.0 → hipengine-0.2.2}/docs/OPTIMIZE.md +0 -0
  292. {hipengine-0.2.0 → hipengine-0.2.2}/docs/PLAN.md +0 -0
  293. {hipengine-0.2.0 → hipengine-0.2.2}/docs/PREFILL.md +0 -0
  294. {hipengine-0.2.0 → hipengine-0.2.2}/docs/PUBLISH.md +0 -0
  295. {hipengine-0.2.0 → hipengine-0.2.2}/docs/README.md +0 -0
  296. {hipengine-0.2.0 → hipengine-0.2.2}/docs/RELAXED.md +0 -0
  297. {hipengine-0.2.0 → hipengine-0.2.2}/docs/ROOFLINE-gfx1151.md +0 -0
  298. {hipengine-0.2.0 → hipengine-0.2.2}/docs/ROOFLINE.md +0 -0
  299. {hipengine-0.2.0 → hipengine-0.2.2}/docs/SPECULATIVE-DECODE.md +0 -0
  300. {hipengine-0.2.0 → hipengine-0.2.2}/docs/TESTING.md +0 -0
  301. {hipengine-0.2.0 → hipengine-0.2.2}/docs/source_lineage.json +0 -0
  302. {hipengine-0.2.0 → hipengine-0.2.2}/fixtures/qwen35_paro/parent_512_32_seed1234.json +0 -0
  303. {hipengine-0.2.0 → hipengine-0.2.2}/hatch_build.py +0 -0
  304. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/__init__.py +0 -0
  305. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/benchmark/__init__.py +0 -0
  306. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/benchmark/correctness.py +0 -0
  307. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/core/__init__.py +0 -0
  308. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/core/build.py +0 -0
  309. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/core/device.py +0 -0
  310. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/core/dtype.py +0 -0
  311. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/core/hip.py +0 -0
  312. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/core/memory.py +0 -0
  313. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/core/rocblas.py +0 -0
  314. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/core/tensor.py +0 -0
  315. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/dispatch/__init__.py +0 -0
  316. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/dispatch/batch.py +0 -0
  317. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/dispatch/fusion.py +0 -0
  318. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/dispatch/kv.py +0 -0
  319. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/distributed/__init__.py +0 -0
  320. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/generation/__init__.py +0 -0
  321. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/generation/batch_scheduler.py +0 -0
  322. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/generation/qwen35_gguf.py +0 -0
  323. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/generation/registry.py +0 -0
  324. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/__init__.py +0 -0
  325. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/backends.py +0 -0
  326. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/cpu_reference/__init__.py +0 -0
  327. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/cpu_reference/fixtures.py +0 -0
  328. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/cpu_reference/ops.py +0 -0
  329. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/cuda_sm86/__init__.py +0 -0
  330. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/__init__.py +0 -0
  331. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/__init__.py +0 -0
  332. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton.py +0 -0
  333. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_release.toml +0 -0
  334. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/MANIFEST.vendor.json +0 -0
  335. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/aiter_hip_common.h +0 -0
  336. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/flash/aiter.h +0 -0
  337. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/kernel_cluster.h +0 -0
  338. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/lazy_tensor_internal.h +0 -0
  339. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/packed_kernel.h +0 -0
  340. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/triton_kernel.h +0 -0
  341. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/_internal/util.h +0 -0
  342. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/config.h +0 -0
  343. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/cpp_tune.h +0 -0
  344. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/dtypes.h +0 -0
  345. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/flash.h +0 -0
  346. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/runtime.h +0 -0
  347. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/util.h +0 -0
  348. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/include/aotriton/v2/flash.h +0 -0
  349. {hipengine-0.2.0 → 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
  350. {hipengine-0.2.0 → 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
  351. {hipengine-0.2.0 → 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
  352. {hipengine-0.2.0 → 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
  353. {hipengine-0.2.0 → 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
  354. {hipengine-0.2.0 → 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
  355. {hipengine-0.2.0 → 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
  356. {hipengine-0.2.0 → 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
  357. {hipengine-0.2.0 → 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
  358. {hipengine-0.2.0 → 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
  359. {hipengine-0.2.0 → 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
  360. {hipengine-0.2.0 → 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
  361. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/libaotriton_v2.so +0 -0
  362. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_runtime/0.11.2b/lib/libaotriton_v2.so.0.11.2 +0 -0
  363. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_wrap.cc +0 -0
  364. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/aotriton_wrap.py +0 -0
  365. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/paged_attn_decode.hip +0 -0
  366. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/paged_attn_decode.py +0 -0
  367. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/paged_kv_write.hip +0 -0
  368. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/attention/paged_kv_write.py +0 -0
  369. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/common/__init__.py +0 -0
  370. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/convert/__init__.py +0 -0
  371. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/convert/cast.hip +0 -0
  372. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/convert/cast.py +0 -0
  373. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/__init__.py +0 -0
  374. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/gguf_ops.hip +0 -0
  375. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/gguf_ops.py +0 -0
  376. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/paro_combine.hip +0 -0
  377. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/paro_combine.py +0 -0
  378. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/paro_silu.hip +0 -0
  379. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/fused/paro_silu.py +0 -0
  380. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/__init__.py +0 -0
  381. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/dense_gemv.hip +0 -0
  382. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/dense_gemv.py +0 -0
  383. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/lm_head.hip +0 -0
  384. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear/lm_head.py +0 -0
  385. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/__init__.py +0 -0
  386. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/conv.hip +0 -0
  387. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/conv.py +0 -0
  388. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/gdn.hip +0 -0
  389. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/linear_attn/gdn.py +0 -0
  390. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/__init__.py +0 -0
  391. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/group_scatter.hip +0 -0
  392. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/group_scatter.py +0 -0
  393. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/prefill.py +0 -0
  394. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/router.hip +0 -0
  395. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/moe/router.py +0 -0
  396. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/norm/__init__.py +0 -0
  397. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/norm/rmsnorm.hip +0 -0
  398. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/norm/rmsnorm.py +0 -0
  399. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/__init__.py +0 -0
  400. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_expert_pack8_gemv.hip +0 -0
  401. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_expert_pack8_gemv.py +0 -0
  402. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_gemv.hip +0 -0
  403. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_gemv.py +0 -0
  404. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_selected_pack8_gemv.hip +0 -0
  405. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_selected_pack8_gemv.py +0 -0
  406. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_selected_prefill.hip +0 -0
  407. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_selected_prefill.py +0 -0
  408. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_t16_selected_prefill.hip +0 -0
  409. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_k_t16_selected_prefill.py +0 -0
  410. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_gemv.hip +0 -0
  411. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_gemv.py +0 -0
  412. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_pack8_gemv.hip +0 -0
  413. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_pack8_gemv.py +0 -0
  414. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_prefill.hip +0 -0
  415. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_prefill.py +0 -0
  416. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_selected_pack8_gemv.hip +0 -0
  417. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_selected_pack8_gemv.py +0 -0
  418. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_selected_prefill.hip +0 -0
  419. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_selected_prefill.py +0 -0
  420. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_t16_selected_prefill.hip +0 -0
  421. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q4_k_t16_selected_prefill.py +0 -0
  422. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_embedding.hip +0 -0
  423. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_embedding.py +0 -0
  424. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_pack8_gemv.hip +0 -0
  425. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_pack8_gemv.py +0 -0
  426. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_t16_gemv.hip +0 -0
  427. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q6_k_t16_gemv.py +0 -0
  428. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_pack8_gemv.hip +0 -0
  429. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_pack8_gemv.py +0 -0
  430. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_prefill.hip +0 -0
  431. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_prefill.py +0 -0
  432. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_t16_gemv.hip +0 -0
  433. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_t16_gemv.py +0 -0
  434. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_t16_prefill.hip +0 -0
  435. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_q8_0_t16_prefill.py +0 -0
  436. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_t16_selected_gemv.hip +0 -0
  437. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/gguf_t16_selected_gemv.py +0 -0
  438. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/paro_awq_gemv.hip +0 -0
  439. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/paro_awq_gemv.py +0 -0
  440. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/paro_marlin_k.hip +0 -0
  441. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/paro_marlin_k.py +0 -0
  442. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/w8a16_linear.hip +0 -0
  443. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/quant/w8a16_linear.py +0 -0
  444. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/__init__.py +0 -0
  445. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/paro_rotate.hip +0 -0
  446. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/paro_rotate.py +0 -0
  447. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/qwen35_rotary.hip +0 -0
  448. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/rotary/qwen35_rotary.py +0 -0
  449. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/runtime/__init__.py +0 -0
  450. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/runtime/state.hip +0 -0
  451. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/runtime/state.py +0 -0
  452. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/smoke/__init__.py +0 -0
  453. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/smoke/smoke_add.hip +0 -0
  454. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/smoke/smoke_add.py +0 -0
  455. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/wmma/__init__.py +0 -0
  456. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/wmma/paro_awq_wmma.hip +0 -0
  457. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1100/wmma/paro_awq_wmma.py +0 -0
  458. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/hip_gfx1151/__init__.py +0 -0
  459. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kernels/registry.py +0 -0
  460. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kvcache/__init__.py +0 -0
  461. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kvcache/policy.py +0 -0
  462. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/kvcache/spans.py +0 -0
  463. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/layers/__init__.py +0 -0
  464. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/layers/base.py +0 -0
  465. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/loading/materialize.py +0 -0
  466. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/loading/qwen35_gguf.py +0 -0
  467. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/loading/qwen35_gguf_expert_sidecar.py +0 -0
  468. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/loading/qwen35_gguf_materialize.py +0 -0
  469. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/models/__init__.py +0 -0
  470. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/models/base.py +0 -0
  471. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/models/qwen35.py +0 -0
  472. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/models/registry.py +0 -0
  473. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/models/toy.py +0 -0
  474. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/__init__.py +0 -0
  475. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/base.py +0 -0
  476. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/bf16.py +0 -0
  477. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/fp16.py +0 -0
  478. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/gguf.py +0 -0
  479. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/gguf_k.py +0 -0
  480. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/gguf_q4_k.py +0 -0
  481. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/gguf_t16.py +0 -0
  482. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/registry.py +0 -0
  483. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/quant/w4_paro.py +0 -0
  484. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/runtime/__init__.py +0 -0
  485. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/runtime/gguf_embedding.py +0 -0
  486. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/runtime/gguf_linear.py +0 -0
  487. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/runtime/prefill.py +0 -0
  488. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/runtime/qwen35_gguf_runner.py +0 -0
  489. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/runtime/qwen35_paro.py +0 -0
  490. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/runtime/workspace.py +0 -0
  491. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/server/__init__.py +0 -0
  492. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/speculative/__init__.py +0 -0
  493. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/speculative/interfaces.py +0 -0
  494. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/tokenization/__init__.py +0 -0
  495. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/tokenization/gguf.py +0 -0
  496. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/util/__init__.py +0 -0
  497. {hipengine-0.2.0 → hipengine-0.2.2}/hipengine/util/amdgpu_vram.py +0 -0
  498. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/__init__.py +0 -0
  499. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/check_fixtures.py +0 -0
  500. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/check_lineage.py +0 -0
  501. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/fetch_aotriton.sh +0 -0
  502. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/gdn_decode_probe.py +0 -0
  503. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/gguf_k_gemv_smoke.py +0 -0
  504. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/gguf_prefill_projection_smoke.py +0 -0
  505. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/gguf_q6_k_embedding_smoke.py +0 -0
  506. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/inspect_gguf.py +0 -0
  507. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/llamacpp_mtp_bench.py +0 -0
  508. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_batch_correctness.py +0 -0
  509. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_batch_packed_prefill_correctness.py +0 -0
  510. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_batch_serial_bench.py +0 -0
  511. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_batch_serial_correctness.py +0 -0
  512. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_compare_tables.py +0 -0
  513. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_decode_graph_fixture_gate.py +0 -0
  514. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_dflash_ddtree_blocker.py +0 -0
  515. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_e2e_correctness.py +0 -0
  516. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_aotriton_prefill_sweep.py +0 -0
  517. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_bench.py +0 -0
  518. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_build_expert_sidecar.py +0 -0
  519. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_bulk_parity.py +0 -0
  520. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_decode_graph_smoke.py +0 -0
  521. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_e2e_correctness.py +0 -0
  522. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_expert_pack8_smoke.py +0 -0
  523. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_moe_replay.py +0 -0
  524. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_p9_e2e_correctness.py +0 -0
  525. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_gguf_rocprof_summary.py +0 -0
  526. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_kv_e2e_fixture_gate.py +0 -0
  527. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_kv_int8_accuracy.py +0 -0
  528. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_kv_policy_args.py +0 -0
  529. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_native_compact_prefill_plan.py +0 -0
  530. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_native_prefill_boundary.py +0 -0
  531. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_native_prefill_correctness.py +0 -0
  532. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_native_prefill_fixture_gate.py +0 -0
  533. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_native_prefill_fullattn_stage_probe.py +0 -0
  534. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_native_prefill_plan.py +0 -0
  535. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_native_prefill_stage_probe.py +0 -0
  536. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_paro_bench.py +0 -0
  537. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_paro_next_token.py +0 -0
  538. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_paro_packed_bench.py +0 -0
  539. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_readme_sweep.py +0 -0
  540. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/qwen35_rocprof_audit.py +0 -0
  541. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/resolve_worklog_conflict.py +0 -0
  542. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/smoke.py +0 -0
  543. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/strip_paro_safetensors.py +0 -0
  544. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/vendor_aotriton.sh +0 -0
  545. {hipengine-0.2.0 → hipengine-0.2.2}/scripts/w8a16_decode_probe.py +0 -0
  546. {hipengine-0.2.0 → hipengine-0.2.2}/tests/_gguf_synthetic_weights.py +0 -0
  547. {hipengine-0.2.0 → hipengine-0.2.2}/tests/conftest.py +0 -0
  548. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/cpu_reference/attention_decode_masked.json +0 -0
  549. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/cpu_reference/full_attn_prefill_causal_gqa_gate.json +0 -0
  550. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/cpu_reference/kv_int8_dequant_per_token_head.json +0 -0
  551. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/cpu_reference/linear_basic.json +0 -0
  552. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/cpu_reference/paged_attn_decode_int8_per_token_head.json +0 -0
  553. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/cpu_reference/rmsnorm_basic.json +0 -0
  554. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/cpu_reference/rotate_split_half.json +0 -0
  555. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/gguf/qwen35_0_8b_q4_1_e2e.json +0 -0
  556. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/gguf/qwen35_0_8b_q4_k_m_e2e.json +0 -0
  557. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/gguf/qwen35_0_8b_q8_0_e2e.json +0 -0
  558. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/gguf/qwen35_0_8b_ud_q4_k_xl_e2e.json +0 -0
  559. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/gguf/qwen36_35b_a3b_q4km_p9_e2e.json +0 -0
  560. {hipengine-0.2.0 → hipengine-0.2.2}/tests/fixtures/gguf/qwen36_35b_a3b_q4km_smoke.json +0 -0
  561. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_aotriton_discovery.py +0 -0
  562. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_build.py +0 -0
  563. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_cast_plan.py +0 -0
  564. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_check_lineage.py +0 -0
  565. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_cpu_reference.py +0 -0
  566. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_dense_gemv_plan.py +0 -0
  567. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_dispatch_batch.py +0 -0
  568. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_fusion_spike.py +0 -0
  569. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_generation_batch_scheduler.py +0 -0
  570. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gfx1151_backend.py +0 -0
  571. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_e2e_acceptance.py +0 -0
  572. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_embedding_dispatch.py +0 -0
  573. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_expert_pack8_gemv.py +0 -0
  574. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_gemv_decode_dispatch.py +0 -0
  575. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_k_gemv.py +0 -0
  576. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_k_selected_pack8_gemv_decode.py +0 -0
  577. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_k_selected_wmma_prefill.py +0 -0
  578. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_k_t16_selected_wmma_prefill.py +0 -0
  579. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_linear_dispatch.py +0 -0
  580. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_ops.py +0 -0
  581. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q4_k_gemv.py +0 -0
  582. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q4_k_pack8_gemv_decode.py +0 -0
  583. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q4_k_selected_dual_pack8_gemv_decode.py +0 -0
  584. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q4_k_selected_wmma_prefill.py +0 -0
  585. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q4_k_t16_selected_wmma_prefill.py +0 -0
  586. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q4_k_tile16_repack.py +0 -0
  587. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q4_k_wmma_prefill.py +0 -0
  588. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q6_k_embedding.py +0 -0
  589. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q6_k_pack8_gemv_decode.py +0 -0
  590. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q6_k_t16_gemv_decode.py +0 -0
  591. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q8_0_pack8_gemv_decode.py +0 -0
  592. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q8_0_t16_gemv_decode.py +0 -0
  593. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q8_0_t16_wmma_prefill.py +0 -0
  594. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q8_0_wmma_prefill.py +0 -0
  595. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_q8_0_wmma_prefill_dual.py +0 -0
  596. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_quant_layout.py +0 -0
  597. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_reader.py +0 -0
  598. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_t16_repack.py +0 -0
  599. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_gguf_t16_selected_gemv_decode.py +0 -0
  600. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_hip_runtime.py +0 -0
  601. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_kernel_registry.py +0 -0
  602. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_kv_dispatch.py +0 -0
  603. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_kvcache_policy.py +0 -0
  604. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_kvcache_spans.py +0 -0
  605. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_llm_gguf_generate_path.py +0 -0
  606. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_lm_head_plan.py +0 -0
  607. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_loading_materialize.py +0 -0
  608. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_loading_safetensors.py +0 -0
  609. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_memory_stats.py +0 -0
  610. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_model_quant_and_imports.py +0 -0
  611. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_paro_awq_gemv_plan.py +0 -0
  612. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_paro_awq_wmma_plan.py +0 -0
  613. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_paro_combine_plan.py +0 -0
  614. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_paro_rotate_plan.py +0 -0
  615. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_paro_silu_plan.py +0 -0
  616. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_bench_memory_audit.py +0 -0
  617. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_decode_state.py +0 -0
  618. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_chunked_prefill.py +0 -0
  619. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_compact_moe_gemv_routing.py +0 -0
  620. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_compact_moe_wmma_resolver.py +0 -0
  621. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_compact_moe_wmma_routing.py +0 -0
  622. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_decode_graph_policy.py +0 -0
  623. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_decode_repack_dispatch.py +0 -0
  624. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_decode_repack_semantics.py +0 -0
  625. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_expert_sidecar.py +0 -0
  626. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_fastpath_safety.py +0 -0
  627. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_full_attention_gpu.py +0 -0
  628. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_gdn_prefill_correctness.py +0 -0
  629. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_gdn_prefill_routing.py +0 -0
  630. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_mapping.py +0 -0
  631. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_materialize.py +0 -0
  632. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_moe_replay.py +0 -0
  633. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_p10_x2_layer_correctness.py +0 -0
  634. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_p9_e2e_correctness.py +0 -0
  635. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_rocprof_summary.py +0 -0
  636. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_runner.py +0 -0
  637. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_gguf_tokenizer.py +0 -0
  638. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_kv_e2e_fixture_gate.py +0 -0
  639. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_kv_int8_accuracy.py +0 -0
  640. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_linear_attn_conv_plan.py +0 -0
  641. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_linear_attn_gdn_plan.py +0 -0
  642. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_moe_group_scatter_plan.py +0 -0
  643. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_native_prefill_boundary.py +0 -0
  644. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_native_prefill_fullattn_stage_probe.py +0 -0
  645. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_paged_attn_decode_plan.py +0 -0
  646. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_paged_kv_write_plan.py +0 -0
  647. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_paro_layout.py +0 -0
  648. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_paro_marlin_k.py +0 -0
  649. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_prefill_workspace_policy.py +0 -0
  650. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_resident_batch_layout.py +0 -0
  651. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_rmsnorm_plan.py +0 -0
  652. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_rotary_plan.py +0 -0
  653. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_qwen35_router_plan.py +0 -0
  654. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_runtime_state_plan.py +0 -0
  655. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_runtime_workspace.py +0 -0
  656. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_smoke_add_plan.py +0 -0
  657. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_speculative_interfaces.py +0 -0
  658. {hipengine-0.2.0 → hipengine-0.2.2}/tests/test_w8a16_linear_plan.py +0 -0
@@ -6,6 +6,82 @@ 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
+
44
+ ## v0.2.1 - 2026-05-25
45
+
46
+ Patch release improving server session management, streaming, and
47
+ OpenAI-compatible reasoning output.
48
+
49
+ ### Added
50
+
51
+ - Eager model warmup on server startup: the configured model and a short
52
+ warmup generation run before uvicorn reports ready, so the first real
53
+ request does not pay load/compile cost. Controlled by `--eager-load` /
54
+ `--no-eager-load` (default: on), `--eager-load-prompt`, and
55
+ `--eager-load-max-tokens`, with `HIPENGINE_EAGER_LOAD`,
56
+ `HIPENGINE_EAGER_LOAD_PROMPT`, and `HIPENGINE_EAGER_LOAD_MAX_TOKENS`
57
+ environment variable equivalents.
58
+ - `LLM.stream()` method for single-prompt token-by-token generation when
59
+ the underlying text generator supports it.
60
+ - Reasoning-content splitting for chat completions: `<think>…</think>`
61
+ spans (Qwen/DeepSeek-style) are now separated into
62
+ `message.reasoning_content` (non-streaming) or `delta.reasoning_content`
63
+ chunks (streaming), matching the OpenAI reasoning-content convention.
64
+
65
+ ### Changed
66
+
67
+ - PARO text generators and their resident sessions are now cached on the
68
+ `LLM` instance and reused across requests. Session capacity is bucketed
69
+ (floor 4 Ki tokens, configurable via `HIPENGINE_SESSION_MIN_TOKENS` and
70
+ `HIPENGINE_SESSION_BUCKET_TOKENS`) so normal chat-history growth does not
71
+ force reallocation every turn.
72
+ - Chat `stream=true` now yields token-level SSE chunks from the resident
73
+ decode loop instead of buffering the full response and wrapping it in a
74
+ single SSE frame.
75
+ - Chat completions default `max_tokens` raised from 16 to 8192 so clients
76
+ that omit the field get usable reply lengths, including verbose
77
+ chain-of-thought reasoning.
78
+
79
+ ### Fixed
80
+
81
+ - Fixed `LLM.generate()` re-resolving the generation factory on every call,
82
+ which discarded generator-local caches and caused the PARO resident
83
+ session (layer weights, KV buffers) to be allocated and freed per request.
84
+
9
85
  ## v0.2.0 - 2026-05-25
10
86
 
11
87
  Minor release for the GGUF runtime path and W7900 benchmark refresh. GGUF is a
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hipengine
3
- Version: 0.2.0
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
@@ -75,7 +75,7 @@ supported GPUs and models.
75
75
 
76
76
  ## Status
77
77
 
78
- **v0.2.0 alpha.** The runtime hot path is torch-free by construction, and the
78
+ **v0.2.1 alpha.** The runtime hot path is torch-free by construction, and the
79
79
  first two 35B-class model-loading surfaces are now available on gfx1100:
80
80
  [shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed](https://huggingface.co/shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed)
81
81
  (19.07 GiB, 4.68 bpw) in packed
@@ -336,13 +336,20 @@ Install the optional server extra and run the FastAPI layer:
336
336
  ```bash
337
337
  pip install -e ".[server]"
338
338
  python -m hipengine.server \
339
- --model /path/to/model \
339
+ --model shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed \
340
340
  --quant w4_paro \
341
341
  --served-model-name qwen-paro
342
342
  ```
343
343
 
344
- Supported v0.1 endpoints: `GET /v1/models`, `POST /v1/completions`, and
345
- `POST /v1/chat/completions` (including one-chunk SSE for `stream=true`). See
344
+ `--model` accepts either a local filesystem path or a Hugging Face model ID
345
+ already present in the local HF cache; hipEngine resolves IDs locally and does
346
+ not download weights during startup.
347
+
348
+ Supported endpoints: `GET /v1/models`, `POST /v1/completions`, and
349
+ `POST /v1/chat/completions` with token-level SSE streaming. Chat responses
350
+ separate `<think>` reasoning into `reasoning_content` (matching the OpenAI
351
+ reasoning-content convention). The server eagerly warms the model on startup
352
+ by default so the first request does not pay load/compile cost. See
346
353
  [`docs/API.md`](docs/API.md) for request examples, bearer-token auth, and
347
354
  current limitations.
348
355
 
@@ -37,7 +37,7 @@ supported GPUs and models.
37
37
 
38
38
  ## Status
39
39
 
40
- **v0.2.0 alpha.** The runtime hot path is torch-free by construction, and the
40
+ **v0.2.1 alpha.** The runtime hot path is torch-free by construction, and the
41
41
  first two 35B-class model-loading surfaces are now available on gfx1100:
42
42
  [shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed](https://huggingface.co/shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed)
43
43
  (19.07 GiB, 4.68 bpw) in packed
@@ -298,13 +298,20 @@ Install the optional server extra and run the FastAPI layer:
298
298
  ```bash
299
299
  pip install -e ".[server]"
300
300
  python -m hipengine.server \
301
- --model /path/to/model \
301
+ --model shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed \
302
302
  --quant w4_paro \
303
303
  --served-model-name qwen-paro
304
304
  ```
305
305
 
306
- Supported v0.1 endpoints: `GET /v1/models`, `POST /v1/completions`, and
307
- `POST /v1/chat/completions` (including one-chunk SSE for `stream=true`). See
306
+ `--model` accepts either a local filesystem path or a Hugging Face model ID
307
+ already present in the local HF cache; hipEngine resolves IDs locally and does
308
+ not download weights during startup.
309
+
310
+ Supported endpoints: `GET /v1/models`, `POST /v1/completions`, and
311
+ `POST /v1/chat/completions` with token-level SSE streaming. Chat responses
312
+ separate `<think>` reasoning into `reasoning_content` (matching the OpenAI
313
+ reasoning-content convention). The server eagerly warms the model on startup
314
+ by default so the first request does not pay load/compile cost. See
308
315
  [`docs/API.md`](docs/API.md) for request examples, bearer-token auth, and
309
316
  current limitations.
310
317
 
@@ -26555,3 +26555,169 @@ uv run --extra dev python -m pytest -q
26555
26555
  ```
26556
26556
 
26557
26557
  Next: commit, push `main`, move annotated tag `v0.2.0` to the fix commit, force-push the tag per user approval, and watch the publish workflow complete via trusted publishing.
26558
+
26559
+ ### v0.2.0 publish workflow result
26560
+
26561
+ Committed and pushed the HIP guard fix (`36e3516`), force-moved annotated tag `v0.2.0` to that commit per user approval, and re-pushed the tag. The `Publish to PyPI` workflow reran as `26370452261` and completed successfully: build validation passed, artifact attestation was generated, and `Publish to PyPI (trusted publishing)` succeeded. Verified published install path:
26562
+
26563
+ ```bash
26564
+ uvx --refresh --from "hipengine[server]==0.2.0" hipengine-server --help
26565
+ # downloaded hipengine 0.2.0 from PyPI and printed CLI help
26566
+ ```
26567
+
26568
+ Final release pointers: GitHub release `https://github.com/shisa-ai/hipEngine/releases/tag/v0.2.0`, publish workflow `https://github.com/shisa-ai/hipEngine/actions/runs/26370452261`, release tag commit `36e351607955158e821b51f443bac042b140624f`.
26569
+
26570
+ ## 2026-05-25 — HF cache model id resolution for server/LLM
26571
+
26572
+ Added local Hugging Face cache resolution for public model references so `hipengine-server --model` and `LLM(model=...)` can take either a filesystem path or a cached HF model id such as `shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed`. Resolution remains local-only: existing paths win, then `huggingface_hub.snapshot_download(..., local_files_only=True)` is used if available, then the standard HF cache layout is inspected directly; no weights are downloaded during startup. GGUF discovery now resolves the model reference first, so cached GGUF repos/directories work as well as direct `.gguf` file paths.
26573
+
26574
+ Also updated README/API server examples to show the HF model id form and note that cache resolution is local-only. User's `uv run --extra server ...` command is the right shape; the `--no-build` error indicates a uv no-build mode/config/environment for the local editable package, not a hipEngine server argument issue. Workaround is to unset no-build for local editable runs or use the published wheel via `uvx --from "hipengine[server]==0.2.0"`.
26575
+
26576
+ Validation:
26577
+
26578
+ ```bash
26579
+ python -m py_compile hipengine/loading/hf_cache.py hipengine/loading/safetensors.py hipengine/loading/gguf.py hipengine/llm.py
26580
+ python -m pytest -q tests/test_hf_cache.py tests/test_llm_generate.py tests/test_loading_safetensors.py tests/test_server_api.py
26581
+ # 19 passed
26582
+ uv run --extra dev python -m pytest -q
26583
+ # passed
26584
+ ```
26585
+ ## 2026-05-23 — llama.cpp wrapper metadata fix for RX 7900 XTX 5-run sweep
26586
+
26587
+ Before rerunning `benchmarks/7900XTX.md` with `--repetitions 5`, fixed `scripts/llamacpp_bench_with_peak.py` artifact metadata so it no longer hardcodes W7900 or a single-shot `--repetitions 1` note. The artifact now records the selected amdgpu card name/PCI/VRAM in `hardware` and emits a dynamic repetitions note. Validation: `python3 -m py_compile scripts/llamacpp_bench_with_peak.py`.
26588
+
26589
+ ## 2026-05-24 — server resident-session reuse smoke
26590
+
26591
+ Debugged the local OpenAI-compatible PARO server after LAN chat showed short `<think>` replies and apparent reloads. Root causes:
26592
+
26593
+ - `LLM.generate()` re-resolved the generation factory and constructed a new text generator on every call, discarding generator-local caches.
26594
+ - `Qwen35ParoOneTokenGenerator` then constructed `Qwen35ParoResidentSession` inside each prompt call and closed it immediately, so resident layer weights/KV buffers were materialized and freed per request.
26595
+ - The OpenAI chat server default `max_tokens` was 16; clients that omit `max_tokens` saw very short replies. The Qwen/PARO model config advertises `max_position_embeddings=262144`, but the runtime session capacity was allocated as `len(prompt_ids) + max_tokens + 1` per request.
26596
+ - `stream=true` only returned an SSE wrapper around the completed response; it did not yield tokens while generation was running.
26597
+
26598
+ Fixes made in-tree:
26599
+
26600
+ - Cache the resolved text generator on `hipengine.LLM` so server `app.state.hipengine_llm` keeps its backend/model/quant generator across requests.
26601
+ - Cache/reuse `Qwen35ParoResidentSession` inside the PARO generator when the existing session capacity and KV policy cover the next request; reset it between prompts instead of closing it. Session capacity now floors/buckets at 4096 tokens by default (`HIPENGINE_SESSION_MIN_TOKENS`, `HIPENGINE_SESSION_BUCKET_TOKENS`) so normal chat history growth does not force reallocation every turn.
26602
+ - Add a single-prompt streaming path using resident `step()` per token, and route chat `stream=true` through it. Chat default `max_tokens` is now 256.
26603
+
26604
+ Validation:
26605
+
26606
+ ```bash
26607
+ uv run --extra dev python -m pytest -q tests/test_llm_generate.py tests/test_generation_qwen35_paro.py tests/test_server_api.py
26608
+ # 17 passed
26609
+ ```
26610
+
26611
+ Restarted the running LAN server from the local checkout with TheRock ROCm library paths:
26612
+
26613
+ ```bash
26614
+ uv run --extra server hipengine-server --model shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed --quant w4_paro --served-model-name qwen-paro --host 0.0.0.0 --port 8000
26615
+ ```
26616
+
26617
+ Smoke evidence on the running server after restart from the local checkout: first streamed `max_tokens=4` request sent the role chunk immediately, then took 30.25s to warm/materialize and yielded token chunks (`<think>`, newline, `Here`, `'s`); VRAM reached 19.54GB. A second chat-history request reused the resident 4096-token session, yielded the first content chunk at 0.46s, completed at 0.49s, and VRAM stayed resident at 19.55GB. Server PID 9305, wrapper PID recorded in `/tmp/hipengine-server-8000.pid`, log `/tmp/hipengine-server-8000.log`.
26618
+
26619
+ ## 2026-05-24 — eager server warmup and reasoning-channel split
26620
+
26621
+ Implemented eager server warmup and OpenAI-compatible reasoning segregation for the local PARO server.
26622
+
26623
+ Changes:
26624
+
26625
+ - Added `ServerConfig.eager_load` plus CLI `--eager-load/--no-eager-load` (default on), `--eager-load-prompt`, and `--eager-load-max-tokens`. Startup now constructs `LLM` and runs a one-token warmup before uvicorn reports startup complete, so `/v1/models` is only reachable after the model/session is resident.
26626
+ - Default warmup prompt is `one two three four`; the initial `hello` default failed native prefill because Qwen35/PARO requires at least `linear_conv_kernel_dim` (4) prompt tokens.
26627
+ - Split Qwen/DeepSeek-style `<think>...</think>` spans in chat responses. Non-stream responses put visible answer text in `message.content` and hidden reasoning text in `message.reasoning_content`. Streaming responses emit `delta.reasoning_content` for reasoning chunks and `delta.content` for final answer chunks.
26628
+
26629
+ Validation:
26630
+
26631
+ ```bash
26632
+ uv run --extra dev python -m pytest -q tests/test_server_api.py tests/test_llm_generate.py tests/test_generation_qwen35_paro.py
26633
+ # 19 passed
26634
+ ```
26635
+
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.
@@ -1,6 +1,6 @@
1
1
  # OpenAI-Compatible Server API
2
2
 
3
- Last updated: 2026-05-18
3
+ Last updated: 2026-05-25
4
4
 
5
5
  hipEngine ships a thin optional FastAPI layer that adapts OpenAI-style requests
6
6
  to the torch-free `hipengine.LLM.generate()` library API. It is installed only
@@ -17,13 +17,17 @@ pip install -e ".[server]"
17
17
 
18
18
  ```bash
19
19
  python -m hipengine.server \
20
- --model /path/to/qwen-paro-model \
20
+ --model shisa-ai/Qwen3.6-35B-A3B-PARO-full4096-e5-packed \
21
21
  --quant w4_paro \
22
22
  --served-model-name qwen-paro \
23
23
  --host 127.0.0.1 \
24
24
  --port 8000
25
25
  ```
26
26
 
27
+ `--model` accepts a local filesystem path or a Hugging Face model ID that is
28
+ already present in the local HF cache. hipEngine resolves IDs with local cache
29
+ lookups only; it does not download weights during server startup.
30
+
27
31
  After installation, the console script is equivalent:
28
32
 
29
33
  ```bash
@@ -36,6 +40,25 @@ select `cpu_reference` where a CPU implementation exists; nearby targets such as
36
40
  `gfx1101`/`gfx1102` can force a backend with `--backend hip_gfx1100` or
37
41
  `HIPENGINE_BACKEND=hip_gfx1100` after local validation.
38
42
 
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
51
+ `--eager-load-max-tokens`.
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
+
39
62
  Set `HIPENGINE_API_KEY` or pass `--api-key` to require OpenAI-style bearer
40
63
  authentication:
41
64
 
@@ -50,8 +73,8 @@ curl -H 'Authorization: Bearer local-secret' http://127.0.0.1:8000/v1/models
50
73
  | --- | --- | --- |
51
74
  | `GET /health` | Built in | Unauthenticated health/model probe. |
52
75
  | `GET /v1/models` | Built in | Returns the single served model id. |
53
- | `POST /v1/completions` | Built in | Text prompt(s) to `LLM.generate()`. Supports `stream=true` as one server-sent event chunk plus `[DONE]`. |
54
- | `POST /v1/chat/completions` | Built in | Renders text-only messages to a Qwen-style prompt and calls `LLM.generate()`. Supports `stream=true` as one server-sent event chunk plus `[DONE]`. |
76
+ | `POST /v1/completions` | Built in | Text prompt(s) to `LLM.generate()`. Supports `stream=true` (one SSE chunk plus `[DONE]`). |
77
+ | `POST /v1/chat/completions` | Built in | Renders text-only messages to a Qwen-style prompt and calls `LLM.generate()`. Supports token-level `stream=true` SSE. `<think>` spans are separated into `reasoning_content` (non-streaming) or `delta.reasoning_content` chunks (streaming). |
55
78
 
56
79
  ## Examples
57
80