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.
- package/README.md +183 -2
- package/THIRD_PARTY_NOTICES.md +85 -0
- package/cordis.patch.yml +3 -0
- package/doctor/LICENSE +202 -0
- package/doctor/NOTICE +12 -0
- package/doctor/README.md +18 -0
- package/lib/client.js +94437 -0
- package/lib/index.d.ts +722 -0
- package/lib/index.js +33711 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +171 -4
- package/skills/asc-tools/tool-ops-tune/INSTALL.md +52 -0
- package/skills/asc-tools/tool-ops-tune/LICENSE +38 -0
- package/skills/asc-tools/tool-ops-tune/README.md +167 -0
- package/skills/asc-tools/tool-ops-tune/SKILL.md +93 -0
- package/skills/asc-tools/tool-ops-tune/agent/AGENTS.md +195 -0
- package/skills/asc-tools/tool-ops-tune/agent/agents/perf-implementer.md +68 -0
- package/skills/asc-tools/tool-ops-tune/agent/agents/perf-reviewer.md +86 -0
- package/skills/asc-tools/tool-ops-tune/agent/workflows/task-prompts.md +362 -0
- package/skills/asc-tools/tool-ops-tune/agent/workflows/troubleshooting.md +43 -0
- package/skills/asc-tools/tool-ops-tune/docs/figures/opstune-architecture.png +0 -0
- package/skills/asc-tools/tool-ops-tune/docs/figures/opstune-architecture.svg +253 -0
- package/skills/asc-tools/tool-ops-tune/docs/ops-tune-design.md +404 -0
- package/skills/asc-tools/tool-ops-tune/docs//347/224/250/344/276/213/346/236/204/345/273/272.md +730 -0
- 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
- package/skills/asc-tools/tool-ops-tune/evals/evals.json +242 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/SKILL.md +146 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/references/tool-routing.md +86 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_board.sh +458 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_cases.py +368 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_sim.sh +134 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/csv_to_db.py +314 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/db_bench.py +545 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/facts_bridge.py +1102 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/isolation_test.py +452 -0
- package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/jsonl_to_cases.py +163 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/SKILL.md +76 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/advanced_tiling.md +92 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/broadcast_design.md +160 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_add_kernel.cpp +126 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_add_tiling.cpp +144 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_tiling_common.h +401 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/onedim_add_kernel.cpp +107 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/onedim_add_tiling.cpp +64 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/datacopypad_design.md +46 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/guide.md +14 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/nddma_design.md +53 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/onedim_design.md +114 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/ub_broadcast_design.md +67 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/common/datacopy_optimization_design.md +351 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/common/index.md +9 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/common/tail_block_design.md +268 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/index.md +38 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/timing_harness_aclrt_event.cpp +199 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/timing_harness_torch_event.py +130 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/common/ub_resident_design.md +342 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/guide.md +69 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/index.md +4 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_base.template +81 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_big_dim.template +217 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_cut_one_axis.template +336 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_cut_two_axis.template +781 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_n_last.template +340 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_small_shape.template +321 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_tensor_move.template +102 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_transdata_5hd.template +480 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_transdata_5hd_021axis.template +533 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_with_gather.template +688 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/transpose_tiling_data.template +192 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_big_dim.md +220 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_cut_one_axis.md +175 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_cut_two_axis.md +177 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_fusion_design.md +398 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_gather.md +191 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_n_last.md +276 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_small_shape.md +315 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_tensor_move.md +203 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_tiling_data.md +176 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_vconv_021.md +206 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_vconv_5hd.md +179 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/double_buffer_design.md +288 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/guide.md +46 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/index.md +10 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/CMakeLists.txt +131 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/README.md +55 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/add_custom_torch.cpp +80 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/ops.h +23 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/register.cpp +30 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_host/add_custom.asc +149 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_host/data_utils.h +97 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_kernel/add_custom_kernel.asc +136 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_kernel/add_custom_tiling.h +31 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/run.sh +87 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/gen_data.py +70 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/golden.py +34 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/test_torch.py +99 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/verify_result.py +56 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/usage_guide.md +61 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/vector_efficiency_design.md +203 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/fa_mixed_kernel_design.md +174 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/fa_roofline_design.md +141 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/guide.md +87 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/knowledge_gaps.json +56 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/best-practices-guide.md +14 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/fullload_design.md +344 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/guide.md +52 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/mte2_preload_design.md +320 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/pingpong_design.md +254 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/scale_coalescing_design.md +282 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/streamk_design.md +374 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/swat_design.md +423 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/templates/matmul_basic_blaze.template +165 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/templates/usage_guide.md +29 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/best-practices-guide.md +43 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/guide.md +42 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/local_matmul_design.md +130 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/pipeline_balancing_design.md +502 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/guide.md +178 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/kernel_utils.template +75 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_full_load.template +429 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_recompute.template +485 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_small_r.template +348 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_full_load.template +574 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_online.template +324 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_recompute.template +436 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_base.template +950 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/fused_attention_online_softmax_design.md +428 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_full_load.md +137 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_recompute.md +135 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_small_r.md +122 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_full_load.md +144 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_online.md +185 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_recompute.md +163 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_tiling.template +460 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_tiling_data.template +278 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/state_resident_design.md +337 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/usage_guide.md +253 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/coding_principles.md +476 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/conv_scalar.md +163 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/guide.md +30 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/simt/guide.md +91 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/simt/optimization-guide.md +110 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/sort/guide.md +83 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/references/sort/radix_sort.md +354 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/scripts/family_asset_audit.py +68 -0
- package/skills/asc-tools/tool-ops-tune/ops-family/scripts/tiling_candidates.py +419 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/SKILL.md +23 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/ascendc/case_groupedmatmul_pipeline.md +23 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/ascendc/case_triton_atomic_revert.md +19 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/mc2/case_mc2_fusion.md +19 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/api-usage.md +70 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/ascendc-regbase-vf.md +45 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/ascendc-tiling.md +51 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/data-copy.md +67 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/index.md +45 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/mc2-balancing.md +77 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/mc2.md +103 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/memory-hierarchy.md +40 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/pipeline.md +95 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/case_backfill.py +170 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/log_gap.py +145 -0
- package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/mc2_search.py +367 -0
- package/skills/asc-tools/tool-ops-tune/ops-report/SKILL.md +77 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/run_evals.py +963 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/smoke/install-hooks.sh +65 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/smoke/run_smoke.sh +535 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/core_tail_a5.csv +25 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/few_cores_a5.csv +5 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/mte2_bound_a2.csv +17 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/multi_kernel_mix_a5.csv +7 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/no_bound_a5.csv +9 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/serial_no_overlap_a2.csv +9 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/vec_bound_a5.csv +9 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/references/io-contracts.md +94 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/references/rule-schema.md +130 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/references/scope-schema.md +61 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/references/soc-spec.yaml +140 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L0-instruction.yaml +67 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L1-single-core.yaml +316 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L2-inter-core.yaml +173 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L3-inter-card.yaml +156 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/batch_pipeline.py +466 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/calibrate.py +249 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/delta_compare.py +278 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/render_html.py +304 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/snapshot.py +200 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/trace_bubble.py +331 -0
- package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/verdict.py +1094 -0
- package/skills/asc-tools/tool-ops-tune/scripts/diff_audit.py +281 -0
- package/skills/asc-tools/tool-precision-debug/LICENSE +38 -0
- package/skills/asc-tools/tool-precision-debug/README.md +190 -0
- package/skills/asc-tools/tool-precision-debug/scripts/install.sh +475 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/LICENSE +38 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/SKILL.md +136 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/evals/evals.json +932 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/baseline.md +69 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/checkpoint-design.md +82 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/dumptensor.md +83 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/hypothesis-experiment.md +114 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/index.md +20 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/localization.md +85 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/numerical-modeling.md +94 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/operator-modeling.md +116 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/progressive-error-analysis.md +86 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/reporting.md +140 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/reproducibility.md +121 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/semantic-bisection.md +72 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/sensitive-points.md +146 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/fp16-promotion-boundary.md +46 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/fused-rmsnorm-gelu-residual.md +162 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/index.md +16 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/integer-float-collision.md +44 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/partial-statistics-merge.md +30 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/softplus-v2-grad-family.md +156 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/sync-dataflow-handshake.md +89 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/tail-valid-region-state.md +30 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/thnn-fused-gru-bias-reduction.md +73 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/index.md +34 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/accumulation-order.md +108 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/algorithm-parameter-contract.md +118 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/buffer-lifetime-alias.md +133 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/cast-rounding.md +76 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/complex-operator-boundary.md +48 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/data-movement-alignment.md +104 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/golden-host-contract.md +84 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/index-address-ownership.md +57 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/index.md +32 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/multicore-ownership.md +117 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/pipeline-sync-visibility.md +146 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/precision-mode-approximation.md +90 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/shape-boundary-contract.md +57 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/special-values.md +122 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/tiling-tail-state.md +146 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/broadcast-transpose.md +64 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/convolution.md +60 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/dynamic-quant.md +47 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/index.md +18 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/matmul-mmad.md +131 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/normalization.md +145 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/reduction.md +167 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/softplus-v2-grad.md +58 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/sort-merge.md +65 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/index.md +18 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/kernel-debug-data.md +133 -0
- package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/msobjdump.md +150 -0
- package/skills/cann-doctor/SKILL.md +15 -0
- package/skills/catalog.json +79 -0
- package/skills/mattpocock/GLOSSARY.md +30 -0
- package/skills/mattpocock/LICENSE +21 -0
- package/skills/mattpocock/README.md +258 -0
- package/skills/mattpocock/SCOPE.md +35 -0
- package/skills/mattpocock/docs/agents/triage-labels.md +15 -0
- package/skills/mattpocock/docs/engineering/ask-matt.md +91 -0
- package/skills/mattpocock/docs/engineering/code-review.md +101 -0
- package/skills/mattpocock/docs/engineering/codebase-design.md +88 -0
- package/skills/mattpocock/docs/engineering/diagnosing-bugs.md +94 -0
- package/skills/mattpocock/docs/engineering/domain-modeling.md +86 -0
- package/skills/mattpocock/docs/engineering/grill-with-docs.md +82 -0
- package/skills/mattpocock/docs/engineering/implement-spec.md +86 -0
- package/skills/mattpocock/docs/engineering/implement.md +97 -0
- package/skills/mattpocock/docs/engineering/improve-codebase-architecture.md +113 -0
- package/skills/mattpocock/docs/engineering/pr.md +79 -0
- package/skills/mattpocock/docs/engineering/prototype.md +67 -0
- package/skills/mattpocock/docs/engineering/research.md +73 -0
- package/skills/mattpocock/docs/engineering/resolving-merge-conflicts.md +53 -0
- package/skills/mattpocock/docs/engineering/retro.md +81 -0
- package/skills/mattpocock/docs/engineering/setup-matt-pocock-skills.md +94 -0
- package/skills/mattpocock/docs/engineering/tdd.md +94 -0
- package/skills/mattpocock/docs/engineering/to-spec.md +81 -0
- package/skills/mattpocock/docs/engineering/to-tickets.md +99 -0
- package/skills/mattpocock/docs/engineering/triage.md +109 -0
- package/skills/mattpocock/docs/engineering/wayfinder.md +103 -0
- package/skills/mattpocock/docs/engineering/wizard.md +96 -0
- package/skills/mattpocock/docs/productivity/grill-me.md +76 -0
- package/skills/mattpocock/docs/productivity/grilling.md +87 -0
- package/skills/mattpocock/docs/productivity/handoff.md +76 -0
- package/skills/mattpocock/docs/productivity/teach.md +97 -0
- package/skills/mattpocock/docs/productivity/to-questionnaire.md +78 -0
- package/skills/mattpocock/docs/productivity/wait-what.md +36 -0
- package/skills/mattpocock/docs/productivity/writing-for-agents.md +70 -0
- package/skills/mattpocock/scripts/link-skills.sh +62 -0
- package/skills/mattpocock/scripts/list-skills.sh +7 -0
- package/skills/mattpocock/scripts/sync-plugin-version.mjs +41 -0
- package/skills/mattpocock/skills/deprecated/README.md +3 -0
- package/skills/mattpocock/skills/engineering/README.md +34 -0
- package/skills/mattpocock/skills/engineering/ask-matt/PHASE-BOUNDARIES.md +55 -0
- package/skills/mattpocock/skills/engineering/ask-matt/SKILL.md +97 -0
- package/skills/mattpocock/skills/engineering/ask-matt/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/code-review/SKILL.md +89 -0
- package/skills/mattpocock/skills/engineering/code-review/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/codebase-design/DEEPENING.md +37 -0
- package/skills/mattpocock/skills/engineering/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/skills/mattpocock/skills/engineering/codebase-design/SKILL.md +114 -0
- package/skills/mattpocock/skills/engineering/codebase-design/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/diagnosing-bugs/SKILL.md +138 -0
- package/skills/mattpocock/skills/engineering/diagnosing-bugs/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
- package/skills/mattpocock/skills/engineering/domain-modeling/ADR-FORMAT.md +47 -0
- package/skills/mattpocock/skills/engineering/domain-modeling/GLOSSARY-FORMAT.md +60 -0
- package/skills/mattpocock/skills/engineering/domain-modeling/SKILL.md +74 -0
- package/skills/mattpocock/skills/engineering/domain-modeling/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/grill-with-docs/SKILL.md +7 -0
- package/skills/mattpocock/skills/engineering/grill-with-docs/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/implement/SKILL.md +17 -0
- package/skills/mattpocock/skills/engineering/implement/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/implement-spec/SKILL.md +42 -0
- package/skills/mattpocock/skills/engineering/implement-spec/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/skills/mattpocock/skills/engineering/improve-codebase-architecture/SKILL.md +71 -0
- package/skills/mattpocock/skills/engineering/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/pr/CREDITS.md +3 -0
- package/skills/mattpocock/skills/engineering/pr/SKILL.md +170 -0
- package/skills/mattpocock/skills/engineering/pr/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/prototype/LOGIC.md +67 -0
- package/skills/mattpocock/skills/engineering/prototype/SKILL.md +26 -0
- package/skills/mattpocock/skills/engineering/prototype/UI.md +112 -0
- package/skills/mattpocock/skills/engineering/prototype/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/research/SKILL.md +12 -0
- package/skills/mattpocock/skills/engineering/research/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/retro/SKILL.md +44 -0
- package/skills/mattpocock/skills/engineering/retro/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/SKILL.md +120 -0
- package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/domain.md +51 -0
- package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +50 -0
- package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
- package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
- package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/skills/mattpocock/skills/engineering/tdd/SKILL.md +38 -0
- package/skills/mattpocock/skills/engineering/tdd/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/tdd/mocking.md +59 -0
- package/skills/mattpocock/skills/engineering/tdd/tests.md +77 -0
- package/skills/mattpocock/skills/engineering/to-spec/SKILL.md +75 -0
- package/skills/mattpocock/skills/engineering/to-spec/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/to-tickets/SKILL.md +105 -0
- package/skills/mattpocock/skills/engineering/to-tickets/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/triage/AGENT-BRIEF.md +207 -0
- package/skills/mattpocock/skills/engineering/triage/OUT-OF-SCOPE.md +105 -0
- package/skills/mattpocock/skills/engineering/triage/SKILL.md +112 -0
- package/skills/mattpocock/skills/engineering/triage/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/wayfinder/SKILL.md +128 -0
- package/skills/mattpocock/skills/engineering/wayfinder/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/engineering/wizard/SKILL.md +44 -0
- package/skills/mattpocock/skills/engineering/wizard/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/engineering/wizard/template.sh +223 -0
- package/skills/mattpocock/skills/in-progress/README.md +17 -0
- package/skills/mattpocock/skills/in-progress/chief-of-staff/SKILL.md +75 -0
- package/skills/mattpocock/skills/in-progress/chief-of-staff/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/in-progress/claude-handoff/SKILL.md +18 -0
- package/skills/mattpocock/skills/in-progress/claude-handoff/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/in-progress/loop-me/SKILL.md +32 -0
- package/skills/mattpocock/skills/in-progress/loop-me/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/SKILL.md +102 -0
- package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/dependency-cruiser.config.cjs +95 -0
- package/skills/mattpocock/skills/in-progress/software-factory/EXAMPLE-TASKS.md +80 -0
- package/skills/mattpocock/skills/in-progress/software-factory/GIT-HOSTS.md +84 -0
- package/skills/mattpocock/skills/in-progress/software-factory/OBSERVABILITY-PLATFORMS.md +75 -0
- package/skills/mattpocock/skills/in-progress/software-factory/RUNNERS.md +94 -0
- package/skills/mattpocock/skills/in-progress/software-factory/SKILL.md +98 -0
- package/skills/mattpocock/skills/in-progress/software-factory/TICKET-TRACKERS.md +85 -0
- package/skills/mattpocock/skills/in-progress/writing-beats/SKILL.md +67 -0
- package/skills/mattpocock/skills/in-progress/writing-beats/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/in-progress/writing-fragments/SKILL.md +79 -0
- package/skills/mattpocock/skills/in-progress/writing-fragments/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/in-progress/writing-shape/SKILL.md +79 -0
- package/skills/mattpocock/skills/in-progress/writing-shape/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/misc/README.md +8 -0
- package/skills/mattpocock/skills/misc/git-guardrails-claude-code/SKILL.md +95 -0
- package/skills/mattpocock/skills/misc/git-guardrails-claude-code/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/misc/git-guardrails-claude-code/scripts/block-dangerous-git.sh +25 -0
- package/skills/mattpocock/skills/misc/migrate-to-shoehorn/SKILL.md +118 -0
- package/skills/mattpocock/skills/misc/migrate-to-shoehorn/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/misc/scaffold-exercises/SKILL.md +106 -0
- package/skills/mattpocock/skills/misc/scaffold-exercises/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/misc/setup-pre-commit/SKILL.md +91 -0
- package/skills/mattpocock/skills/misc/setup-pre-commit/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/productivity/README.md +20 -0
- package/skills/mattpocock/skills/productivity/grill-me/SKILL.md +7 -0
- package/skills/mattpocock/skills/productivity/grill-me/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/productivity/grilling/SKILL.md +30 -0
- package/skills/mattpocock/skills/productivity/grilling/agents/openai.yaml +3 -0
- package/skills/mattpocock/skills/productivity/handoff/SKILL.md +16 -0
- package/skills/mattpocock/skills/productivity/handoff/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/productivity/teach/GLOSSARY-FORMAT.md +35 -0
- package/skills/mattpocock/skills/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/skills/mattpocock/skills/productivity/teach/MISSION-FORMAT.md +31 -0
- package/skills/mattpocock/skills/productivity/teach/RESOURCES-FORMAT.md +32 -0
- package/skills/mattpocock/skills/productivity/teach/SKILL.md +140 -0
- package/skills/mattpocock/skills/productivity/teach/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/productivity/to-questionnaire/SKILL.md +54 -0
- package/skills/mattpocock/skills/productivity/to-questionnaire/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/productivity/wait-what/SKILL.md +7 -0
- package/skills/mattpocock/skills/productivity/wait-what/agents/openai.yaml +5 -0
- package/skills/mattpocock/skills/productivity/writing-for-agents/SKILL-MECHANICS.md +22 -0
- package/skills/mattpocock/skills/productivity/writing-for-agents/SKILL.md +81 -0
- package/skills/mattpocock/skills/productivity/writing-for-agents/agents/openai.yaml +3 -0
- package/skills/task-agents/operator-development/Agent.md +71 -0
- package/skills/task-agents/operator-development/skills.json +120 -0
- package/skills/task-agents/operator-development/stages.schema.json +532 -0
- package/skills/task-agents/performance-optimization/Agent.md +78 -0
- package/skills/task-agents/performance-optimization/skills.json +64 -0
- package/skills/task-agents/response-protocol.md +35 -0
- package/skills/task-agents/sidebar-contracts.schema.json +4168 -0
- package/skills/task-agents/sidebar-selection.schema.json +971 -0
- package/skills/task-agents/visuals/components.json +283 -0
- package/skills/task-agents/visuals/contracts.schema.json +3628 -0
package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/ascendc-regbase-vf.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# 机制卡:RegBase / SIMD VF(A5 向量范式)
|
|
2
|
+
|
|
3
|
+
> 对应判定规则:L1_VEC_BOUND(深度档:>80% 接近极限后的存量空间)、多步融合 Vector、
|
|
4
|
+
> MemBase 已尽场景。仅 A5(dav-3510);A2/A3 保留兼容分支,禁止下沉此路径。
|
|
5
|
+
> 内容沉淀自 A5 RegBase/VF 与 SIMT 范式调优一线实践。
|
|
6
|
+
> **DSL 适用域**:本卡实施细节以 **Ascend C** 为准;Triton / CATLASS / TileLang 的等价原语与实施差异见 [index.md 跨 DSL 原语对照表](index.md#跨-dsl-原语对照六原语--dsl)——跨 DSL 实施时以该表为路由、对应 DSL 专项文档为深度参考,不按本卡字面照搬。
|
|
7
|
+
|
|
8
|
+
## 原理
|
|
9
|
+
|
|
10
|
+
A5 的 RegBase 编程范式把数据驻留寄存器(RegTensor),以 SIMD VF(Vector Function)指令
|
|
11
|
+
直接计算,绕开 UB 往返与队列同步。适用:多步短生命周期计算(量化/激活/归一化组合)、
|
|
12
|
+
UB 带宽已成约束的 Vector 算子。
|
|
13
|
+
|
|
14
|
+
## 适用前提
|
|
15
|
+
|
|
16
|
+
- 目标 SoC = A5(编译目标 ascend950 / dav-3510);A2/A3 必须保留原实现分支;
|
|
17
|
+
- 多步计算间数据生命周期短(适合寄存器驻留);
|
|
18
|
+
- UB 预算紧张(寄存器驻留缓解 UB 压力)或 Vector 指令链长。
|
|
19
|
+
|
|
20
|
+
## 关键结构(模板必须原样保留的部分)
|
|
21
|
+
|
|
22
|
+
RegTensor / MaskReg / LoadAsFp32 / StoreFromFp32 等 MicroAPI VF 计算结构——
|
|
23
|
+
**模板内这些结构禁止降级为高层 API**(模板拷贝纪律,见 ops-family)。
|
|
24
|
+
|
|
25
|
+
## 编译修复顺序(MicroAPI 报错时,禁止直接降级)
|
|
26
|
+
|
|
27
|
+
1. 命名空间别名(`namespace MicroAPI = Reg;`)
|
|
28
|
+
2. API 签名适配(对照 `$ASCEND_HOME_PATH/.../reg_compute/` 实际头文件)
|
|
29
|
+
3. include 路径修正
|
|
30
|
+
4. 全部无效才降级**对应分支**,并在结果中列出尝试过的修复与失败原因
|
|
31
|
+
|
|
32
|
+
## 验证与精度风险
|
|
33
|
+
|
|
34
|
+
- 数值稳定性:VF 计算的舍入行为与高层 API 可能不同(如求逆 VF 化案例:须覆盖数值
|
|
35
|
+
稳定性验证)→ 精度用例含边界值/异常位型;
|
|
36
|
+
- 判定证据复采:vec_ratio / vec_fp32_ratio 变化 + wall 收益(event 口径)。
|
|
37
|
+
|
|
38
|
+
## 回滚
|
|
39
|
+
|
|
40
|
+
编译修复三连无效且降级后无收益 / 精度位型失败 → revert 整个 VF 分支(保留兼容分支)。
|
|
41
|
+
|
|
42
|
+
## 模板资产
|
|
43
|
+
|
|
44
|
+
`ops-family:references/simt/optimization-guide.md`(SIMT 不规则读写)、
|
|
45
|
+
`ops-family:references/elementwise/vector_efficiency_design.md`。
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# 机制卡:Ascend C Tiling 优化(切分与多核负载)
|
|
2
|
+
|
|
3
|
+
> 对应判定规则:L2_CORE_TAIL、L2_IMBALANCE_*、L2_UNDERUTILIZATION、L1_MTE2_BOUND
|
|
4
|
+
>(tile 尺寸侧)。内容沉淀自 tiling 调优一线实践与各族理论建模沉淀。
|
|
5
|
+
> **DSL 适用域**:本卡实施细节以 **Ascend C** 为准;Triton / CATLASS / TileLang 的等价原语与实施差异见 [index.md 跨 DSL 原语对照表](index.md#跨-dsl-原语对照六原语--dsl)——跨 DSL 实施时以该表为路由、对应 DSL 专项文档为深度参考,不按本卡字面照搬。
|
|
6
|
+
|
|
7
|
+
## 机制清单
|
|
8
|
+
|
|
9
|
+
| 场景 | 机制 | 说明 |
|
|
10
|
+
|------|------|------|
|
|
11
|
+
| 切核不足 | Block Dim 提升 | 「最低垂果实」:4 核→20 核案例利用率 10%→50%;但 Task <25us 时增核放大头开销,须权衡。**候选参数不再经验拍**:`ops-family/scripts/tiling_candidates.py` 按 soc-spec 容量约束产出候选表 + 逐候选容量占用 |
|
|
12
|
+
| 核间长尾 | 尾块均衡 | 数据总量不整除核数时尾块分散到更多核(swat:蛇形行窗口 + 尾块合并 + 末轮二维再切分) |
|
|
13
|
+
| 长尾持续 | block swat / 尾轮均衡 | 两簇检测(前后半段核均值差 ≥2%)提示 NUMA/L2 slice 偏斜时优先 |
|
|
14
|
+
| 搬运次数多 | 增大 tile | mte2_instructions 过大时(与 UB 预算联动;候选表已附 UB 占用计算) |
|
|
15
|
+
| MN 欠并行 | streamk(SK/DP+SK) | totalBlockCnt < aicNum + K 长:切 K 到空闲核,AIV 归约(matmul 族) |
|
|
16
|
+
| 尾碎片不均 | swat | MN 够并行(>aicNum 数倍)但尾碎片负载不均 |
|
|
17
|
+
|
|
18
|
+
> MC² 配平候选(四剪枝 + Top-N)的执行载体为 `mc2_search.py`。
|
|
19
|
+
|
|
20
|
+
## Tiling 理论建模(多机制联动时的前置)
|
|
21
|
+
|
|
22
|
+
卡间切分 ↔ 核间切分 ↔ 单核 Buffer 规划三层联动(跨层耦合):改一个 baseM 同时影响
|
|
23
|
+
通信粒度、核利用率、L1/L0 容量。多机制候选冲突时先做 tiling 建模再选单变量——
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
Step1 输出:卡间切分 / 多核切分 / 单核切分(Cube: L1+L0 split;Vec: UB split)
|
|
27
|
+
/ Buffer 规划(L1/L0/UB 分层)/ 分支场景覆盖(dtype/shape/对齐)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
各族理论模型与 fallback:`ops-family`(matmul/mc2/reduce/elementwise/broadcast/
|
|
31
|
+
conversion/convolution/fa/sort 路由表)。**fa 族当前仅 fallback 兜底(已知缺口)**,
|
|
32
|
+
FA 类调优按无同型案例降级策略执行并沉淀案例。
|
|
33
|
+
|
|
34
|
+
## 验证
|
|
35
|
+
|
|
36
|
+
L2 规则复跑(__tail_ratio / __imbalance_pct / row_count 变化)+ 同口径性能;
|
|
37
|
+
tiling 改动后 device fault 处置:①回滚确认基线可复跑 ②-g 重编 + msSanitizer 定位
|
|
38
|
+
③缩小改动粒度 ④核对深度/容量联动字段。
|
|
39
|
+
|
|
40
|
+
## 回滚
|
|
41
|
+
|
|
42
|
+
长尾加剧 / 利用率未升 / 精度失败 → revert。切分类改动可能改变 tiling_key——
|
|
43
|
+
delta_compare 默认 WARN 不阻断(MECHANISM_KEYS 语义)。
|
|
44
|
+
|
|
45
|
+
## 精度风险
|
|
46
|
+
|
|
47
|
+
切分与分核默认语义保持;改变归约分块顺序 → 语义变更类(附验证用例)。
|
|
48
|
+
|
|
49
|
+
## 模板资产
|
|
50
|
+
|
|
51
|
+
`ops-family:references/matmul/guide.md`(六策略互斥判定树)、各族 guide。
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# 机制卡:数据搬运优化(MTE2/MTE3 —— 真假 bound 二分)
|
|
2
|
+
|
|
3
|
+
> 对应判定规则:L1_MTE2_BOUND、L1_MTE3_BOUND、L1_FIXP_BOUND。
|
|
4
|
+
> 核心方法:**先分真假 bound,再选机制**——真带宽饱和优化数据量/复用;假 bound(busy 高
|
|
5
|
+
> 但带宽低)优化搬运组织。判定引擎的反证条目已给出方向,机制卡只做实施。
|
|
6
|
+
> **DSL 适用域**:本卡实施细节以 **Ascend C** 为准;Triton / CATLASS / TileLang 的等价原语与实施差异见 [index.md 跨 DSL 原语对照表](index.md#跨-dsl-原语对照六原语--dsl)——跨 DSL 实施时以该表为路由、对应 DSL 专项文档为深度参考,不按本卡字面照搬。
|
|
7
|
+
|
|
8
|
+
## 原理与二分
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
理论 MTE2 耗时 = GM_to_UB_datas(KB) × 1024 / GM 峰值带宽
|
|
12
|
+
实际 MTE2 耗时 = ai*_mte2_time(us)
|
|
13
|
+
|
|
14
|
+
实际 ≈ 理论(差 <20%,或 active_bw ≥ 峰值 80%)→ 真带宽饱和:
|
|
15
|
+
机制方向 = 削减数据量(复用/驻留/更小 dtype)与减少搬运次数(增大 tile)
|
|
16
|
+
实际 >> 理论(active_bw < 40% 峰值)→ 假 bound(搬运组织问题):
|
|
17
|
+
机制方向 = 合并小搬运 / 对齐 / 缓解同步
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 机制清单
|
|
21
|
+
|
|
22
|
+
| # | 机制 | 适用条件 | 检查方式 |
|
|
23
|
+
|---|------|---------|---------|
|
|
24
|
+
| 1 | 增大单次搬运量 | 单次 <16KB | GM_to_UB_datas / mte2_instructions |
|
|
25
|
+
| 2 | 512B 地址对齐 | fixpipe_ratio >5~15% | PipeUtilization fixpipe_ratio |
|
|
26
|
+
| 3 | 合并小搬运 | 多次 <20KB 小块 → 合并成一次大 MTE2(scaleKL1 = SCALE_L1_BUFFER_NUM × kL1) | matmul scale_coalescing 实践 |
|
|
27
|
+
| 4 | L2 CacheMode | L2 hit <50% | L2Cache.csv;只读一次的数据 CACHE_MODE_DISABLE 防污染 |
|
|
28
|
+
| 5 | UB/TBuf 常驻复用 | 多 tile 重复从 GM 搬同一数据 | Bank 冲突规避与常驻联动设计 |
|
|
29
|
+
| 6 | Double Buffer | MTE 与计算串行 | 转 pipeline.md |
|
|
30
|
+
| 7 | 增大 tile | 搬运次数过多 | mte2_instructions 过大 |
|
|
31
|
+
| 8 | 避免同地址多核访问 | 各核 mte2_time 差异大 | 跨核共享读改广播/分片 |
|
|
32
|
+
| 9 | L2 复用(带宽未打满时) | tile 调大使数据驻留 L2;**相邻核处理相邻数据**共享缓存行 | 实际带宽/峰值 <80% 且有复用 |
|
|
33
|
+
| 10 | 基本块选型(stride 消除) | stride 搬移效率低于连续搬移——重构数据布局/选连续大粒度搬移指令 | 搬移指令序列含高 stride |
|
|
34
|
+
| 11 | 原地消费 | UB 内数据可直接消费的不搬出再搬入 | 搬入搬出成对出现且无中间消费方 |
|
|
35
|
+
|
|
36
|
+
## 适用前提
|
|
37
|
+
|
|
38
|
+
- verdict 命中 L1_MTE2_BOUND(severity 分档决定投入深度);
|
|
39
|
+
- **反证条目必须先读**:true-bandwidth-saturation 命中 → 只走 1/4/5/7(数据量侧);
|
|
40
|
+
fake-mte2-small-packet 命中 → 优先 2/3/8(组织侧);
|
|
41
|
+
- MC² 算子先过 L3_MTE2_POLLUTED:污染为 true 时本卡全部机制无效,转 mc2.md 通信掩盖。
|
|
42
|
+
|
|
43
|
+
## 验证
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# 同口径性能 + 搬运指标复采
|
|
47
|
+
# 期望:mte2_active_bw 上升(组织侧修复)或 mte2_instructions 下降(数据量侧修复)
|
|
48
|
+
python3 ../ops-verdict/scripts/verdict.py --rules ../ops-verdict/rules/L1-single-core.yaml \
|
|
49
|
+
--csv <new.csv> --scalar mte2_active_bw_pct_of_peak=<复测值> --soc <soc> -o round-N.verdict.json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 回滚条件
|
|
53
|
+
|
|
54
|
+
噪声带内 / 精度失败 / L2 命中率反而下降(CacheMode 误用污染)→ revert。
|
|
55
|
+
|
|
56
|
+
## 精度风险
|
|
57
|
+
|
|
58
|
+
数据搬运类机制默认语义保持;改 dtype(如 fp16 计算)属语义变更,须精度代价标注。
|
|
59
|
+
|
|
60
|
+
## 模板资产
|
|
61
|
+
|
|
62
|
+
- `ops-family:references/common/datacopy_optimization_design.md`(非对齐/小批量多搬;设计参考,无货架代码)
|
|
63
|
+
- `ops-family:references/common/ub_resident_design.md`(常驻复用 + Bank 规避;设计参考,无货架代码)
|
|
64
|
+
- matmul 族 fullload / scale_coalescing / mte2_preload:`ops-family:references/matmul/guide.md`
|
|
65
|
+
(均为设计参考——matmul 族当前无货架模板代码)
|
|
66
|
+
- 可拷贝货架模板见 conversion(11 个 transpose .template)与 broadcast(code/ 5 个
|
|
67
|
+
.h/.cpp)两族;reduce 族 Softmax 模板 ×8(`references/reduce/templates/dav310/`)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# 机制索引(optimize-index)
|
|
2
|
+
|
|
3
|
+
> 消费时机:verdict 判定完成后按 findings[].mechanism_refs 路由,只加载命中的单张卡。
|
|
4
|
+
> **证据先行:没有 verdict 不加载机制卡**(禁止先看机制猜瓶颈)。
|
|
5
|
+
|
|
6
|
+
## 索引表(rule_id → 机制卡)
|
|
7
|
+
|
|
8
|
+
| rule_id | 机制卡 | 一句话机制 |
|
|
9
|
+
|---------|--------|-----------|
|
|
10
|
+
| L1_MTE2_BOUND | [data-copy.md](data-copy.md) | 真饱和→数据量/复用;假 bound→对齐/合并小搬运 |
|
|
11
|
+
| L1_MTE3_BOUND | [data-copy.md](data-copy.md) | 搬出侧同二分 |
|
|
12
|
+
| L1_FIXP_BOUND | [data-copy.md](data-copy.md) | 512B 地址对齐 |
|
|
13
|
+
| L1_VEC_BOUND | [api-usage.md](api-usage.md) + [ascendc-regbase-vf.md](ascendc-regbase-vf.md)(A5 深度档) | UB 融合/减 Cast/融合指令;VF 范式 |
|
|
14
|
+
| L1_CUBE_BOUND | [ascendc-tiling.md](ascendc-tiling.md) + ops-family matmul | tiling / L1 复用 / L0C 累加 |
|
|
15
|
+
| L1_SCALAR_BOUND | [api-usage.md](api-usage.md) | 标量削减六法 |
|
|
16
|
+
| L1_LATENCY_SYNC_SUSPECT | [pipeline.md](pipeline.md) | Double Buffer / 同步删减 |
|
|
17
|
+
| L1_SERIAL_NO_OVERLAP | [pipeline.md](pipeline.md) | 双缓冲全形态 + workspace 份数 + AIC:AIV 配比 |
|
|
18
|
+
| L2_CORE_TAIL / L2_IMBALANCE_* | [ascendc-tiling.md](ascendc-tiling.md) | 尾块均衡 / swat / NUMA 偏斜处置 |
|
|
19
|
+
| L2_UNDERUTILIZATION | [ascendc-tiling.md](ascendc-tiling.md) | Block Dim 提升(头开销权衡) |
|
|
20
|
+
| L2_HEAD_OVERHEAD | [api-usage.md](api-usage.md) | 减核 / 缩 TilingData / TPipe 外置 |
|
|
21
|
+
| L3_MC2_*(全档) | [mc2.md](mc2.md) | Local Matmul 首选 + 通信掩盖 + 膨胀控制 |
|
|
22
|
+
| L3 配平环节 | [mc2-balancing.md](mc2-balancing.md) | TilingData 驱动系统搜索(四剪枝 + Top-N) |
|
|
23
|
+
| L3_MTE2_POLLUTED | [mc2.md](mc2.md) | 单核访存机制无效,改道通信掩盖 |
|
|
24
|
+
| L3_RANK_IMBALANCE | [mc2.md](mc2.md) | 跨 rank 长尾排查 |
|
|
25
|
+
| L0_ICACHE_MISS | [api-usage.md](api-usage.md) | 代码布局/分支整理 |
|
|
26
|
+
| L0_L2_LOW_HIT | [memory-hierarchy.md](memory-hierarchy.md) | CacheMode 二分 + 工作集切分 |
|
|
27
|
+
| L0_STALL_DOMINANT | [pipeline.md](pipeline.md) | stall 枚举 → 对应流水机制(M2 细化) |
|
|
28
|
+
|
|
29
|
+
## 跨 DSL 原语对照(六原语 × DSL)
|
|
30
|
+
|
|
31
|
+
| 原语 | Ascend C | CATLASS | Triton | TileLang | SHMEM/MC² |
|
|
32
|
+
|------|---------|---------|--------|----------|-----------|
|
|
33
|
+
| 双缓冲 | InitBuffer(q,2,sz) / ping-pong+event | STAGES 参数 | num_stages + UB 余量 | DB-ANALYSIS | 通算 ping-pong(CrossCore) |
|
|
34
|
+
| 流水掩盖 | 事件同步 MTE/计算 | pipeline policy | 软件流水 | schedule 原语 | 通信-计算交错 |
|
|
35
|
+
| 同步降本 | 删冗余 SetFlag/WaitFlag | — | barrier 合并 | — | flag 粒度放宽 |
|
|
36
|
+
| 分核均衡 | blockDim/尾块/swat | BlockScheduler-Swizzle | 网格切分 | tile 划分 | rank 分片 |
|
|
37
|
+
| 存储层级 | UB/L1/L0 驻留 | L1/L0TileShape | — | — | 远端 window 驻留 |
|
|
38
|
+
| 标量削减 | Muls/常量折叠/外提 | — | constexpr 化 | — | — |
|
|
39
|
+
|
|
40
|
+
## 已知覆盖缺口(降级策略见 SKILL.md)
|
|
41
|
+
|
|
42
|
+
- FA 类混合绑核(AIC+AIV CrossCore mode2):跨 j 迭代 GM buffer ping-pong、flag 粒度
|
|
43
|
+
放宽、GM→L1 滚动预取只有通用原理,实施细节自行论证 + 提高验证强度;
|
|
44
|
+
- MoE routing / key-value sort / gather-scatter / histogram(SIMT 不规则读写);
|
|
45
|
+
- Double Buffer 非 TQue 形态(ping-pong event id + prologue/drain 自行论证)。
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# 机制卡:MC² 流水配平(TilingData 驱动的系统搜索)
|
|
2
|
+
|
|
3
|
+
> 对应判定规则:L3 各 MC² 档位的配平环节。内容:长短块排布 + AIC/AIV 分离架构 + 统一搜索算法(多卡实测沉淀)。
|
|
4
|
+
|
|
5
|
+
## AIC/AIV 分离架构与 Pattern
|
|
6
|
+
|
|
7
|
+
MC² 算子 = AIC(matmul 计算)+ AIV(UDMA/shmem 跨卡通信)分离架构,同步方向由执行
|
|
8
|
+
顺序决定:
|
|
9
|
+
|
|
10
|
+
| Pattern | 执行顺序 | 同步方向 |
|
|
11
|
+
|---------|---------|---------|
|
|
12
|
+
| A(如 alltoall + matmul) | AIV 先通信 → AIC 等数据 → 计算 | AIV `CrossCoreSetFlag` → AIC `CrossCoreWaitFlag` |
|
|
13
|
+
| B(如 matmul + alltoall) | AIC 先计算 → AIV 等完成 → BarrierAll → 通信 | AIC `NotifyComputeComplete` → AIV `WaitComputeComplete` |
|
|
14
|
+
|
|
15
|
+
配平改变的是**长短块排布**(长块 = 大 M 的计算块,短块 = 小 M 的计算块),使计算块的
|
|
16
|
+
耗时分布与通信块节奏互补。
|
|
17
|
+
|
|
18
|
+
## 统一搜索算法(禁止经验值交付)
|
|
19
|
+
|
|
20
|
+
输入:TilingData(baseM/baseN/baseK/usedCoreNum,长短块各自)+ 隔离测试 R 值 +
|
|
21
|
+
配平比 ρ = max(R, 1/R)(长块与短块的 M 大小之比)。
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
搜索空间:长块 M ∈ {候选集},短块 M = 长块 M / ρ(对齐修正),块数切分方案
|
|
25
|
+
四条剪枝(可行性):
|
|
26
|
+
① 核利用率:usedCoreNum × 块数覆盖不下降
|
|
27
|
+
② L1/L0 容量:baseM/baseN/baseK 组合不超片上预算
|
|
28
|
+
③ 膨胀下界:计算膨胀 + 通信膨胀的估算不超过收益
|
|
29
|
+
④ 对齐约束:M/N/K 对齐要求(512B / 分形对齐)
|
|
30
|
+
输出:Top-N 候选 → 逐个实测(tileCnt 扫描)→ 按跨 rank max 口径择优
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**执行载体**:`ops-mechanism/scripts/mc2_search.py`——上述算法的脚本化:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
python3 skills/ops-mechanism/scripts/mc2_search.py \
|
|
37
|
+
--m 4096 --base-n 128 --base-k 64 --used-core-num 16 \
|
|
38
|
+
--r-value 2.4 --soc a5 -o candidates.json
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
- 容量剪枝②读 `ops-verdict/references/soc-spec.yaml`(不硬编码);
|
|
42
|
+
对齐剪枝④分级:分形对齐 16(Cube 硬约束)剪枝,512B 对齐(搬运推荐态,
|
|
43
|
+
DataCopyPad 场景可接受)降级为候选上的 warn 记录;
|
|
44
|
+
- 输出 Top-N 候选(每候选带块布局 / 容量占用计算 / warn)+ 全部剪枝记录
|
|
45
|
+
(可审计证据:剪枝记录本身是证据);
|
|
46
|
+
- 排序 = 实测顺序不是最终结论:每候选仍须逐个实测(同口径 task-based、
|
|
47
|
+
跨 rank max、delta_compare 三段结论)后择优;
|
|
48
|
+
- **配平方案卡必须附本搜索器输出**(候选清单 + 剪枝记录)——经验值交付
|
|
49
|
+
的禁令自此有执行载体。
|
|
50
|
+
|
|
51
|
+
## TilingData 依赖(硬约束 MC-1)
|
|
52
|
+
|
|
53
|
+
host 代码须打印 baseM/baseN/baseK/usedCoreNum(含长块/短块各自的 tiling data)。
|
|
54
|
+
未打印 → 在源码副本启用 PrintTilingData → 重新运行采集。缺这些数据核利用率计算
|
|
55
|
+
失真、剪枝失效。
|
|
56
|
+
|
|
57
|
+
## 长短块排布
|
|
58
|
+
|
|
59
|
+
- R < 1(通信侧慢):短块多、长块少——让计算碎片塞进通信间隙;
|
|
60
|
+
- R > 1(计算侧慢):长块多——让通信(快)在长计算块间流水;
|
|
61
|
+
- ρ 是理想比,实际排布按 Top-N 实测修正(估算 ≠ 实测,膨胀会吃掉理论收益)。
|
|
62
|
+
|
|
63
|
+
## 验证
|
|
64
|
+
|
|
65
|
+
每候选实测必须同口径(同一 msprof task-based 采集、同 warmup/loops、跨 rank max),
|
|
66
|
+
用 delta_compare 出三段结论;配平收益核算用隔离测试的 T_comm/T_compute 代入
|
|
67
|
+
掩盖率公式。
|
|
68
|
+
|
|
69
|
+
## 回滚
|
|
70
|
+
|
|
71
|
+
- 候选劣化(跨 rank max 口径)→ 弃用并记录(搜索的负结果也是证据);
|
|
72
|
+
- tiling 改动后 device fault → 回滚确认基线可复跑 → -g 重编 + msSanitizer 定位 →
|
|
73
|
+
缩小改动粒度(baseK 128→192 而非 256)→ 核对深度/容量联动字段。
|
|
74
|
+
|
|
75
|
+
## 精度风险
|
|
76
|
+
|
|
77
|
+
块切分改变累加分块顺序 → 语义变更类:边界值 + 大 shape + 异常位型验证用例必附。
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# 机制卡:MC² 通算融合优化(Local Matmul 首选 + 通信掩盖 + 膨胀控制)
|
|
2
|
+
|
|
3
|
+
> 对应判定规则:L3_MC2_BALANCED / COMPUTE_BOUND / STRONG_COMPUTE / COMM_BOUND /
|
|
4
|
+
> STRONG_COMM / L3_MTE2_POLLUTED / L3_RANK_IMBALANCE。
|
|
5
|
+
> 内容沉淀自 MC² 通算融合调优实践(指标定义 / Bound 判定 / Local Matmul /
|
|
6
|
+
> 流水配平 / 膨胀分析),本卡将其机制决策浓缩为可执行顺序。
|
|
7
|
+
> **DSL 适用域**:本卡实施细节以 **Ascend C** 为准;Triton / CATLASS / TileLang 的等价原语与实施差异见 [index.md 跨 DSL 原语对照表](index.md#跨-dsl-原语对照六原语--dsl)——跨 DSL 实施时以该表为路由、对应 DSL 专项文档为深度参考,不按本卡字面照搬。
|
|
8
|
+
|
|
9
|
+
## 策略优先级(与 R 值无关的固定顺序)
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
① Local Matmul(首选,不依赖 Bound 判定)
|
|
13
|
+
本 rank 数据无需通信 → 独立计算与通信重叠。任何 R 档位都先做这一步。
|
|
14
|
+
② 流水配平(在 ① 基础上叠加)
|
|
15
|
+
由 R 值与 TilingData 驱动的系统搜索(见 mc2-balancing.md),禁止 1-2 个经验值交付。
|
|
16
|
+
③ matmul 计算效率(仅计算 Bound,优先级最低,正交可叠加)
|
|
17
|
+
转 ops-family:references/matmul/guide.md(pingpong/streamk/fullload…)。
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### ① 的模式选型(沉淀自 MC² 通算融合实践)
|
|
21
|
+
|
|
22
|
+
| 执行顺序 | 推荐模式 | 机制 |
|
|
23
|
+
|---------|---------|------|
|
|
24
|
+
| 通信后计算(Pattern A,如 alltoall+matmul) | **前置独立** | LocalMatmul 先执行,与首次通信重叠隐藏通信延迟 |
|
|
25
|
+
| 通信后计算且通信量小 / Local 占比小 | 融合 | self rank 在通信块循环内一起算(独立计算收益不大) |
|
|
26
|
+
| 计算后通信(Pattern B,如 matmul+alltoall) | **后置独立** | 通信块只算远程 rank,Local 后置不冲突 |
|
|
27
|
+
| 计算后通信且通信量小 | 融合 | 同上 |
|
|
28
|
+
|
|
29
|
+
**Local matmul 连续性约束**:前置/后置模式下 Local 数据段的 M 维切分必须连续
|
|
30
|
+
(否则 WaitFlag 顺序与数据顺序错位)。
|
|
31
|
+
|
|
32
|
+
## 各 R 档位的机制方向
|
|
33
|
+
|
|
34
|
+
| 档位 | R | 机制方向 |
|
|
35
|
+
|------|---|---------|
|
|
36
|
+
| 强通信 | <0.5 | 从短块出发搜索,最大化 tileCnt(计算块尽量小、轮次尽量多) |
|
|
37
|
+
| 通信 | <1 | 用计算掩盖通信,增大 tileCnt |
|
|
38
|
+
| 平衡 | 0.9~1.1 | 等分切分即最优,配平空间小 |
|
|
39
|
+
| 计算 | 1.1~2 | 用通信掩盖计算,增大 tileCnt |
|
|
40
|
+
| 强计算 | >2 | 增大 tileCnt 收益极小,倾向**少切分**(tileCnt 小、tile 大)+ 叠加 ③ |
|
|
41
|
+
|
|
42
|
+
## MTE2 污染(L3_MTE2_POLLUTED 命中)的路由
|
|
43
|
+
|
|
44
|
+
CrossCoreWaitFlag 挂在 AIC MTE2 流水线等待 AIV 通信 → aic_mte2_ratio 含通信等待空转:
|
|
45
|
+
|
|
46
|
+
- **单核访存机制全部无效**(判定引擎已禁用 L1_MTE2_BOUND,机制路由改道本卡);
|
|
47
|
+
- 有效方向 = 消除/减少通信等待本身:Local Matmul、配平(减少互等)、Pattern A/B 的
|
|
48
|
+
同步粒度(CrossCore flag 粒度放宽 —— 实施细节需自行论证并提高验证强度)。
|
|
49
|
+
|
|
50
|
+
## 膨胀分析(切分参数变更时必做)
|
|
51
|
+
|
|
52
|
+
切分变化同时引入两类膨胀,**最小化瓶颈方膨胀**(被掩盖方膨胀影响小):
|
|
53
|
+
|
|
54
|
+
| 膨胀类型 | 表现 | 判读 |
|
|
55
|
+
|---------|------|------|
|
|
56
|
+
| 计算膨胀 | 流水断流 / 用核不满 / mac_ratio 下降 | 每块 matmul 效率损失(尾块/小 tile) |
|
|
57
|
+
| 通信膨胀 | 头开销分摊变差 / 带宽下降 | 分片数增加 → 单片通信效率下降 |
|
|
58
|
+
|
|
59
|
+
配平搜索的剪枝规则(四条,见 mc2-balancing.md)已内置膨胀可行性判断;Top-N 候选
|
|
60
|
+
必须**实测**(隔离测试已产出 T_comm/T_compute,核算成本极低)。
|
|
61
|
+
|
|
62
|
+
## 性能指标核算(每方案必选输出)
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
加速比 = 融合前耗时(tileCnt=1)/ 融合后耗时
|
|
66
|
+
掩盖率 = (融合前耗时 − 融合后耗时) / min(T_compute, T_comm) # 上限 1.0
|
|
67
|
+
跨 rank:T_task = max(rank 稳态均值) # 木桶效应
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 前置数据硬约束
|
|
71
|
+
|
|
72
|
+
| # | 约束 |
|
|
73
|
+
|---|------|
|
|
74
|
+
| MC-1 | 缺 TilingData(baseM/baseN/baseK/usedCoreNum,含长短块)不得做配平分析;host 未打印则在源码副本启用 PrintTilingData 补采 |
|
|
75
|
+
| MC-2 | 配平方案必须系统搜索(四剪枝 + Top-N 实测),禁止经验值直接交付 |
|
|
76
|
+
| MC-3 | 隔离测试在源码副本进行,产物保留、代码副本丢弃 |
|
|
77
|
+
| MC-4 | 一切性能数据出自 msprof Task Duration(task-based),禁 host 计时 |
|
|
78
|
+
|
|
79
|
+
## 验证与回滚
|
|
80
|
+
|
|
81
|
+
- 精度:全量 case 工程容差(通信+计算双路径都要过);
|
|
82
|
+
- 性能:跨 rank max 口径对比(delta_compare 会拒绝跨 rank 口径不一致的对比);
|
|
83
|
+
- 回滚:配平搜索候选逐个实测,劣化候选直接弃用(搜索本身就是多候选实测,负结果
|
|
84
|
+
记入报告「保留与回滚清单」——它是瓶颈证据的组成部分)。
|
|
85
|
+
|
|
86
|
+
## 精度风险
|
|
87
|
+
|
|
88
|
+
Local Matmul 是数学等价改造(语义保持);配平改变归约/累加分块顺序时属语义变更
|
|
89
|
+
(浮点结合律),须边界值/大 shape 验证。
|
|
90
|
+
|
|
91
|
+
## 性能抖动诊断(L3_RANK_IMBALANCE 命中的下钻,蒸馏)
|
|
92
|
+
|
|
93
|
+
op_summary 的 Device_id 列识别多卡参与:同卡多行 = 多轮执行,不同卡同序号行 =
|
|
94
|
+
同轮次。**时间维度**(同卡跨轮次)与**空间维度**(同轮次跨卡)分别分析
|
|
95
|
+
aiaiv/mte 指标的离散度:
|
|
96
|
+
- 时间抖动大(同卡 p95≫p50)→ 系统噪声(DVFS/同卡负载),加轮次取稳态而非
|
|
97
|
+
追机制;
|
|
98
|
+
- 空间抖动大(同轮跨卡差异)→ 真 rank 不均衡,走配平/Local Matmul 机制。
|
|
99
|
+
(snapshot 的 p50/p95 分布字段 + delta_compare 抖动诊断段已承载该数据。)
|
|
100
|
+
|
|
101
|
+
## 模板资产
|
|
102
|
+
|
|
103
|
+
`ops-family:references/mc2/guide.md`(3 策略 + 模板代码)。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 机制卡:存储层次优化(L2/UB/L1/L0 复用)
|
|
2
|
+
|
|
3
|
+
> 对应判定规则:L1_MTE2_BOUND(真饱和档)、L0_L2_LOW_HIT、L1_VEC_BOUND(UB 往返类)。
|
|
4
|
+
> 内容沉淀自存储层次调优一线实践(L2 命中率判读、UB 常驻复用设计)。
|
|
5
|
+
> **DSL 适用域**:本卡实施细节以 **Ascend C** 为准;Triton / CATLASS / TileLang 的等价原语与实施差异见 [index.md 跨 DSL 原语对照表](index.md#跨-dsl-原语对照六原语--dsl)——跨 DSL 实施时以该表为路由、对应 DSL 专项文档为深度参考,不按本卡字面照搬。
|
|
6
|
+
|
|
7
|
+
## 机制清单(按层次)
|
|
8
|
+
|
|
9
|
+
| 层次 | 机制 | 适用证据 | 关键约束 |
|
|
10
|
+
|------|------|---------|---------|
|
|
11
|
+
| L2 | `SetL2CacheHint(CacheMode::CACHE_MODE_NORMAL)` | L2 hit <50% 且数据有复用 | — |
|
|
12
|
+
| L2 | 只读一次数据 `CACHE_MODE_DISABLE` | 流式数据污染 L2 | 与上一条二分:有复用开 NORMAL,无复用 DISABLE |
|
|
13
|
+
| L2 | 工作集切分(访问序改造) | 大工作集整体 miss | L2 参数随 SoC 变化,须重算容量 |
|
|
14
|
+
| L1 | B 矩阵/小侧矩阵驻留(fullload) | 小侧 ≤L1/2 + 对侧 T≥2 + 真 MTE2 bound | L1 预算 = 分形 + ping-pong 缓冲 |
|
|
15
|
+
| L0 | L0C 累加(多 matmul 累加不回写) | CUBE bound + Fixpipe 高 | 累加链精度(语义变更类) |
|
|
16
|
+
| UB | tile/loop 间常驻复用(TBuf 替代重复 MTE2) | 多 tile 重复搬同一数据 | UB 容量 + Bank 冲突规避(padding 32B 整数倍) |
|
|
17
|
+
| 寄存器 | 中间值留寄存器/areg | 短生命周期中间量 UB 往返 | 寄存器压力与 spill 反证 |
|
|
18
|
+
|
|
19
|
+
## Bank 冲突规避(常驻复用的伴生问题)
|
|
20
|
+
|
|
21
|
+
| 冲突类型 | 判定字段 | 修法 |
|
|
22
|
+
|---------|---------|------|
|
|
23
|
+
| bankgroup | vec_bankgroup_cflt_ratio >3% | 修改 repeatStride/blockStride |
|
|
24
|
+
| bank | vec_bank_cflt_ratio >3% | UB tensor 起始地址 + 32B 整数倍 padding |
|
|
25
|
+
| 资源 | vec_resc_cflt_ratio >5% | 错开 Vector/Cube 调度 |
|
|
26
|
+
| MTE | vec_mte_cflt_ratio >3% | 搬运与计算时序调整 |
|
|
27
|
+
|
|
28
|
+
## 验证
|
|
29
|
+
|
|
30
|
+
L2Cache.csv 复采(hit rate 变化)+ verdict 复跑;驻留类改造须核对 L1/L0/UB 三级预算
|
|
31
|
+
表(改一处动全身——跨层耦合)。
|
|
32
|
+
|
|
33
|
+
## 回滚
|
|
34
|
+
|
|
35
|
+
hit rate 未升反降 / UB 容量挤压导致 tile 变小引起 MTE 次数上升 / 精度失败 → revert。
|
|
36
|
+
|
|
37
|
+
## 模板资产
|
|
38
|
+
|
|
39
|
+
`ops-family:references/common/ub_resident_design.md`;
|
|
40
|
+
matmul fullload:`ops-family:references/matmul/guide.md`。
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# 机制卡:流水优化(Double Buffer / 流水掩盖 / 同步降本)
|
|
2
|
+
|
|
3
|
+
> 对应判定规则:L1_SERIAL_NO_OVERLAP、L1_LATENCY_SYNC_SUSPECT、L1_FIXP_BOUND(气泡相关)、
|
|
4
|
+
> L0_STALL_DOMINANT。跨 DSL 原语对照见文末。
|
|
5
|
+
>
|
|
6
|
+
> 内容沉淀自 Ascend C 双缓冲与流水判读的一线实践,跨 DSL 原语对照见文末。
|
|
7
|
+
|
|
8
|
+
## 原理
|
|
9
|
+
|
|
10
|
+
单缓冲下 MTE 搬运与计算串行:pipe busy 求和 ≈100% 但各 pipe 均不满 → 「串行无重叠指纹」
|
|
11
|
+
(判定规则 L1_SERIAL_NO_OVERLAP 命中即此形态)。双缓冲把 tile 搬运与上一 tile 计算
|
|
12
|
+
重叠:理想收益上界 ≈ max(t_copy, t_compute) / (t_copy + t_compute)。
|
|
13
|
+
|
|
14
|
+
## 适用前提
|
|
15
|
+
|
|
16
|
+
- verdict 命中 L1_SERIAL_NO_OVERLAP 或 LATENCY/SYNC 可疑 + 反证「串行指纹」;
|
|
17
|
+
- UB/L1 容量预算:双缓冲 = 2×tile 缓存,须核对 TilingData 的 buffer 规划;
|
|
18
|
+
- 循环内无跨 tile 数据依赖(有依赖需先做依赖分析或改滚动窗口)。
|
|
19
|
+
|
|
20
|
+
## 实施形态(分场景)
|
|
21
|
+
|
|
22
|
+
| 场景 | 形态 | 关键点 |
|
|
23
|
+
|------|------|--------|
|
|
24
|
+
| TQue 标准流水 | `InitBuffer(queue, 2, size)` | bufNum=2;EnQue/DeQue 配对;循环内无多余 Sync |
|
|
25
|
+
| 非 TQue(裸 MTE + 事件) | ping-pong 两组 UB + event id | 须自行论证 prologue/drain 段(已知知识缺口,验证强度↑) |
|
|
26
|
+
| Cube-Vector 混合 | workspace 份数 2→4 | 减少 Cube/Vector 互等(GroupedMatmul 案例 154.2→131.8us) |
|
|
27
|
+
| AIC:AIV 配比 | 1:1 → 1:2 | Cube/Vector 耗时严重不匹配时(同案例 218.1→154.2us,收益最大) |
|
|
28
|
+
| 同步删减 | 删除经依赖证明冗余的 SetFlag/WaitFlag/barrier | 每删一处必须给出依赖论证(精度/正确性风险点) |
|
|
29
|
+
|
|
30
|
+
## 验证(每轮门禁)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# ① 精度全量(工程现有测试,禁止自创容差)
|
|
34
|
+
bash run.sh --verify-all
|
|
35
|
+
# ② 同口径性能(与基线同 timing_method/warmup/repeat)
|
|
36
|
+
bash run.sh --perf # event 口径
|
|
37
|
+
# ③ 机制生效证据:DoubleBuffer 生效 = MTE 与计算重叠比例 >30%(部分 10-30%,未生效 <5%)
|
|
38
|
+
python3 ../ops-verdict/scripts/verdict.py --rules ../ops-verdict/rules/L1-single-core.yaml \
|
|
39
|
+
--csv <new PipeUtilization.csv> --soc <soc> -o round-N.verdict.json
|
|
40
|
+
# 期望:__pipe_sum_mean 明显下降或 L1_SERIAL_NO_OVERLAP 转为 NOT_HIT
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**重叠比例的直接度量**:上板有 A5 PipeTimeline 或
|
|
44
|
+
仿真路径(cannsim)时,用 trace 工具替代间接指纹:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# 仿真路径:collect_sim.sh 采 trace → 重叠度标量
|
|
48
|
+
bash ../ops-collect/scripts/collect_sim.sh --exe <exe> --soc-version Ascend950 --output ./prof/sim
|
|
49
|
+
python3 ../ops-verdict/scripts/trace_bubble.py --trace-dir ./prof/sim/cannsim_*/report/ \
|
|
50
|
+
--scalar-out overlap_scalars.json
|
|
51
|
+
# overlap_pct 即「MTE×计算 busy 交集/并集」的实测值(本卡阈值的直接对照):
|
|
52
|
+
# >30% 生效 | 10-30% 部分生效 | <5% 未生效
|
|
53
|
+
# KEEP 结论附 overlap_pct 前后对照(机制生效判读,而非仅 speedup)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
上板无 trace 设施时,`__pipe_sum_mean` 间接指纹照旧(medium 置信度如实保留),
|
|
57
|
+
报告标注「重叠度为间接推断」。
|
|
58
|
+
|
|
59
|
+
## 无 Bound 形态(NO_BOUND_FOUND / 全 pipe 低占用,沉淀自一线调优实践)
|
|
60
|
+
|
|
61
|
+
各单元利用率均不高、无明显单一瓶颈时,流水化优先于单点优化:
|
|
62
|
+
|
|
63
|
+
| # | 机制 | 说明 |
|
|
64
|
+
|---|------|------|
|
|
65
|
+
| 1 | PingPong 粒度调优 | 控制每次搬入量,确保**计算时间 ≥ 搬运时间**(否则 DB 反而暴露搬运瓶颈) |
|
|
66
|
+
| 2 | MMAD→Fixpipe UnitFlag 同步 | 用 UnitFlag 信号替代显式 Barrier(MMAD 输出→Fixp 输入硬依赖场景) |
|
|
67
|
+
| 3 | 减少单次搬运量(渐进式) | 边算边搬不积压——避免「全量搬完才开始算」 |
|
|
68
|
+
| 4 | Preload 窗口 | 当前计算未完成时启动下一批搬入;窗口大小匹配计算耗时(搬完算没完 = 白搬) |
|
|
69
|
+
| 5 | 指令提早发射 | 搬移指令不等当前计算完全结束;计算流水线填充 |
|
|
70
|
+
| 6 | Vec 融合减重复搬运 | 同一数据多次搬入场景:寄存器内连续处理 + 驻留期间全量消费 |
|
|
71
|
+
|
|
72
|
+
trace 判读(trace_bubble):MTE2 全在前 VECTOR 全在后 = DB 未生效;交替出现
|
|
73
|
+
= 流水健康。tiling 修正:tile 粒度匹配 PingPong 分段;DB 使能时实际可用 UB ÷2。
|
|
74
|
+
|
|
75
|
+
## 回滚条件
|
|
76
|
+
|
|
77
|
+
- speedup < 1.05(噪声带内)→ 加采样轮次复测,仍带内 → revert;
|
|
78
|
+
- 精度任一 case fail → revert(该轮性能数字不进报告);
|
|
79
|
+
- 容量联动被破坏(tile 改动后 device fault)→ revert + 缩小改动粒度(如 baseK 128→192
|
|
80
|
+
而非直接 256)+ msSanitizer 定位。
|
|
81
|
+
|
|
82
|
+
## 精度风险分级
|
|
83
|
+
|
|
84
|
+
- 语义保持类:双缓冲、搬运合并、调度顺序、同步删减(须依赖论证)→ 常规门禁。
|
|
85
|
+
- 语义变更类:归约顺序改变(浮点结合律)→ 额外边界值/大 shape 验证用例。
|
|
86
|
+
|
|
87
|
+
## 跨 DSL 原语对照(双缓冲)
|
|
88
|
+
|
|
89
|
+
| DSL | 双缓冲实现 |
|
|
90
|
+
|-----|-----------|
|
|
91
|
+
| Ascend C | `InitBuffer(queue, 2, size)`(TQue)/ ping-pong 两组 UB + event id(非 TQue) |
|
|
92
|
+
| CATLASS | `MmadAtlasA2Pingpong` STAGES 参数 |
|
|
93
|
+
| Triton-Ascend | UB 留 50% 余量 + num_stages |
|
|
94
|
+
| TileLang | DB-ANALYSIS 分析后实施 |
|
|
95
|
+
| SHMEM/MC² | 通信-计算 ping-pong(CrossCore flag 同步,见 mc2.md) |
|