cann-workbench 0.0.0-stage → 0.0.2-alpha

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 (408) hide show
  1. package/README.md +183 -2
  2. package/THIRD_PARTY_NOTICES.md +85 -0
  3. package/cordis.patch.yml +3 -0
  4. package/doctor/LICENSE +202 -0
  5. package/doctor/NOTICE +12 -0
  6. package/doctor/README.md +18 -0
  7. package/lib/client.js +94437 -0
  8. package/lib/index.d.ts +722 -0
  9. package/lib/index.js +33711 -0
  10. package/locale/en.json +6 -0
  11. package/locale/zh.json +6 -0
  12. package/package.json +171 -4
  13. package/skills/asc-tools/tool-ops-tune/INSTALL.md +52 -0
  14. package/skills/asc-tools/tool-ops-tune/LICENSE +38 -0
  15. package/skills/asc-tools/tool-ops-tune/README.md +167 -0
  16. package/skills/asc-tools/tool-ops-tune/SKILL.md +93 -0
  17. package/skills/asc-tools/tool-ops-tune/agent/AGENTS.md +195 -0
  18. package/skills/asc-tools/tool-ops-tune/agent/agents/perf-implementer.md +68 -0
  19. package/skills/asc-tools/tool-ops-tune/agent/agents/perf-reviewer.md +86 -0
  20. package/skills/asc-tools/tool-ops-tune/agent/workflows/task-prompts.md +362 -0
  21. package/skills/asc-tools/tool-ops-tune/agent/workflows/troubleshooting.md +43 -0
  22. package/skills/asc-tools/tool-ops-tune/docs/figures/opstune-architecture.png +0 -0
  23. package/skills/asc-tools/tool-ops-tune/docs/figures/opstune-architecture.svg +253 -0
  24. package/skills/asc-tools/tool-ops-tune/docs/ops-tune-design.md +404 -0
  25. package/skills/asc-tools/tool-ops-tune/docs//347/224/250/344/276/213/346/236/204/345/273/272.md +730 -0
  26. package/skills/asc-tools/tool-ops-tune/docs//347/237/245/350/257/206/345/272/223/350/247/204/350/214/203.md +103 -0
  27. package/skills/asc-tools/tool-ops-tune/evals/evals.json +242 -0
  28. package/skills/asc-tools/tool-ops-tune/ops-collect/SKILL.md +146 -0
  29. package/skills/asc-tools/tool-ops-tune/ops-collect/references/tool-routing.md +86 -0
  30. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_board.sh +458 -0
  31. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_cases.py +368 -0
  32. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_sim.sh +134 -0
  33. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/csv_to_db.py +314 -0
  34. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/db_bench.py +545 -0
  35. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/facts_bridge.py +1102 -0
  36. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/isolation_test.py +452 -0
  37. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/jsonl_to_cases.py +163 -0
  38. package/skills/asc-tools/tool-ops-tune/ops-family/SKILL.md +76 -0
  39. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/advanced_tiling.md +92 -0
  40. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/broadcast_design.md +160 -0
  41. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_add_kernel.cpp +126 -0
  42. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_add_tiling.cpp +144 -0
  43. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_tiling_common.h +401 -0
  44. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/onedim_add_kernel.cpp +107 -0
  45. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/onedim_add_tiling.cpp +64 -0
  46. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/datacopypad_design.md +46 -0
  47. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/guide.md +14 -0
  48. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/nddma_design.md +53 -0
  49. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/onedim_design.md +114 -0
  50. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/ub_broadcast_design.md +67 -0
  51. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/datacopy_optimization_design.md +351 -0
  52. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/index.md +9 -0
  53. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/tail_block_design.md +268 -0
  54. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/index.md +38 -0
  55. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/timing_harness_aclrt_event.cpp +199 -0
  56. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/timing_harness_torch_event.py +130 -0
  57. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/ub_resident_design.md +342 -0
  58. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/guide.md +69 -0
  59. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/index.md +4 -0
  60. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_base.template +81 -0
  61. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_big_dim.template +217 -0
  62. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_cut_one_axis.template +336 -0
  63. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_cut_two_axis.template +781 -0
  64. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_n_last.template +340 -0
  65. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_small_shape.template +321 -0
  66. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_tensor_move.template +102 -0
  67. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_transdata_5hd.template +480 -0
  68. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_transdata_5hd_021axis.template +533 -0
  69. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_with_gather.template +688 -0
  70. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/transpose_tiling_data.template +192 -0
  71. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_big_dim.md +220 -0
  72. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_cut_one_axis.md +175 -0
  73. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_cut_two_axis.md +177 -0
  74. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_fusion_design.md +398 -0
  75. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_gather.md +191 -0
  76. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_n_last.md +276 -0
  77. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_small_shape.md +315 -0
  78. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_tensor_move.md +203 -0
  79. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_tiling_data.md +176 -0
  80. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_vconv_021.md +206 -0
  81. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_vconv_5hd.md +179 -0
  82. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/double_buffer_design.md +288 -0
  83. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/guide.md +46 -0
  84. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/index.md +10 -0
  85. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/CMakeLists.txt +131 -0
  86. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/README.md +55 -0
  87. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/add_custom_torch.cpp +80 -0
  88. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/ops.h +23 -0
  89. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/register.cpp +30 -0
  90. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_host/add_custom.asc +149 -0
  91. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_host/data_utils.h +97 -0
  92. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_kernel/add_custom_kernel.asc +136 -0
  93. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_kernel/add_custom_tiling.h +31 -0
  94. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/run.sh +87 -0
  95. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/gen_data.py +70 -0
  96. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/golden.py +34 -0
  97. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/test_torch.py +99 -0
  98. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/verify_result.py +56 -0
  99. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/usage_guide.md +61 -0
  100. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/vector_efficiency_design.md +203 -0
  101. package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/fa_mixed_kernel_design.md +174 -0
  102. package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/fa_roofline_design.md +141 -0
  103. package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/guide.md +87 -0
  104. package/skills/asc-tools/tool-ops-tune/ops-family/references/knowledge_gaps.json +56 -0
  105. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/best-practices-guide.md +14 -0
  106. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/fullload_design.md +344 -0
  107. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/guide.md +52 -0
  108. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/mte2_preload_design.md +320 -0
  109. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/pingpong_design.md +254 -0
  110. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/scale_coalescing_design.md +282 -0
  111. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/streamk_design.md +374 -0
  112. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/swat_design.md +423 -0
  113. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/templates/matmul_basic_blaze.template +165 -0
  114. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/templates/usage_guide.md +29 -0
  115. package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/best-practices-guide.md +43 -0
  116. package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/guide.md +42 -0
  117. package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/local_matmul_design.md +130 -0
  118. package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/pipeline_balancing_design.md +502 -0
  119. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/guide.md +178 -0
  120. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/kernel_utils.template +75 -0
  121. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_full_load.template +429 -0
  122. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_recompute.template +485 -0
  123. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_small_r.template +348 -0
  124. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_full_load.template +574 -0
  125. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_online.template +324 -0
  126. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_recompute.template +436 -0
  127. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_base.template +950 -0
  128. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/fused_attention_online_softmax_design.md +428 -0
  129. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_full_load.md +137 -0
  130. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_recompute.md +135 -0
  131. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_small_r.md +122 -0
  132. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_full_load.md +144 -0
  133. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_online.md +185 -0
  134. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_recompute.md +163 -0
  135. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_tiling.template +460 -0
  136. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_tiling_data.template +278 -0
  137. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/state_resident_design.md +337 -0
  138. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/usage_guide.md +253 -0
  139. package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/coding_principles.md +476 -0
  140. package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/conv_scalar.md +163 -0
  141. package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/guide.md +30 -0
  142. package/skills/asc-tools/tool-ops-tune/ops-family/references/simt/guide.md +91 -0
  143. package/skills/asc-tools/tool-ops-tune/ops-family/references/simt/optimization-guide.md +110 -0
  144. package/skills/asc-tools/tool-ops-tune/ops-family/references/sort/guide.md +83 -0
  145. package/skills/asc-tools/tool-ops-tune/ops-family/references/sort/radix_sort.md +354 -0
  146. package/skills/asc-tools/tool-ops-tune/ops-family/scripts/family_asset_audit.py +68 -0
  147. package/skills/asc-tools/tool-ops-tune/ops-family/scripts/tiling_candidates.py +419 -0
  148. package/skills/asc-tools/tool-ops-tune/ops-mechanism/SKILL.md +23 -0
  149. package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/ascendc/case_groupedmatmul_pipeline.md +23 -0
  150. package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/ascendc/case_triton_atomic_revert.md +19 -0
  151. package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/mc2/case_mc2_fusion.md +19 -0
  152. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/api-usage.md +70 -0
  153. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/ascendc-regbase-vf.md +45 -0
  154. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/ascendc-tiling.md +51 -0
  155. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/data-copy.md +67 -0
  156. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/index.md +45 -0
  157. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/mc2-balancing.md +77 -0
  158. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/mc2.md +103 -0
  159. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/memory-hierarchy.md +40 -0
  160. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/pipeline.md +95 -0
  161. package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/case_backfill.py +170 -0
  162. package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/log_gap.py +145 -0
  163. package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/mc2_search.py +367 -0
  164. package/skills/asc-tools/tool-ops-tune/ops-report/SKILL.md +77 -0
  165. package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/run_evals.py +963 -0
  166. package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/smoke/install-hooks.sh +65 -0
  167. package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/smoke/run_smoke.sh +535 -0
  168. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/core_tail_a5.csv +25 -0
  169. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/few_cores_a5.csv +5 -0
  170. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/mte2_bound_a2.csv +17 -0
  171. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/multi_kernel_mix_a5.csv +7 -0
  172. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/no_bound_a5.csv +9 -0
  173. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/serial_no_overlap_a2.csv +9 -0
  174. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/vec_bound_a5.csv +9 -0
  175. package/skills/asc-tools/tool-ops-tune/ops-verdict/references/io-contracts.md +94 -0
  176. package/skills/asc-tools/tool-ops-tune/ops-verdict/references/rule-schema.md +130 -0
  177. package/skills/asc-tools/tool-ops-tune/ops-verdict/references/scope-schema.md +61 -0
  178. package/skills/asc-tools/tool-ops-tune/ops-verdict/references/soc-spec.yaml +140 -0
  179. package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L0-instruction.yaml +67 -0
  180. package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L1-single-core.yaml +316 -0
  181. package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L2-inter-core.yaml +173 -0
  182. package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L3-inter-card.yaml +156 -0
  183. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/batch_pipeline.py +466 -0
  184. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/calibrate.py +249 -0
  185. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/delta_compare.py +278 -0
  186. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/render_html.py +304 -0
  187. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/snapshot.py +200 -0
  188. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/trace_bubble.py +331 -0
  189. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/verdict.py +1094 -0
  190. package/skills/asc-tools/tool-ops-tune/scripts/diff_audit.py +281 -0
  191. package/skills/asc-tools/tool-precision-debug/LICENSE +38 -0
  192. package/skills/asc-tools/tool-precision-debug/README.md +190 -0
  193. package/skills/asc-tools/tool-precision-debug/scripts/install.sh +475 -0
  194. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/LICENSE +38 -0
  195. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/SKILL.md +136 -0
  196. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/evals/evals.json +932 -0
  197. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/baseline.md +69 -0
  198. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/checkpoint-design.md +82 -0
  199. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/dumptensor.md +83 -0
  200. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/hypothesis-experiment.md +114 -0
  201. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/index.md +20 -0
  202. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/localization.md +85 -0
  203. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/numerical-modeling.md +94 -0
  204. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/operator-modeling.md +116 -0
  205. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/progressive-error-analysis.md +86 -0
  206. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/reporting.md +140 -0
  207. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/reproducibility.md +121 -0
  208. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/semantic-bisection.md +72 -0
  209. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/sensitive-points.md +146 -0
  210. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/fp16-promotion-boundary.md +46 -0
  211. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/fused-rmsnorm-gelu-residual.md +162 -0
  212. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/index.md +16 -0
  213. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/integer-float-collision.md +44 -0
  214. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/partial-statistics-merge.md +30 -0
  215. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/softplus-v2-grad-family.md +156 -0
  216. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/sync-dataflow-handshake.md +89 -0
  217. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/tail-valid-region-state.md +30 -0
  218. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/thnn-fused-gru-bias-reduction.md +73 -0
  219. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/index.md +34 -0
  220. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/accumulation-order.md +108 -0
  221. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/algorithm-parameter-contract.md +118 -0
  222. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/buffer-lifetime-alias.md +133 -0
  223. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/cast-rounding.md +76 -0
  224. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/complex-operator-boundary.md +48 -0
  225. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/data-movement-alignment.md +104 -0
  226. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/golden-host-contract.md +84 -0
  227. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/index-address-ownership.md +57 -0
  228. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/index.md +32 -0
  229. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/multicore-ownership.md +117 -0
  230. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/pipeline-sync-visibility.md +146 -0
  231. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/precision-mode-approximation.md +90 -0
  232. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/shape-boundary-contract.md +57 -0
  233. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/special-values.md +122 -0
  234. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/tiling-tail-state.md +146 -0
  235. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/broadcast-transpose.md +64 -0
  236. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/convolution.md +60 -0
  237. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/dynamic-quant.md +47 -0
  238. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/index.md +18 -0
  239. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/matmul-mmad.md +131 -0
  240. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/normalization.md +145 -0
  241. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/reduction.md +167 -0
  242. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/softplus-v2-grad.md +58 -0
  243. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/sort-merge.md +65 -0
  244. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/index.md +18 -0
  245. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/kernel-debug-data.md +133 -0
  246. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/msobjdump.md +150 -0
  247. package/skills/cann-doctor/SKILL.md +15 -0
  248. package/skills/catalog.json +79 -0
  249. package/skills/mattpocock/GLOSSARY.md +30 -0
  250. package/skills/mattpocock/LICENSE +21 -0
  251. package/skills/mattpocock/README.md +258 -0
  252. package/skills/mattpocock/SCOPE.md +35 -0
  253. package/skills/mattpocock/docs/agents/triage-labels.md +15 -0
  254. package/skills/mattpocock/docs/engineering/ask-matt.md +91 -0
  255. package/skills/mattpocock/docs/engineering/code-review.md +101 -0
  256. package/skills/mattpocock/docs/engineering/codebase-design.md +88 -0
  257. package/skills/mattpocock/docs/engineering/diagnosing-bugs.md +94 -0
  258. package/skills/mattpocock/docs/engineering/domain-modeling.md +86 -0
  259. package/skills/mattpocock/docs/engineering/grill-with-docs.md +82 -0
  260. package/skills/mattpocock/docs/engineering/implement-spec.md +86 -0
  261. package/skills/mattpocock/docs/engineering/implement.md +97 -0
  262. package/skills/mattpocock/docs/engineering/improve-codebase-architecture.md +113 -0
  263. package/skills/mattpocock/docs/engineering/pr.md +79 -0
  264. package/skills/mattpocock/docs/engineering/prototype.md +67 -0
  265. package/skills/mattpocock/docs/engineering/research.md +73 -0
  266. package/skills/mattpocock/docs/engineering/resolving-merge-conflicts.md +53 -0
  267. package/skills/mattpocock/docs/engineering/retro.md +81 -0
  268. package/skills/mattpocock/docs/engineering/setup-matt-pocock-skills.md +94 -0
  269. package/skills/mattpocock/docs/engineering/tdd.md +94 -0
  270. package/skills/mattpocock/docs/engineering/to-spec.md +81 -0
  271. package/skills/mattpocock/docs/engineering/to-tickets.md +99 -0
  272. package/skills/mattpocock/docs/engineering/triage.md +109 -0
  273. package/skills/mattpocock/docs/engineering/wayfinder.md +103 -0
  274. package/skills/mattpocock/docs/engineering/wizard.md +96 -0
  275. package/skills/mattpocock/docs/productivity/grill-me.md +76 -0
  276. package/skills/mattpocock/docs/productivity/grilling.md +87 -0
  277. package/skills/mattpocock/docs/productivity/handoff.md +76 -0
  278. package/skills/mattpocock/docs/productivity/teach.md +97 -0
  279. package/skills/mattpocock/docs/productivity/to-questionnaire.md +78 -0
  280. package/skills/mattpocock/docs/productivity/wait-what.md +36 -0
  281. package/skills/mattpocock/docs/productivity/writing-for-agents.md +70 -0
  282. package/skills/mattpocock/scripts/link-skills.sh +62 -0
  283. package/skills/mattpocock/scripts/list-skills.sh +7 -0
  284. package/skills/mattpocock/scripts/sync-plugin-version.mjs +41 -0
  285. package/skills/mattpocock/skills/deprecated/README.md +3 -0
  286. package/skills/mattpocock/skills/engineering/README.md +34 -0
  287. package/skills/mattpocock/skills/engineering/ask-matt/PHASE-BOUNDARIES.md +55 -0
  288. package/skills/mattpocock/skills/engineering/ask-matt/SKILL.md +97 -0
  289. package/skills/mattpocock/skills/engineering/ask-matt/agents/openai.yaml +5 -0
  290. package/skills/mattpocock/skills/engineering/code-review/SKILL.md +89 -0
  291. package/skills/mattpocock/skills/engineering/code-review/agents/openai.yaml +3 -0
  292. package/skills/mattpocock/skills/engineering/codebase-design/DEEPENING.md +37 -0
  293. package/skills/mattpocock/skills/engineering/codebase-design/DESIGN-IT-TWICE.md +44 -0
  294. package/skills/mattpocock/skills/engineering/codebase-design/SKILL.md +114 -0
  295. package/skills/mattpocock/skills/engineering/codebase-design/agents/openai.yaml +3 -0
  296. package/skills/mattpocock/skills/engineering/diagnosing-bugs/SKILL.md +138 -0
  297. package/skills/mattpocock/skills/engineering/diagnosing-bugs/agents/openai.yaml +3 -0
  298. package/skills/mattpocock/skills/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  299. package/skills/mattpocock/skills/engineering/domain-modeling/ADR-FORMAT.md +47 -0
  300. package/skills/mattpocock/skills/engineering/domain-modeling/GLOSSARY-FORMAT.md +60 -0
  301. package/skills/mattpocock/skills/engineering/domain-modeling/SKILL.md +74 -0
  302. package/skills/mattpocock/skills/engineering/domain-modeling/agents/openai.yaml +3 -0
  303. package/skills/mattpocock/skills/engineering/grill-with-docs/SKILL.md +7 -0
  304. package/skills/mattpocock/skills/engineering/grill-with-docs/agents/openai.yaml +5 -0
  305. package/skills/mattpocock/skills/engineering/implement/SKILL.md +17 -0
  306. package/skills/mattpocock/skills/engineering/implement/agents/openai.yaml +5 -0
  307. package/skills/mattpocock/skills/engineering/implement-spec/SKILL.md +42 -0
  308. package/skills/mattpocock/skills/engineering/implement-spec/agents/openai.yaml +5 -0
  309. package/skills/mattpocock/skills/engineering/improve-codebase-architecture/HTML-REPORT.md +123 -0
  310. package/skills/mattpocock/skills/engineering/improve-codebase-architecture/SKILL.md +71 -0
  311. package/skills/mattpocock/skills/engineering/improve-codebase-architecture/agents/openai.yaml +5 -0
  312. package/skills/mattpocock/skills/engineering/pr/CREDITS.md +3 -0
  313. package/skills/mattpocock/skills/engineering/pr/SKILL.md +170 -0
  314. package/skills/mattpocock/skills/engineering/pr/agents/openai.yaml +3 -0
  315. package/skills/mattpocock/skills/engineering/prototype/LOGIC.md +67 -0
  316. package/skills/mattpocock/skills/engineering/prototype/SKILL.md +26 -0
  317. package/skills/mattpocock/skills/engineering/prototype/UI.md +112 -0
  318. package/skills/mattpocock/skills/engineering/prototype/agents/openai.yaml +3 -0
  319. package/skills/mattpocock/skills/engineering/research/SKILL.md +12 -0
  320. package/skills/mattpocock/skills/engineering/research/agents/openai.yaml +3 -0
  321. package/skills/mattpocock/skills/engineering/retro/SKILL.md +44 -0
  322. package/skills/mattpocock/skills/engineering/retro/agents/openai.yaml +5 -0
  323. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/SKILL.md +120 -0
  324. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  325. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/domain.md +51 -0
  326. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +50 -0
  327. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  328. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  329. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
  330. package/skills/mattpocock/skills/engineering/tdd/SKILL.md +38 -0
  331. package/skills/mattpocock/skills/engineering/tdd/agents/openai.yaml +3 -0
  332. package/skills/mattpocock/skills/engineering/tdd/mocking.md +59 -0
  333. package/skills/mattpocock/skills/engineering/tdd/tests.md +77 -0
  334. package/skills/mattpocock/skills/engineering/to-spec/SKILL.md +75 -0
  335. package/skills/mattpocock/skills/engineering/to-spec/agents/openai.yaml +5 -0
  336. package/skills/mattpocock/skills/engineering/to-tickets/SKILL.md +105 -0
  337. package/skills/mattpocock/skills/engineering/to-tickets/agents/openai.yaml +5 -0
  338. package/skills/mattpocock/skills/engineering/triage/AGENT-BRIEF.md +207 -0
  339. package/skills/mattpocock/skills/engineering/triage/OUT-OF-SCOPE.md +105 -0
  340. package/skills/mattpocock/skills/engineering/triage/SKILL.md +112 -0
  341. package/skills/mattpocock/skills/engineering/triage/agents/openai.yaml +5 -0
  342. package/skills/mattpocock/skills/engineering/wayfinder/SKILL.md +128 -0
  343. package/skills/mattpocock/skills/engineering/wayfinder/agents/openai.yaml +5 -0
  344. package/skills/mattpocock/skills/engineering/wizard/SKILL.md +44 -0
  345. package/skills/mattpocock/skills/engineering/wizard/agents/openai.yaml +3 -0
  346. package/skills/mattpocock/skills/engineering/wizard/template.sh +223 -0
  347. package/skills/mattpocock/skills/in-progress/README.md +17 -0
  348. package/skills/mattpocock/skills/in-progress/chief-of-staff/SKILL.md +75 -0
  349. package/skills/mattpocock/skills/in-progress/chief-of-staff/agents/openai.yaml +5 -0
  350. package/skills/mattpocock/skills/in-progress/claude-handoff/SKILL.md +18 -0
  351. package/skills/mattpocock/skills/in-progress/claude-handoff/agents/openai.yaml +5 -0
  352. package/skills/mattpocock/skills/in-progress/loop-me/SKILL.md +32 -0
  353. package/skills/mattpocock/skills/in-progress/loop-me/agents/openai.yaml +5 -0
  354. package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/SKILL.md +102 -0
  355. package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/agents/openai.yaml +5 -0
  356. package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/dependency-cruiser.config.cjs +95 -0
  357. package/skills/mattpocock/skills/in-progress/software-factory/EXAMPLE-TASKS.md +80 -0
  358. package/skills/mattpocock/skills/in-progress/software-factory/GIT-HOSTS.md +84 -0
  359. package/skills/mattpocock/skills/in-progress/software-factory/OBSERVABILITY-PLATFORMS.md +75 -0
  360. package/skills/mattpocock/skills/in-progress/software-factory/RUNNERS.md +94 -0
  361. package/skills/mattpocock/skills/in-progress/software-factory/SKILL.md +98 -0
  362. package/skills/mattpocock/skills/in-progress/software-factory/TICKET-TRACKERS.md +85 -0
  363. package/skills/mattpocock/skills/in-progress/writing-beats/SKILL.md +67 -0
  364. package/skills/mattpocock/skills/in-progress/writing-beats/agents/openai.yaml +5 -0
  365. package/skills/mattpocock/skills/in-progress/writing-fragments/SKILL.md +79 -0
  366. package/skills/mattpocock/skills/in-progress/writing-fragments/agents/openai.yaml +5 -0
  367. package/skills/mattpocock/skills/in-progress/writing-shape/SKILL.md +79 -0
  368. package/skills/mattpocock/skills/in-progress/writing-shape/agents/openai.yaml +5 -0
  369. package/skills/mattpocock/skills/misc/README.md +8 -0
  370. package/skills/mattpocock/skills/misc/git-guardrails-claude-code/SKILL.md +95 -0
  371. package/skills/mattpocock/skills/misc/git-guardrails-claude-code/agents/openai.yaml +3 -0
  372. package/skills/mattpocock/skills/misc/git-guardrails-claude-code/scripts/block-dangerous-git.sh +25 -0
  373. package/skills/mattpocock/skills/misc/migrate-to-shoehorn/SKILL.md +118 -0
  374. package/skills/mattpocock/skills/misc/migrate-to-shoehorn/agents/openai.yaml +3 -0
  375. package/skills/mattpocock/skills/misc/scaffold-exercises/SKILL.md +106 -0
  376. package/skills/mattpocock/skills/misc/scaffold-exercises/agents/openai.yaml +3 -0
  377. package/skills/mattpocock/skills/misc/setup-pre-commit/SKILL.md +91 -0
  378. package/skills/mattpocock/skills/misc/setup-pre-commit/agents/openai.yaml +3 -0
  379. package/skills/mattpocock/skills/productivity/README.md +20 -0
  380. package/skills/mattpocock/skills/productivity/grill-me/SKILL.md +7 -0
  381. package/skills/mattpocock/skills/productivity/grill-me/agents/openai.yaml +5 -0
  382. package/skills/mattpocock/skills/productivity/grilling/SKILL.md +30 -0
  383. package/skills/mattpocock/skills/productivity/grilling/agents/openai.yaml +3 -0
  384. package/skills/mattpocock/skills/productivity/handoff/SKILL.md +16 -0
  385. package/skills/mattpocock/skills/productivity/handoff/agents/openai.yaml +5 -0
  386. package/skills/mattpocock/skills/productivity/teach/GLOSSARY-FORMAT.md +35 -0
  387. package/skills/mattpocock/skills/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
  388. package/skills/mattpocock/skills/productivity/teach/MISSION-FORMAT.md +31 -0
  389. package/skills/mattpocock/skills/productivity/teach/RESOURCES-FORMAT.md +32 -0
  390. package/skills/mattpocock/skills/productivity/teach/SKILL.md +140 -0
  391. package/skills/mattpocock/skills/productivity/teach/agents/openai.yaml +5 -0
  392. package/skills/mattpocock/skills/productivity/to-questionnaire/SKILL.md +54 -0
  393. package/skills/mattpocock/skills/productivity/to-questionnaire/agents/openai.yaml +5 -0
  394. package/skills/mattpocock/skills/productivity/wait-what/SKILL.md +7 -0
  395. package/skills/mattpocock/skills/productivity/wait-what/agents/openai.yaml +5 -0
  396. package/skills/mattpocock/skills/productivity/writing-for-agents/SKILL-MECHANICS.md +22 -0
  397. package/skills/mattpocock/skills/productivity/writing-for-agents/SKILL.md +81 -0
  398. package/skills/mattpocock/skills/productivity/writing-for-agents/agents/openai.yaml +3 -0
  399. package/skills/task-agents/operator-development/Agent.md +71 -0
  400. package/skills/task-agents/operator-development/skills.json +120 -0
  401. package/skills/task-agents/operator-development/stages.schema.json +532 -0
  402. package/skills/task-agents/performance-optimization/Agent.md +78 -0
  403. package/skills/task-agents/performance-optimization/skills.json +64 -0
  404. package/skills/task-agents/response-protocol.md +35 -0
  405. package/skills/task-agents/sidebar-contracts.schema.json +4168 -0
  406. package/skills/task-agents/sidebar-selection.schema.json +971 -0
  407. package/skills/task-agents/visuals/components.json +283 -0
  408. package/skills/task-agents/visuals/contracts.schema.json +3628 -0
@@ -0,0 +1,99 @@
1
+ # ----------------------------------------------------------------------------------------------------------
2
+ # Copyright (c) 2026 Huawei Technologies Co., Ltd.
3
+ # This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4
+ # CANN Open Software License Agreement Version 2.0 (the "License").
5
+ # Please refer to the License for details. You may not use this file except in compliance with the License.
6
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7
+ # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE in the root of the software repository for the full text of the License.
9
+ # ----------------------------------------------------------------------------------------------------------
10
+
11
+ # ============================================================================
12
+ # PyTorch 通路测试脚本
13
+ # ============================================================================
14
+ #
15
+ # [MODIFY] 创建新算子时修改:
16
+ # 1. SO_NAME: .so 文件名(需与 CMakeLists.txt 中的 target 名一致)
17
+ # 2. OP_NAME: 算子名称(需与 register.cpp 中的注册名一致)
18
+ # 3. compute_golden(): 替换为你的算子的正确计算逻辑
19
+ # 4. 测试用例: 根据算子语义调整输入和预期输出
20
+ # ============================================================================
21
+
22
+ import sys
23
+ import os
24
+
25
+ import torch
26
+
27
+ from golden import compute_golden
28
+
29
+ # [MODIFY] 算子配置
30
+ # .so 库名与算子名由环境变量提供(OP_SO_NAME / OP_NAME),未设置时 fail loud
31
+ # ——避免硬编码文件名;OP_SO_NAME 需与 CMakeLists.txt target 一致,
32
+ # OP_NAME 需与 register.cpp 注册名一致
33
+ SO_NAME = os.environ.get("OP_SO_NAME")
34
+ OP_NAME = os.environ.get("OP_NAME")
35
+ if not SO_NAME or not OP_NAME:
36
+ print(
37
+ "ERROR: 请设置环境变量 OP_SO_NAME(.so 库名,与 CMakeLists.txt target 一致)"
38
+ "与 OP_NAME(算子注册名,与 register.cpp 一致)",
39
+ file=sys.stderr,
40
+ )
41
+ sys.exit(1)
42
+ DTYPE = torch.float32 # 数据类型
43
+ ATOL = 1e-6 # 绝对容差
44
+ RTOL = 1e-6 # 相对容差
45
+
46
+
47
+ def run_test(name, x1, x2):
48
+ """运行单个测试用例,返回 (name, passed, max_diff)"""
49
+ op_fn = getattr(torch.ops.npu, OP_NAME)
50
+ y = op_fn(x1.npu(), x2.npu())
51
+ golden = compute_golden(x1, x2).npu()
52
+ max_diff = torch.max(torch.abs(y - golden)).item()
53
+ passed = torch.allclose(y.cpu(), golden.cpu(), atol=ATOL, rtol=RTOL)
54
+ return name, passed, max_diff
55
+
56
+
57
+ def main():
58
+ # 加载算子库
59
+ so_path = os.path.join("build", SO_NAME)
60
+ if not os.path.exists(so_path):
61
+ print(f"ERROR: {so_path} not found. Run 'cmake .. && make' first.")
62
+ sys.exit(1)
63
+ torch.ops.load_library(so_path)
64
+
65
+ # [MODIFY] 测试用例(编号需与 PLAN.md §3.3 的 T*/P* 对齐)
66
+ results = []
67
+
68
+ # P1: 随机数据
69
+ x1 = torch.randn(8, 16, dtype=DTYPE)
70
+ x2 = torch.randn(8, 16, dtype=DTYPE)
71
+ results.append(run_test("P1 random", x1, x2))
72
+
73
+ # P2: 零值
74
+ x1 = torch.zeros(8, 16, dtype=DTYPE)
75
+ x2 = torch.zeros(8, 16, dtype=DTYPE)
76
+ results.append(run_test("P2 zeros", x1, x2))
77
+
78
+ # P3: 正负混合
79
+ x1 = torch.randn(8, 16, dtype=DTYPE)
80
+ x2 = -x1
81
+ results.append(run_test("P3 pos_neg", x1, x2))
82
+
83
+ # 汇总
84
+ total = len(results)
85
+ passed = sum(r[1] for r in results)
86
+ failed = total - passed
87
+ print(f"\n{'=' * 50}")
88
+ print(f"PyTorch test results ({OP_NAME})")
89
+ print(f"{'=' * 50}")
90
+ for name, ok, diff in results:
91
+ print(f" {name}: {'PASSED' if ok else 'FAILED'} (Max diff={diff})")
92
+ print(f"{'=' * 50}")
93
+ print(f"Total: {total}, Passed: {passed}, Failed: {failed}")
94
+ print(f"Status: {'PASSED' if failed == 0 else 'FAILED'}")
95
+ sys.exit(0 if failed == 0 else 1)
96
+
97
+
98
+ if __name__ == "__main__":
99
+ main()
@@ -0,0 +1,56 @@
1
+ # ----------------------------------------------------------------------------------------------------------
2
+ # Copyright (c) 2026 Huawei Technologies Co., Ltd.
3
+ # This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4
+ # CANN Open Software License Agreement Version 2.0 (the "License").
5
+ # Please refer to the License for details. You may not use this file except in compliance with the License.
6
+ # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7
+ # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE in the root of the software repository for the full text of the License.
9
+ # ----------------------------------------------------------------------------------------------------------
10
+
11
+ # ============================================================================
12
+ # 结果验证脚本
13
+ # ============================================================================
14
+ #
15
+ # [MODIFY] 创建新算子时修改:
16
+ # 1. dtype: 数据类型(需与 gen_data.py 和 add.asc 保持一致)
17
+ # 2. rtol/atol: 容差参数(根据算子精度要求调整)
18
+ # ============================================================================
19
+
20
+ import numpy as np
21
+ import sys
22
+
23
+ # [MODIFY] 验证参数
24
+ dtype = np.float32 # 数据类型,需与 gen_data.py 和 add.asc 保持一致
25
+ rtol = 1e-5 # 相对容差
26
+ atol = 1e-8 # 绝对容差
27
+
28
+
29
+ def verify_result(output_path, golden_path):
30
+ output = np.fromfile(output_path, dtype=dtype)
31
+ golden = np.fromfile(golden_path, dtype=dtype)
32
+
33
+ if output.shape != golden.shape:
34
+ print(f"Shape mismatch: output {output.shape} vs golden {golden.shape}")
35
+ return False
36
+
37
+ if np.allclose(output, golden, rtol=rtol, atol=atol):
38
+ print(f"Verification PASSED! Shape: {output.shape}")
39
+ print(f"Max diff: {np.max(np.abs(output - golden))}")
40
+ return True
41
+ else:
42
+ diff = np.abs(output - golden)
43
+ print("Verification FAILED!")
44
+ print(f"Max diff: {np.max(diff)}, Mean diff: {np.mean(diff)}")
45
+ mismatches = np.where(diff > atol + rtol * np.abs(golden))[0]
46
+ print(f"Mismatch count: {len(mismatches)} / {len(golden)}")
47
+ return False
48
+
49
+
50
+ if __name__ == "__main__":
51
+ if len(sys.argv) < 3:
52
+ print("Usage: python verify_result.py <output.bin> <golden.bin>")
53
+ sys.exit(1)
54
+
55
+ success = verify_result(sys.argv[1], sys.argv[2])
56
+ sys.exit(0 if success else 1)
@@ -0,0 +1,61 @@
1
+ # Elementwise 模板使用指南(usage_guide)——add_custom 可裁剪工程模板
2
+
3
+ > `templates/add_custom/` 的转换与适配说明。模板拷贝纪律(SKILL.md T1-T5)
4
+ > 同样适用:**直接拷贝 + 只改 `[MODIFY]` 点**。
5
+
6
+ ## 模板来源与验证状态
7
+
8
+ 源自 Ascend C Kernel 直调工程模板(Vector 样例工程)
9
+ (经真机验证的 Vector 样例工程:双缓冲 TQue + DataCopyPad 尾块处理 +
10
+ 多核均分 + 尾核特化 + torch 扩展双通路)。与本仓真机 E2E 走查同款工程形态
11
+ (square_add@910B3)。
12
+
13
+ ## 目录结构
14
+
15
+ ```
16
+ add_custom/
17
+ ├── op_kernel/
18
+ │ ├── add_custom_tiling.h Tiling 常量 + 结构体(kernel 和 host 共用)
19
+ │ └── add_custom_kernel.asc 纯 kernel(KernelAdd 类 + 核函数入口,[MODIFY] 标记)
20
+ ├── op_host/
21
+ │ ├── add_custom.asc Host + main 入口(直调通路)
22
+ │ └── data_utils.h 数据读写工具
23
+ ├── op_extension/
24
+ │ ├── add_custom_torch.cpp PyTorch host 实现(Tiling 计算 + launch)
25
+ │ ├── register.cpp TORCH_LIBRARY 注册
26
+ │ └── ops.h 函数声明
27
+ ├── CMakeLists.txt 双 target:可执行文件 + libadd_custom_ops.so
28
+ └── scripts/ gen_data / golden / verify / test_torch
29
+ ```
30
+
31
+ ## 转换步骤
32
+
33
+ 1. 整目录拷贝入工程,改名为 `<your_op>`;
34
+ 2. 只改 `[MODIFY]` 标记点(kernel 头注释列了 5 处:include 名 / 类名 / 核函数名 /
35
+ 计算逻辑(`AscendC::Add` → 你的算子)/ 输入输出数量);
36
+ 3. **计时结构不许改**:`InitBuffer(que, DOUBLE_BUFFER, TILE_LENGTH * sizeof(T))`
37
+ 的双缓冲、`CopyIn/Compute/CopyOut` 三段循环、尾块 `DataCopyPad` 处理——
38
+ 改了口径,前后对比失效(timing_harness 同款纪律);
39
+ 4. TILE_LENGTH 按 tiling 候选调整:
40
+ `python3 ops-family/scripts/tiling_candidates.py --family elementwise
41
+ --shape SHAPE --dtype DTYPE --soc SOC`(容量预算校验内置,SHAPE/DTYPE/SOC
42
+ 为实际值占位)。
43
+
44
+ ## 已内置的正确结构(不要自己重造)
45
+
46
+ | 结构 | 位置 | 说明 |
47
+ |------|------|------|
48
+ | 多核均分 + 尾核特化 | Init 的 blockIdx 分支 | 非尾核 numPerCore / 尾核 tailNumLastCore |
49
+ | 双缓冲流水 | InitBuffer DOUBLE_BUFFER | L1_SERIAL_NO_OVERLAP 的机制基线 |
50
+ | 尾块对齐 | DataCopyPad + tailTileElementNum | 非 32 对齐 shape 不崩 |
51
+ | 精度验证链 | scripts/{gen_data,golden,verify_result} | 工程现有容差(禁止自创) |
52
+ | torch 双通路 | op_extension/ | torch.ops.npu 调用 + 与直调结果对拍 |
53
+
54
+ ## 性能调优挂钩(本仓链路)
55
+
56
+ - 计时:无自带 benchmark 时拷
57
+ `ops-family/references/common/timing_harness/`(测量设施非优化变量);
58
+ - 判定:采集后 facts_bridge → verdict(MTE2/VEC/SCALAR 命中 → 见族 guide
59
+ [guide.md](../guide.md) 路由表);
60
+ - tiling 候选:tiling_candidates.py(elementwise 族四约束内置:
61
+ 多核 512 元素对齐 / UB 256B 对齐 / 每核 ≥4KB / fp32 中间精度分支)。
@@ -0,0 +1,203 @@
1
+ # Vector 计算效率优化设计
2
+
3
+ ## 1. 优化目标
4
+
5
+ 在纯 Vector 或 Vector 主导的算子中,性能瓶颈常来自三类 UB 内部效率损失:Scalar 侧为每个 Vector API 手动计算 repeat/mask,归约场景反复使用高延迟 reduce 指令,以及连续 Vector 计算链把中间结果写回 GM 后再读回 UB。本优化通过 Counter 模式减少控制指令、低延迟指令组合替代单一高延迟归约路径、UB 内数据直通消费,**减少 Scalar 开销、Vector 指令延迟和 GM 往返搬运**。
6
+
7
+ | 指标 | naive | optimized | 收益 |
8
+ |------|-------|-----------|------|
9
+ | Scalar 控制指令 | 每条 Vector API 前手动计算 repeat/mask | Counter 模式一次设置,全程自动 | Scalar 开销降低 30-50% |
10
+ | GM 搬运次数(n 步 Vector 链) | 2n 次(每步搬入+搬出) | 2 次(首次搬入 + 最终搬出) | 搬运次数减少 n 倍 |
11
+ | 归约指令延迟 | WholeReduceSum 单条高延迟 | BlockReduceSum + WholeReduceSum 组合 | 延迟降低 20-40% |
12
+ | 指令级并行 | 循环体串行执行 | 循环展开暴露并行性 | ILP 提升 |
13
+
14
+
15
+ ## 2. 架构概览
16
+
17
+ ### 2.1 三类优化在 Vector PIPE 中的位置
18
+
19
+ 三类优化均作用于单核 UB 内的 Vector 执行路径:
20
+
21
+ - **Counter 模式(入口)**:`SetMaskCount(dataSize)` 后一次 Vector API 调用覆盖全部数据,避免手动计算 `repeatTimes` 和 `tailSize`。
22
+ - **UB 融合链(中间)**:通过 `VECCALC` 队列将多步 Vector 计算的中间结果保留在 UB 内,不落地 GM,减少 `2n → 2` 次搬运。
23
+ - **低延迟归约(出口)**:用 `BlockReduceSum + WholeReduceSum` 组合替代单一高延迟归约路径。
24
+
25
+ ### 2.2 数据流对比
26
+
27
+ | 模式 | 数据流 | GM 搬运次数 |
28
+ |------|--------|------------|
29
+ | naive(反例) | 每步 Vector 后将中间结果搬出 GM,下一步再搬入 | `2n` 次 |
30
+ | optimized(正例) | 首次搬入 UB(VECCALC),中间结果链式消费,最终一次搬出 | `2` 次 |
31
+
32
+ ## 3. 关键参数配置
33
+
34
+ ```cpp
35
+ // Counter 模式参数
36
+ struct CounterModeConfig {
37
+ uint32_t totalElements; // 总元素数,直接传给 SetMaskCount
38
+ uint32_t oneRepeatSize; // 单次 repeat 处理元素数(如 128/256)
39
+ };
40
+
41
+ // UB 融合链参数
42
+ struct FusedChainConfig {
43
+ uint32_t chainLength; // Vector 计算链长度(如 3:Exp→Abs→Mul)
44
+ uint32_t veccalcBufferSize; // VECCALC buffer 大小(元素数)
45
+ };
46
+
47
+ // 低延迟归约参数
48
+ struct LowLatencyReduceConfig {
49
+ uint32_t blockSize; // BlockReduceSum 的块大小(如 64/128)
50
+ uint32_t numBlocks; // 总块数 = totalElements / blockSize
51
+ };
52
+ ```
53
+
54
+ ### 3.1 参数选取原则
55
+
56
+ | 参数 | 典型值 | 说明 |
57
+ |------|--------|------|
58
+ | `oneRepeatSize` | 128 (FP16) / 64 (FP32) | 与 Vector Unit 宽度对齐 |
59
+ | `chainLength` | 2-5 | 受限于 UB 容量,过长会挤占双缓冲空间 |
60
+ | `blockSize` | 64 / 128 | BlockReduceSum 的有效块大小 |
61
+
62
+ ## 4. 核心计算循环
63
+
64
+ ### 4.1 naive 版本(优化前)
65
+
66
+ **Counter 反例 — 手动 repeat/mask:**
67
+ ```cpp
68
+ // 每条 Vector API 前手动计算 repeat 和 tail
69
+ uint32_t repeatTimes = dataSize / ONE_REPEAT_SIZE;
70
+ uint32_t tailSize = dataSize % ONE_REPEAT_SIZE;
71
+
72
+ // 主块
73
+ Add(dst, src1, src2, FULL_MASK, repeatTimes, {1, 1, 1, 8, 8, 8});
74
+
75
+ // 尾块(需要额外一次 API 调用 + mask 设置)
76
+ if (tailSize > 0) {
77
+ SetVectorMask(tailMask);
78
+ Add(dst + offset, src1 + offset, src2 + offset, tailMask, 1, {1, 1, 1, 8, 8, 8});
79
+ }
80
+ ```
81
+
82
+ **UB 融合反例 — 每步搬出 GM:**
83
+ ```cpp
84
+ void Process() {
85
+ // Step 1: Exp
86
+ CopyIn(); // GM → UB
87
+ Compute_Exp(); // UB → UB
88
+ CopyOut(); // UB → GM
89
+
90
+ // Step 2: Abs
91
+ CopyIn1(); // GM → UB
92
+ Compute_Abs(); // UB → UB
93
+ CopyOut1(); // UB → GM
94
+ }
95
+ ```
96
+
97
+ **归约反例 — 单一 WholeReduceSum:**
98
+ ```cpp
99
+ // 高延迟单条指令
100
+ float sum = WholeReduceSum(src, dataSize); // 延迟高,大数据量时明显
101
+ ```
102
+
103
+ ### 4.2 optimized 版本(优化后)
104
+
105
+ **Counter 模式 — 一次调用覆盖全部:**
106
+ ```cpp
107
+ // Counter 模式:SetMaskCount 后一次 API 调用
108
+ SetMaskCount(dataSize);
109
+ Add(dst, src1, src2, dataSize); // 自动处理主块+尾块,无需手动 mask
110
+ SetMaskMode(NORMAL); // 完成后恢复 mask 模式
111
+ ```
112
+
113
+ **UB 融合链 — 中间结果不落地 GM:**
114
+ ```cpp
115
+ // 定义 VECCALC 队列用于中间结果
116
+ TQue<QuePosition::VECCALC, 1> midQueue;
117
+ pipe.InitBuffer(midQueue, 1, dataSize * sizeof(T));
118
+
119
+ // 仅首次搬入、最终搬出
120
+ CopyIn(inLocal, inGm, dataSize); // GM → UB(VECCALC)
121
+
122
+ // 链式计算,中间结果保留 UB
123
+ LocalTensor<T> mid1 = midQueue.AllocTensor<T>();
124
+ Exp(mid1, inLocal, dataSize); // Exp
125
+
126
+ LocalTensor<T> mid2 = midQueue.AllocTensor<T>();
127
+ Abs(mid2, mid1, dataSize); // Abs
128
+
129
+ LocalTensor<T> outLocal = outQueue.AllocTensor<T>();
130
+ Mul(outLocal, mid2, scale, dataSize); // Mul
131
+
132
+ CopyOut(outGm, outLocal, dataSize); // UB → GM
133
+ ```
134
+
135
+ **低延迟归约 — BlockReduceSum + WholeReduceSum 组合:**
136
+ ```cpp
137
+ // 两阶段归约:先 BlockReduceSum 分块,再 WholeReduceSum 汇总
138
+ // 阶段 1:BlockReduceSum,每 blockSize 个元素产生一个部分和
139
+ for (uint32_t i = 0; i < numBlocks; i++) {
140
+ blockSums[i] = BlockReduceSum(src + i * blockSize, blockSize);
141
+ }
142
+ PipeBarrier<PIPE_V>();
143
+
144
+ // 阶段 2:WholeReduceSum 汇总部分和
145
+ float totalSum = WholeReduceSum(blockSums, numBlocks);
146
+ ```
147
+
148
+ ## 5. 从 naive 到 vector_efficiency 的关键修改点
149
+
150
+ | 修改项 | naive(优化前) | vector_efficiency(优化后) |
151
+ |--------|---------------|---------------------------|
152
+ | Vector API 调用方式 | 手动计算 repeatTimes + tail mask | Counter 模式:SetMaskCount + 一次调用 |
153
+ | 中间结果生命周期 | 每步搬出 GM,下步再搬入 | 保留 UB/VECCALC,链式直通消费 |
154
+ | 归约指令 | WholeReduceSum 单条高延迟 | BlockReduceSum + WholeReduceSum 组合 |
155
+ | GM 搬运次数(n 步链) | 2n 次 | 2 次 |
156
+ | Scalar 开销 | 高(repeat/mask 计算) | 低(Counter 模式自动处理) |
157
+
158
+ ## 6. 注意事项 / 约束
159
+
160
+ 1. **Counter 模式依赖硬件支持**:仅部分 Vector API 支持 Counter 模式,使用前需确认 API 文档。
161
+
162
+ 2. **Counter 模式必须恢复 mask**:使用完 Counter 模式后,必须调用 `SetMaskMode(NORMAL)` 恢复,避免影响后续 Vector API。
163
+
164
+ 3. **UB 融合链长度受 UB 容量限制**:chainLength 过长或 dtype 较宽时,中间 buffer 可能挤占双缓冲空间。需精确计算 UB 预算。
165
+
166
+ 4. **BlockReduceSum 需要临时 buffer**:低延迟归约组合需要额外的 blockSums buffer,需确保 UB 有足够空间。
167
+
168
+ 5. **循环展开与 Hardware Loop 的交互**:展开后的循环仍需满足 Hardware Loop 条件(`uint16_t` 迭代变量、起始 0、步长 1),避免引入 if/else。
169
+
170
+ 6. **尾块处理**:Counter 模式自动处理尾块,但 Normal 模式下仍需保留尾块处理逻辑作为 fallback。
171
+
172
+ ## 7. 实施常见问题与解决方案
173
+
174
+ | 问题 | 根因 | 解决方案 |
175
+ |------|------|---------|
176
+ | Counter 模式后后续 API 结果异常 | mask 未恢复为 NORMAL | 每次 Counter 模式后调用 `SetMaskMode(NORMAL)` |
177
+ | UB 融合链 UB 溢出 | chainLength 过长或 dtype 宽 | 减少 chainLength 或 tile_size;精确计算 UB 预算 |
178
+ | BlockReduceSum 结果不正确 | blockSize 未对齐 | blockSize 需对齐 Vector Unit 宽度(如 64/128) |
179
+ | 循环展开后性能下降 | 展开因子过大导致 ICache miss | 展开因子 ≤ 4,默认推荐 2x |
180
+
181
+ ## 8. 选型决策与自检清单
182
+
183
+ ### 8.1 选型决策
184
+
185
+ ```
186
+ if (profiling 显示 Scalar 时间占比高):
187
+ → 启用 Counter 模式
188
+ elif (profiling 显示 MTE2/MTE3 中间搬运占比高,且有多步 Vector 链):
189
+ → 启用 UB 融合链(VECCALC 直通)
190
+ elif (profiling 显示归约延迟高):
191
+ → 启用低延迟归约组合(BlockReduceSum + WholeReduceSum)
192
+ else:
193
+ → 标准 Vector 实现即可
194
+ ```
195
+
196
+ ### 8.2 自检清单
197
+
198
+ - [ ] Counter 模式使用后在适当位置恢复 `SetMaskMode(NORMAL)`
199
+ - [ ] UB 融合链的 VECCALC buffer 大小已精确计算,不溢出
200
+ - [ ] BlockReduceSum 的 blockSize 对齐 Vector Unit 宽度
201
+ - [ ] 循环展开后尾块处理正确(`repTimes % unrollFactor`)
202
+ - [ ] 寄存器预算 ≤ 32 RegTensor
203
+ - [ ] 验证通过:与 naive 实现对比,结果一致
@@ -0,0 +1,174 @@
1
+ # FA 族设计:Mix Kernel(数据流 / 不变量 / 流水 / 跨核同步 / softmax 陷阱)
2
+
3
+ > **来源(蒸馏)**:Ascend C Tiling 设计方法论·FlashAttention 分册
4
+ > foundation/fundamentals.md + design/{shape,resources,execution}.md。
5
+ > 覆盖设计节点 N1(宏观形态)/ N2(并行策略)/ N4(softmax)/ N10(流水同步)。
6
+
7
+ ## 1 数学模型与数据流四阶段(FA-2 Online Softmax)
8
+
9
+ 对每个 KV 分块 j 顺序累积:
10
+
11
+ ```
12
+ S_j = (Q · K_jᵀ) × scale # [Bq, Bk]
13
+ m_j = max(m_{j-1}, rowmax(S_j)) # [Bq](m_{-1} = -∞)
14
+ sum_j = exp(m_{j-1} - m_j) · sum_{j-1} + rowsum(exp(S_j - m_j))# [Bq]
15
+ O_j = exp(m_{j-1} - m_j) · O_{j-1} + exp(S_j - m_j) · V_j # [Bq, D]
16
+ 最终: O = O_last / sum_last
17
+ ```
18
+
19
+ **关键性质**:S_j 仅 `[Bq, Bk]` 大小(与 Sk 无关,不实例化全矩阵由此实现);
20
+ 跨块累积需 rescale 旧状态 `exp(m_{j-1} - m_j)`;归一化只在末块做一次。
21
+
22
+ ### 四阶段语义(AIC/AIV 协同)
23
+
24
+ | 阶段 | 核 | 操作 | 同步语义 |
25
+ |------|---|------|---------|
26
+ | **C1** | AIC | Q·Kᵀ GEMM → `[Bq,Bk]` 中间矩阵到 GM | 完成后通知 AIV |
27
+ | **V1** | AIV | scale + softmax + cast → 未归一化 P(`exp(S-m)`)到 GM | 等 C1 / 完成后通知 AIC |
28
+ | **C2** | AIC | P·V GEMM → `[Bq,D]` 中间矩阵到 GM | 等 V1 / 完成后通知 AIV |
29
+ | **V2** | AIV | 跨块在线累积(rescale + Add);末块归一化写回 | 等 C2 |
30
+
31
+ ## 2 不变量 I1-I5(违反必崩)
32
+
33
+ | # | 不变量 | 违反后果 |
34
+ |---|--------|---------|
35
+ | **I1** 数据流方向 | 同一 KV 分块内 stage 依赖严格 **C1→V1→C2→V2**(不同分块如何交错由设计定) | Fixpipe ADDR_MISALIGN / 数据未就绪 → 全零或乱值 |
36
+ | **I2** GQA 同任务 | 同 kvHead 的 G 个 qHead 必须同 task 合并(mEff = curBq × curG 进 Mmad m 维) | KV 重复搬运 G 次,MTE2/L1 利用率塌陷 |
37
+ | **I3** 跨 task 状态隔离 | 跨 task 状态(max/sum/O_acc/partial 段)必须按任务分槽隔离 | 被上一任务尾状态污染 → 乱值 |
38
+ | **I4** s2 状态累积正确性 | 默认 task 级(s2 不进 taskIdx)或 Split-KV reduce(必补 combine)二选一,禁混用 | 乱值 / 多核死锁 / 精度崩塌 |
39
+ | **I5** MX scale 轴对齐 | 量化 scale 沿被消费 matmul 的 K-mmad 轴(V 沿 S_k 不是 D) | Mmad ScaleB 轴错位 → NaN/inf |
40
+
41
+ ## 3 宏观形态(N1)
42
+
43
+ ### Kernel 类型
44
+ - 推荐 `__mix__(1, 2)`(1 AIC + 2 AIV);AIV 端瓶颈时提高 AIV 配比。
45
+ - **禁止** `__vector__` 做 FA(性能低 10-100×)。
46
+
47
+ ### UB 模式(streaming 判定)
48
+ 判定:UB 上是否存在**常驻 ∝ m × D** 的 buffer(如 O_acc 常驻 UB)?
49
+ - 有 → 必须改 **streaming UB 模式**:UB 用固定大小(与 D 无关)ping-pong
50
+ buffer;O_acc 移 GM workspace,跨 chunk 读回+rescale+累加+写出;单一代码
51
+ 路径覆盖全 D 范围。
52
+ - **禁止** `if D ≤ X: 朴素 else: streaming` 两套代码——streaming 在小 D 退化
53
+ 为单 chunk loop(典型开销 ≤5%),维护两套成本远高。
54
+
55
+ ### Cube 分块层次
56
+ - **L0 K 轴分块**(K_BASE 步长,`Mmad(.k=K_BASE, .cmatrixInitVal=(k==0))`
57
+ 自累加):D > L0 单 fragment 容量时(几乎总触发);
58
+ - **L1 M 轴分块**(M_BASE 行):`mPad × D × sizeof(Q_T)` 超 L1 单槽时;
59
+ - **L1 N 轴分块**(P·V 阶段 V LoadData):大 D 触发,A5 尤其关键;
60
+ **统一走 N 轴分块代码路径**(小 D 循环 1 次),不按 D 分支。
61
+ - V 转置加载用 `LoadDataWithTranspose`(**950PR 仅支持 L1→L0B 通路**);
62
+ 优先支持目标 dtype(bf16)直接转置的形态。
63
+ - **Nz2Nz 陷阱**:非转置 load2dV2 不重排分形——上游 Nd2Nz 的 dst 必须让多
64
+ M-fractal 按分形步长**连续排布**才能 `mStep≥2` 批量装载,否则只能单分形
65
+ (牺牲 Cube 批量装载效率)。
66
+
67
+ ## 4 并行策略(N2)
68
+
69
+ | 策略 | 任务维度 | 适用 |
70
+ |------|---------|------|
71
+ | **默认 task 级** | `taskIdx → (batch, kvHead, gS1Block, gBlock)`,s2 在 task 内顺序 | 默认;totalTasks ≥ usedCoreNum |
72
+ | **Split-KV reduce**(FlashDecoding) | 同一 KV 序列沿 s2 拆多核,各算 partial 后 cross-core combine | totalTasks ≪ usedCoreNum 且 Sq==1(纯 decode)且 Sk > 2K |
73
+
74
+ Split-KV reduce 启用契约:新增 partial reduce workspace 段(partial O +
75
+ partial max/sum)+ 跨核 combine 阶段;softmax 变体走每切片独立计算。
76
+ **禁止** totalTasks ≥ usedCoreNum 时启用。
77
+
78
+ ## 5 流水编排与跨核同步(N10)
79
+
80
+ ### 流水级数与 stage 顺序
81
+
82
+ | 方案 | loop body | 说明 |
83
+ |------|-----------|------|
84
+ | 2 级(常见首选) | `C1+V1(本轮)` → `C2+V2(loop-PRELOAD_N 轮)` | V1 可先于 V2(ring buffer slot 物理隔离 state) |
85
+ | 3 级 | `C1(本轮) → V2(上两轮) → V1+C2(上一轮)` | **V2 必须先于 V1**(V2 读上上轮 state,V1 会覆写) |
86
+
87
+ ### Ring buffer 深度(PRELOAD_N)
88
+ 默认 PRELOAD_N=2(3 slot)起步,跑通后按 PipeUtilization 在 1/2/3 间微调——
89
+ 但「是否启用 ring buffer 预取」是**结构决策必须设计期定死**(禁止退化逐块串行)。
90
+
91
+ ### Slot 语义分类(公式分离,禁止共用常量)
92
+
93
+ | slot 语义 | 取模计数器 | 取模常量 | 索引 | 典型应用 |
94
+ |----------|-----------|---------|------|---------|
95
+ | 跨 stage 握手 | loop(全局迭代器) | DB(如 2) | `loop & (DB-1)` | 中间矩阵 DB |
96
+ | 跨 task 状态 | **mloop(行计数器)** | PRELOAD_N+1(如 3) | `mloop % (PRELOAD_N+1)` | softmax max/sum |
97
+ | 跨 loop 自读自写 | loop | PRELOAD_N+1 | `loop % (PRELOAD_N+1)` | V2 的 O_acc 落地段 |
98
+ | task 环形缓冲 | loop | CACHE_SIZE(2 的幂) | `loop & (CACHE_SIZE-1)` | task 元信息 |
99
+
100
+ > ⚠️ `mloop`(行级,softmax max/sum 是行状态)与 `loop`(迭代级,exp buffer)
101
+ > **不可混用**——混用症状是 multi-s2 块精度漂移。`PRELOAD_N+1=3` 非 2 的幂
102
+ > **必须用 %**;CACHE_SIZE 必须 2 的幂用 `&`(热路径省标量除法)。
103
+ > **误用最小复现条件**:single task + multi s2 块(s2N ≥ 3)。
104
+
105
+ ### 跨核同步原语
106
+
107
+ - 默认 `CrossCoreSetFlag<modeId,pipe>` / `CrossCoreWaitFlag<modeId,pipe>`
108
+ (公开 ISASI,精确通知 fire-and-forget);
109
+ - **两端 modeId 必须一致**:不一致 → flagId 空间独立 → **挂死**。950PR/950DT
110
+ (A5)核内 AIC↔单 AIV 握手用 modeId=4;A2/A3 仅支持 0/1/2。省略模板参数
111
+ 退回默认 modeId=0(多核同步空间)→ WaitFlag 永远等不到 → 挂死;
112
+ - `PipeBarrier<PIPE_ALL>` 仅契约位置兜底(跨 pipe 无对应 HardEvent 时)——
113
+ **禁止四处散布**(冗余率 <30%,50% 视为性能阻塞项);
114
+ - 同步粒度:per-stage(每 stage 完成即通知)是 FA 4-stage 常见选择;
115
+ - 双 AIV(推荐):双 AIV 全程参与;单 AIV 是简化替代(AIV1 early-return)。
116
+
117
+ ### Fixpipe 陷阱
118
+
119
+ 中间段落地位置(L0C→UB 片上 vs L0C→GM)默认**优选片上**。调用 L0C→UB 必须
120
+ **显式构造 `isToUB=true` 的 FixpipeConfig**——默认 `CFG_ROW_MAJOR`(isToUB=false)
121
+ 指向 GM 物理地址,用它写 UB 目的地**静默出错**(编译过、结果错),极易被
122
+ 误诊为「硬件不支持 L0C→UB」而错误退到全程 GM。
123
+
124
+ ## 6 V1/V2 Softmax 实现陷阱(N4)
125
+
126
+ - **实现路径**:默认 `SoftmaxFlashV2` 公开 API(`T` 仅 half/float,bf16 走
127
+ `<float>` + Cast);`isBasicBlock` 模板参数**必须与 TilingFunc 传值一致**
128
+ ——不一致 → expMax UB 布局错位 → 逐行 rescale 读错偏移 → **编译过静默数值错**。
129
+ - **首块初始化契约**(漏则整行 O 错并沿 s2 传播):max=-∞、sum=0;
130
+ O_acc 的 GM workspace 段**必须显式清零**(GM 默认不清零);首块无前序状态
131
+ → rescale 因子等价 1(V2 走「跳过 rescale」分支)。
132
+ - **末块除零保护**:`O = O_acc / sum` 前对 sum 加 eps/clamp——padding 行或
133
+ 极端输入下 sum 可能为 0 → inf/NaN 写出。
134
+ - **mask 值用大有限负数(如 -1e30),禁用 -∞**:整行被屏蔽时 `rowmax=-∞` →
135
+ `exp(-∞-(-∞)) = NaN` 沿 s2 累积传播(FA 经典 NaN 陷阱)。
136
+ - **完全屏蔽 tile:跳 C1 必须同步跳 V1**——只跳 C1 不跳 V1 → 全 mask 行仍进
137
+ softmax → NaN;跨核握手段需有效数据时 P 写全 0。
138
+ - **online softmax 有状态**:跨 s2 块必须接入并回读 running max/sum/rescale
139
+ 因子——不能当一次性 `src→dst` 无状态调用。
140
+
141
+ ## 7 编译期特化(N8)
142
+
143
+ 三维度分层判定:
144
+
145
+ | 判定 | 处理 | FA 典型 |
146
+ |------|------|--------|
147
+ | 引入/删除 TBuf 成员或改 slot 数 | **编译宏分离 target** | dtype / causal on-off / sparse |
148
+ | 热路径分支 | **constexpr 模板参数** | layout(BSND/BNSD)/ hasRope |
149
+ | 仅数值参数 | **运行时 if** | 实际序列长度 |
150
+
151
+ - mix kernel 推荐 **Dummy Block 模式**(Cube 核 VecBlockDummy / 反之):
152
+ 零死代码 + 类型安全;
153
+ - causal mask buffer **默认不预分配完整 `[mEff,Bk]` 矩阵**——优先在 S 矩阵
154
+ 原地生成(行号公式 + Compare/Select)或单行模板。
155
+
156
+ ## 8 内存划分要点(N7)
157
+
158
+ - 所有 buffer 公式只允许:运行时查询的硬件常量 + Tiling 基本块 + dtype 字节宽
159
+ ——**禁止直接写数字**;
160
+ - 每个 DataCopy 单次量 ≤ 对应 TQue 单槽容量(否则对称 chunk loop,V1/V2
161
+ **两侧都要切**);
162
+ - `Σ(单槽 × depth) ≤ GetCoreMemSize(UB)` 总量校验;
163
+ - workspace 多段(握手段 / softmax 状态段 / O_acc 段 / partial 段)独立管理,
164
+ GM 自读自写段禁止裸 DataCopy 不经同步。
165
+
166
+ ## 9 与本仓调优链的衔接
167
+
168
+ - **基线验证先行**(写自定义 kernel 前必做):编译运行同类型 mix 示例
169
+ (asc-devkit `matmul_leakyrelu_advanced_api` / `matmul_gelu_high_performance`
170
+ / `softmaxflashv2` building block)确认 `__mix__(1,2)` + TPipe + SoftmaxFlashV2
171
+ 在当前 CANN 可用;
172
+ - verdict 命中 → 区制 → 杠杆的路由表见 [guide.md](guide.md);
173
+ - overlap_pct(trace_bubble)验证 AIC/AIV 流水化是否生效(pipeline 机制卡
174
+ 阈值同款:>30% 生效)。