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
|
@@ -0,0 +1,149 @@
|
|
|
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
|
+
// Ascend C Kernel 直调样例 - Add 算子(Host + Main 入口)
|
|
13
|
+
// ============================================================================
|
|
14
|
+
//
|
|
15
|
+
// 文件结构说明:
|
|
16
|
+
// op_kernel/add_custom_tiling.h - Tiling 常量 + 结构体(纯 C/C++,kernel 和 host 共用)
|
|
17
|
+
// op_kernel/add_custom_kernel.asc - Kernel 实现(KernelAdd 类 + add_custom_kernel 核函数入口)
|
|
18
|
+
// op_host/add_custom.asc - 本文件:Host 端代码 + main 入口(引用 op_kernel/ 下的文件)
|
|
19
|
+
//
|
|
20
|
+
// [MODIFY] 创建新算子时的修改点(搜索 [MODIFY] 标记):
|
|
21
|
+
// 1. KernelCall 中的函数名和参数
|
|
22
|
+
// 2. Tiling 计算逻辑
|
|
23
|
+
// 3. 输入/输出数量
|
|
24
|
+
// 4. CMakeLists.txt 中的目标名
|
|
25
|
+
// ============================================================================
|
|
26
|
+
|
|
27
|
+
#include <cstdint>
|
|
28
|
+
#include <iostream>
|
|
29
|
+
#include <vector>
|
|
30
|
+
#include "acl/acl.h"
|
|
31
|
+
#include "../op_kernel/add_custom_tiling.h"
|
|
32
|
+
#include "data_utils.h"
|
|
33
|
+
|
|
34
|
+
// 引用拆出的纯 kernel 文件(包含 kernel_operator.h)
|
|
35
|
+
#include "../op_kernel/add_custom_kernel.asc"
|
|
36
|
+
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Host 端代码 - 运行在 CPU 上
|
|
39
|
+
// ============================================================================
|
|
40
|
+
|
|
41
|
+
struct ArgInfo {
|
|
42
|
+
std::string fileName;
|
|
43
|
+
size_t length;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// [PATTERN] KernelCall 封装 - 处理完整的核函数调用流程
|
|
47
|
+
// [MODIFY] 修改函数名和参数
|
|
48
|
+
void KernelCall(uint32_t blockNum, aclrtStream stream,
|
|
49
|
+
std::vector<ArgInfo> &inputsInfo, std::vector<ArgInfo> &outputsInfo,
|
|
50
|
+
uint8_t *tilingData)
|
|
51
|
+
{
|
|
52
|
+
std::vector<uint8_t *> inputHost(inputsInfo.size());
|
|
53
|
+
std::vector<uint8_t *> inputDevice(inputsInfo.size());
|
|
54
|
+
std::vector<uint8_t *> outputHost(outputsInfo.size());
|
|
55
|
+
std::vector<uint8_t *> outputDevice(outputsInfo.size());
|
|
56
|
+
uint8_t *tilingDevice = nullptr;
|
|
57
|
+
|
|
58
|
+
aclrtMalloc((void **)&tilingDevice, sizeof(AddTilingData), ACL_MEM_MALLOC_HUGE_FIRST);
|
|
59
|
+
aclrtMemcpy(tilingDevice, sizeof(AddTilingData), tilingData,
|
|
60
|
+
sizeof(AddTilingData), ACL_MEMCPY_HOST_TO_DEVICE);
|
|
61
|
+
|
|
62
|
+
for (size_t i = 0; i < inputsInfo.size(); i++) {
|
|
63
|
+
aclrtMallocHost((void **)&inputHost[i], inputsInfo[i].length);
|
|
64
|
+
aclrtMalloc((void **)&inputDevice[i], inputsInfo[i].length, ACL_MEM_MALLOC_HUGE_FIRST);
|
|
65
|
+
ReadFile(inputsInfo[i].fileName, inputsInfo[i].length, inputHost[i], inputsInfo[i].length);
|
|
66
|
+
aclrtMemcpy(inputDevice[i], inputsInfo[i].length, inputHost[i],
|
|
67
|
+
inputsInfo[i].length, ACL_MEMCPY_HOST_TO_DEVICE);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
for (size_t i = 0; i < outputsInfo.size(); i++) {
|
|
71
|
+
aclrtMallocHost((void **)&outputHost[i], outputsInfo[i].length);
|
|
72
|
+
aclrtMalloc((void **)&outputDevice[i], outputsInfo[i].length, ACL_MEM_MALLOC_HUGE_FIRST);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// [MODIFY] kernel 入口函数名
|
|
76
|
+
add_custom_kernel<<<blockNum, nullptr, stream>>>(
|
|
77
|
+
inputDevice[0], inputDevice[1],
|
|
78
|
+
outputDevice[0], tilingDevice);
|
|
79
|
+
aclrtSynchronizeStream(stream);
|
|
80
|
+
|
|
81
|
+
aclrtFree(tilingDevice);
|
|
82
|
+
for (size_t i = 0; i < outputsInfo.size(); i++) {
|
|
83
|
+
aclrtMemcpy(outputHost[i], outputsInfo[i].length, outputDevice[i],
|
|
84
|
+
outputsInfo[i].length, ACL_MEMCPY_DEVICE_TO_HOST);
|
|
85
|
+
WriteFile(outputsInfo[i].fileName, outputHost[i], outputsInfo[i].length);
|
|
86
|
+
aclrtFree(outputDevice[i]);
|
|
87
|
+
aclrtFreeHost(outputHost[i]);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
for (size_t i = 0; i < inputsInfo.size(); i++) {
|
|
91
|
+
aclrtFree(inputDevice[i]);
|
|
92
|
+
aclrtFreeHost(inputHost[i]);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// [PATTERN] ACL 标准初始化流程
|
|
97
|
+
int32_t main(int32_t argc, char *argv[])
|
|
98
|
+
{
|
|
99
|
+
aclInit(nullptr);
|
|
100
|
+
int32_t deviceId = 0;
|
|
101
|
+
auto ret = aclrtSetDevice(deviceId);
|
|
102
|
+
if (ret != ACL_SUCCESS) {
|
|
103
|
+
printf("aclrtSetDevice failed, ret=%d\n", ret);
|
|
104
|
+
return ret;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// [MODIFY] 获取设备最大核数
|
|
108
|
+
int64_t availableCoreNum = 0;
|
|
109
|
+
ret = aclrtGetDeviceInfo(deviceId, ACL_DEV_ATTR_VECTOR_CORE_NUM, &availableCoreNum);
|
|
110
|
+
if (ret != ACL_SUCCESS) {
|
|
111
|
+
printf("aclrtGetDeviceInfo failed, ret=%d\n", ret);
|
|
112
|
+
aclrtResetDevice(deviceId);
|
|
113
|
+
return ret;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// [MODIFY] 根据你的算子调整这些参数
|
|
117
|
+
uint32_t totalLength = 4096 * 8;
|
|
118
|
+
size_t inputByteSize = totalLength * sizeof(float);
|
|
119
|
+
size_t outputByteSize = totalLength * sizeof(float);
|
|
120
|
+
|
|
121
|
+
// [MODIFY] 设置 Tiling 数据
|
|
122
|
+
AddTilingData tiling;
|
|
123
|
+
tiling.totalLength = totalLength;
|
|
124
|
+
uint64_t totalTiles = (totalLength + TILE_LENGTH - 1) / TILE_LENGTH;
|
|
125
|
+
uint64_t tilesPerCore = (totalTiles + availableCoreNum - 1) / availableCoreNum;
|
|
126
|
+
uint32_t blockNum = tiling.blockNum = (totalTiles + tilesPerCore - 1) / tilesPerCore;
|
|
127
|
+
tiling.numPerCore = tilesPerCore * TILE_LENGTH;
|
|
128
|
+
tiling.tailNumLastCore = totalLength - tiling.numPerCore * (blockNum - 1);
|
|
129
|
+
|
|
130
|
+
// [MODIFY] 根据你的输入/输出文件调整
|
|
131
|
+
std::vector<ArgInfo> inputsInfo = {
|
|
132
|
+
{"./input/input_x.bin", inputByteSize},
|
|
133
|
+
{"./input/input_y.bin", inputByteSize}
|
|
134
|
+
};
|
|
135
|
+
std::vector<ArgInfo> outputsInfo = {
|
|
136
|
+
{"./output/output.bin", outputByteSize}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
aclrtStream stream = nullptr;
|
|
140
|
+
aclrtCreateStream(&stream);
|
|
141
|
+
|
|
142
|
+
KernelCall(blockNum, stream, inputsInfo, outputsInfo, (uint8_t *)&tiling);
|
|
143
|
+
|
|
144
|
+
aclrtDestroyStream(stream);
|
|
145
|
+
aclrtResetDevice(deviceId);
|
|
146
|
+
aclFinalize();
|
|
147
|
+
|
|
148
|
+
return 0;
|
|
149
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
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
|
+
#ifndef DATA_UTILS_H
|
|
12
|
+
#define DATA_UTILS_H
|
|
13
|
+
|
|
14
|
+
#include <fcntl.h>
|
|
15
|
+
#include <sys/stat.h>
|
|
16
|
+
#include <unistd.h>
|
|
17
|
+
#include <fstream>
|
|
18
|
+
|
|
19
|
+
#define ERROR_LOG(fmt, args...) fprintf(stdout, "[ERROR] " fmt "\n", ##args)
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @brief Read data from file
|
|
23
|
+
* @param [in] filePath: file path
|
|
24
|
+
* @param [in] bufferSize: expected file size
|
|
25
|
+
* @param [out] buffer: buffer to store data
|
|
26
|
+
* @param [in] bufferLen: buffer length
|
|
27
|
+
* @return read result
|
|
28
|
+
*/
|
|
29
|
+
inline bool ReadFile(const std::string& filePath, size_t bufferSize, void* buffer, size_t bufferLen)
|
|
30
|
+
{
|
|
31
|
+
if (buffer == nullptr) {
|
|
32
|
+
ERROR_LOG("buffer is nullptr");
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (bufferSize > bufferLen) {
|
|
36
|
+
ERROR_LOG("buffer size is larger than buffer length");
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
std::ifstream file(filePath, std::ios::binary);
|
|
41
|
+
if (!file.is_open()) {
|
|
42
|
+
ERROR_LOG("Open file failed. path = %s", filePath.c_str());
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
file.seekg(0, std::ios::end);
|
|
47
|
+
size_t fileSize = file.tellg();
|
|
48
|
+
file.seekg(0, std::ios::beg);
|
|
49
|
+
|
|
50
|
+
if (fileSize != bufferSize) {
|
|
51
|
+
ERROR_LOG("file size %zu != expected size %zu", fileSize, bufferSize);
|
|
52
|
+
file.close();
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
file.read(static_cast<char*>(buffer), bufferSize);
|
|
57
|
+
if (!file) {
|
|
58
|
+
ERROR_LOG("Read file failed");
|
|
59
|
+
file.close();
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
file.close();
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @brief Write data to file
|
|
69
|
+
* @param [in] filePath: file path
|
|
70
|
+
* @param [in] buffer: data to write to file
|
|
71
|
+
* @param [in] size: size to write
|
|
72
|
+
* @return write result
|
|
73
|
+
*/
|
|
74
|
+
inline bool WriteFile(const std::string& filePath, const void* buffer, size_t size)
|
|
75
|
+
{
|
|
76
|
+
if (buffer == nullptr) {
|
|
77
|
+
ERROR_LOG("Write file failed. buffer is nullptr");
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
int fd = open(filePath.c_str(), O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
|
|
82
|
+
if (fd < 0) {
|
|
83
|
+
ERROR_LOG("Open file failed. path = %s", filePath.c_str());
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
ssize_t writeSize = write(fd, buffer, size);
|
|
88
|
+
close(fd);
|
|
89
|
+
if (static_cast<size_t>(writeSize) != size) {
|
|
90
|
+
ERROR_LOG("Write file Failed.");
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
#endif
|
|
@@ -0,0 +1,136 @@
|
|
|
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
|
+
/* Generated by Ascend C project template */
|
|
12
|
+
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Ascend C Kernel 实现 - Add 算子(纯 kernel,不含 host 代码)
|
|
15
|
+
// ============================================================================
|
|
16
|
+
//
|
|
17
|
+
// [MODIFY] 创建新算子时的修改点(搜索 [MODIFY] 标记):
|
|
18
|
+
// 1. #include "add_custom_tiling.h" → "#include "<your_op>_tiling.h"
|
|
19
|
+
// 2. 类名: KernelAdd → Kernel<YourOp>
|
|
20
|
+
// 3. Kernel函数名: add_custom → <your_op>(保持 _kernel 后缀)
|
|
21
|
+
// 4. 计算逻辑: AscendC::Add → 你的算子逻辑
|
|
22
|
+
// 5. 输入/输出数量: 根据你的算子调整
|
|
23
|
+
// ============================================================================
|
|
24
|
+
|
|
25
|
+
#include "kernel_operator.h"
|
|
26
|
+
#include "add_custom_tiling.h"
|
|
27
|
+
|
|
28
|
+
// [MODIFY] Kernel 类 - 封装 NPU 上的计算逻辑
|
|
29
|
+
class KernelAdd {
|
|
30
|
+
public:
|
|
31
|
+
__aicore__ inline KernelAdd(AscendC::TPipe* pipe)
|
|
32
|
+
{
|
|
33
|
+
pipe_ = pipe;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// [MODIFY] 根据你的算子修改 Init 参数和 Global Tensor
|
|
37
|
+
__aicore__ inline void Init(GM_ADDR x, GM_ADDR y, GM_ADDR z,
|
|
38
|
+
const __gm__ AddTilingData* tiling)
|
|
39
|
+
{
|
|
40
|
+
this->tiling = tiling;
|
|
41
|
+
uint32_t blockIdx = AscendC::GetBlockIdx();
|
|
42
|
+
if (blockIdx < tiling->blockNum - 1) {
|
|
43
|
+
total = tiling->numPerCore;
|
|
44
|
+
tileNum = total / TILE_LENGTH;
|
|
45
|
+
tailTileElementNum = TILE_LENGTH;
|
|
46
|
+
} else {
|
|
47
|
+
total = tiling->tailNumLastCore;
|
|
48
|
+
tileNum = (total + (TILE_LENGTH - 1))/ TILE_LENGTH;
|
|
49
|
+
tailTileElementNum = total - TILE_LENGTH * (tileNum - 1);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// [MODIFY] 根据你的输入/输出数量调整 Global Tensor
|
|
53
|
+
xGm.SetGlobalBuffer((__gm__ float *)x + blockIdx * tiling->numPerCore, total);
|
|
54
|
+
yGm.SetGlobalBuffer((__gm__ float *)y + blockIdx * tiling->numPerCore, total);
|
|
55
|
+
zGm.SetGlobalBuffer((__gm__ float *)z + blockIdx * tiling->numPerCore, total);
|
|
56
|
+
|
|
57
|
+
// [MODIFY] 根据你的算子计算逻辑,调整UB Buffer初始化
|
|
58
|
+
pipe_->InitBuffer(inQueueX, DOUBLE_BUFFER, TILE_LENGTH * sizeof(float));
|
|
59
|
+
pipe_->InitBuffer(inQueueY, DOUBLE_BUFFER, TILE_LENGTH * sizeof(float));
|
|
60
|
+
pipe_->InitBuffer(outQueueZ, DOUBLE_BUFFER, TILE_LENGTH * sizeof(float));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
__aicore__ inline void Process()
|
|
64
|
+
{
|
|
65
|
+
for (uint32_t i = 0; i < tileNum; i++) {
|
|
66
|
+
uint32_t count = (i == tileNum - 1) ? tailTileElementNum : TILE_LENGTH;
|
|
67
|
+
CopyIn(count);
|
|
68
|
+
Compute(count);
|
|
69
|
+
CopyOut(count);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
__aicore__ inline void CopyIn(uint32_t count)
|
|
74
|
+
{
|
|
75
|
+
// [MODIFY] 根据你的输入数量调整
|
|
76
|
+
AscendC::LocalTensor<float> xLocal = inQueueX.AllocTensor<float>();
|
|
77
|
+
AscendC::LocalTensor<float> yLocal = inQueueY.AllocTensor<float>();
|
|
78
|
+
|
|
79
|
+
AscendC::DataCopyPad(xLocal, xGm,
|
|
80
|
+
{1, static_cast<uint16_t>(count * sizeof(float)), 0, 0},
|
|
81
|
+
{false, 0, 0, 0});
|
|
82
|
+
AscendC::DataCopyPad(yLocal, yGm,
|
|
83
|
+
{1, static_cast<uint16_t>(count * sizeof(float)), 0, 0},
|
|
84
|
+
{false, 0, 0, 0});
|
|
85
|
+
|
|
86
|
+
inQueueX.EnQue(xLocal);
|
|
87
|
+
inQueueY.EnQue(yLocal);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
__aicore__ inline void Compute(uint32_t count)
|
|
91
|
+
{
|
|
92
|
+
AscendC::LocalTensor<float> xLocal = inQueueX.DeQue<float>();
|
|
93
|
+
AscendC::LocalTensor<float> yLocal = inQueueY.DeQue<float>();
|
|
94
|
+
AscendC::LocalTensor<float> zLocal = outQueueZ.AllocTensor<float>();
|
|
95
|
+
|
|
96
|
+
// [MODIFY] 替换为你的计算逻辑
|
|
97
|
+
AscendC::Add(zLocal, xLocal, yLocal, count);
|
|
98
|
+
|
|
99
|
+
outQueueZ.EnQue<float>(zLocal);
|
|
100
|
+
inQueueX.FreeTensor(xLocal);
|
|
101
|
+
inQueueY.FreeTensor(yLocal);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
__aicore__ inline void CopyOut(uint32_t count)
|
|
105
|
+
{
|
|
106
|
+
AscendC::LocalTensor<float> zLocal = outQueueZ.DeQue<float>();
|
|
107
|
+
AscendC::DataCopyPad(zGm, zLocal,
|
|
108
|
+
{1, static_cast<uint16_t>(count * sizeof(float)), 0, 0});
|
|
109
|
+
outQueueZ.FreeTensor(zLocal);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
private:
|
|
113
|
+
AscendC::TPipe* pipe_;
|
|
114
|
+
const __gm__ AddTilingData* tiling;
|
|
115
|
+
|
|
116
|
+
// [MODIFY] 根据你的输入/输出数量调整
|
|
117
|
+
AscendC::GlobalTensor<float> xGm;
|
|
118
|
+
AscendC::GlobalTensor<float> yGm;
|
|
119
|
+
AscendC::GlobalTensor<float> zGm;
|
|
120
|
+
|
|
121
|
+
AscendC::TQue<AscendC::TPosition::VECIN, 1> inQueueX, inQueueY;
|
|
122
|
+
AscendC::TQue<AscendC::TPosition::VECOUT, 1> outQueueZ;
|
|
123
|
+
|
|
124
|
+
uint32_t total;
|
|
125
|
+
uint32_t tileNum;
|
|
126
|
+
uint32_t tailTileElementNum;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
// [MODIFY] 核函数入口 - add_custom → <your_op>(保持 _kernel 后缀)
|
|
130
|
+
extern "C" __global__ __vector__ void add_custom_kernel(GM_ADDR x, GM_ADDR y, GM_ADDR z, GM_ADDR tiling)
|
|
131
|
+
{
|
|
132
|
+
AscendC::TPipe pipe;
|
|
133
|
+
KernelAdd op(&pipe);
|
|
134
|
+
op.Init(x, y, z, (__gm__ AddTilingData*)tiling);
|
|
135
|
+
op.Process();
|
|
136
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
/* Generated by Ascend C project template */
|
|
12
|
+
|
|
13
|
+
// [MODIFY] Tiling 常量和结构体 - kernel 和 host 共用
|
|
14
|
+
// 此文件只含纯 C/C++ 语法,不含 __aicore__、__gm__ 等 ASC 关键字
|
|
15
|
+
|
|
16
|
+
#pragma once
|
|
17
|
+
|
|
18
|
+
#include <cstdint>
|
|
19
|
+
|
|
20
|
+
// [CONFIG] 单次搬运/处理的数据量(元素数),影响 UB 内存占用
|
|
21
|
+
// 常用值: float32 用 4096/8192,float16 用 8192/16384
|
|
22
|
+
constexpr uint32_t TILE_LENGTH = 4096;
|
|
23
|
+
constexpr uint32_t DOUBLE_BUFFER = 2;
|
|
24
|
+
|
|
25
|
+
// [MODIFY] Tiling 数据结构 - 向核函数传递的运行时参数
|
|
26
|
+
struct AddTilingData {
|
|
27
|
+
uint32_t blockNum;
|
|
28
|
+
uint64_t totalLength;
|
|
29
|
+
uint64_t numPerCore;
|
|
30
|
+
uint64_t tailNumLastCore;
|
|
31
|
+
};
|
package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/run.sh
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# ----------------------------------------------------------------------------------------------------------
|
|
3
|
+
# Copyright (c) 2026 Huawei Technologies Co., Ltd.
|
|
4
|
+
# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
|
|
5
|
+
# CANN Open Software License Agreement Version 2.0 (the "License").
|
|
6
|
+
# Please refer to the License for details. You may not use this file except in compliance with the License.
|
|
7
|
+
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
|
8
|
+
# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE in the root of the software repository for the full text of the License.
|
|
10
|
+
# ----------------------------------------------------------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
# ============================================================================
|
|
13
|
+
# Ascend C Kernel 直调运行脚本
|
|
14
|
+
# 编译 → 生成测试数据 → 运行 → 精度验证
|
|
15
|
+
#
|
|
16
|
+
# 用法:
|
|
17
|
+
# bash run.sh # 完整流程(含编译)
|
|
18
|
+
# bash run.sh --skip-build # 跳过编译,复用已有产物(代码审查阶段使用)
|
|
19
|
+
# bash run.sh --torch # 跳过可执行文件通路,只跑 PyTorch 通路
|
|
20
|
+
#
|
|
21
|
+
# 退出码:
|
|
22
|
+
# 0 全部步骤成功
|
|
23
|
+
# 1 某步骤失败(stderr 有具体说明)
|
|
24
|
+
# ============================================================================
|
|
25
|
+
set -euo pipefail
|
|
26
|
+
|
|
27
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
28
|
+
cd "${SCRIPT_DIR}"
|
|
29
|
+
|
|
30
|
+
# [MODIFY] 替换为实际的算子二进制名称
|
|
31
|
+
OP_NAME="add"
|
|
32
|
+
|
|
33
|
+
SKIP_BUILD=0
|
|
34
|
+
TORCH_ONLY=0
|
|
35
|
+
for arg in "$@"; do
|
|
36
|
+
case "$arg" in
|
|
37
|
+
--skip-build) SKIP_BUILD=1 ;;
|
|
38
|
+
--torch) TORCH_ONLY=1 ;;
|
|
39
|
+
esac
|
|
40
|
+
done
|
|
41
|
+
|
|
42
|
+
# 统一错误输出函数
|
|
43
|
+
die() { echo "ERROR: $*" >&2; exit 1; }
|
|
44
|
+
|
|
45
|
+
echo "=== [1/4] 设置 CANN 环境 ==="
|
|
46
|
+
[ -n "${ASCEND_HOME_PATH:-}" ] || die "ASCEND_HOME_PATH 未设置,请先配置 CANN 环境"
|
|
47
|
+
source "${ASCEND_HOME_PATH}/set_env.sh" || die "set_env.sh 执行失败"
|
|
48
|
+
|
|
49
|
+
if [ "${TORCH_ONLY}" -eq 1 ]; then
|
|
50
|
+
echo "=== PyTorch 通路验证 ==="
|
|
51
|
+
cd build
|
|
52
|
+
python3 ../scripts/test_torch.py || die "PyTorch 通路验证失败"
|
|
53
|
+
echo "=== 完成 ==="
|
|
54
|
+
exit 0
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
if [ "${SKIP_BUILD}" -eq 1 ]; then
|
|
58
|
+
[ -f "build/${OP_NAME}" ] || die "--skip-build 指定但 build/${OP_NAME} 不存在,请先完整编译"
|
|
59
|
+
echo "=== [2/4] 跳过编译(复用已有产物)==="
|
|
60
|
+
else
|
|
61
|
+
echo "=== [2/4] 编译 ==="
|
|
62
|
+
mkdir -p build
|
|
63
|
+
cd build
|
|
64
|
+
cmake .. || die "cmake 配置失败"
|
|
65
|
+
make -j4 || die "make 编译失败"
|
|
66
|
+
cd ..
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
echo "=== [3/4] 生成测试数据 ==="
|
|
70
|
+
cd build
|
|
71
|
+
python3 ../scripts/gen_data.py || die "gen_data.py 执行失败"
|
|
72
|
+
|
|
73
|
+
echo "=== [4/4] 运行 Kernel ==="
|
|
74
|
+
rm -f output/output.bin
|
|
75
|
+
"./${OP_NAME}" || die "Kernel 运行失败(exit code $?)"
|
|
76
|
+
[ -f output/output.bin ] || die "Kernel 运行后 output.bin 不存在(静默失败)"
|
|
77
|
+
|
|
78
|
+
echo "=== 精度验证 ==="
|
|
79
|
+
python3 ../scripts/verify_result.py output/output.bin output/golden.bin \
|
|
80
|
+
|| die "精度验证失败(verify_result.py 返回非零)"
|
|
81
|
+
|
|
82
|
+
echo "=== PyTorch 通路验证 ==="
|
|
83
|
+
python3 ../scripts/test_torch.py \
|
|
84
|
+
|| die "PyTorch 通路验证失败(test_torch.py 返回非零)"
|
|
85
|
+
|
|
86
|
+
echo "=== 完成 ==="
|
|
87
|
+
exit 0
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
+
#
|
|
16
|
+
# [MODIFY] 创建新算子时修改:
|
|
17
|
+
# 1. total_length: 总元素数(需与 add.asc 中的保持一致)
|
|
18
|
+
# 2. dtype: 数据类型(需与 add.asc 中的保持一致)
|
|
19
|
+
# 3. 输入数据: 根据你的算子生成对应的输入
|
|
20
|
+
# 4. golden 计算: 修改 golden.py 中的 compute_golden()
|
|
21
|
+
# ============================================================================
|
|
22
|
+
|
|
23
|
+
import argparse
|
|
24
|
+
import os
|
|
25
|
+
|
|
26
|
+
import numpy as np
|
|
27
|
+
|
|
28
|
+
from golden import compute_golden
|
|
29
|
+
|
|
30
|
+
BIN_EXT = "." + "bin" # 数据文件扩展名
|
|
31
|
+
parser = argparse.ArgumentParser(description="add_custom 测试数据生成")
|
|
32
|
+
parser.add_argument(
|
|
33
|
+
"--input-x",
|
|
34
|
+
default=os.path.join("input", "input_x" + BIN_EXT),
|
|
35
|
+
help="x 输入文件路径",
|
|
36
|
+
)
|
|
37
|
+
parser.add_argument(
|
|
38
|
+
"--input-y",
|
|
39
|
+
default=os.path.join("input", "input_y" + BIN_EXT),
|
|
40
|
+
help="y 输入文件路径",
|
|
41
|
+
)
|
|
42
|
+
parser.add_argument(
|
|
43
|
+
"--golden",
|
|
44
|
+
default=os.path.join("output", "golden" + BIN_EXT),
|
|
45
|
+
help="golden 输出路径",
|
|
46
|
+
)
|
|
47
|
+
args = parser.parse_args()
|
|
48
|
+
|
|
49
|
+
os.makedirs("input", exist_ok=True)
|
|
50
|
+
os.makedirs("output", exist_ok=True)
|
|
51
|
+
|
|
52
|
+
# [MODIFY] 数据规格参数
|
|
53
|
+
total_length = 4096 * 8 # 总元素数,需与 add.asc 中 main 函数保持一致
|
|
54
|
+
dtype = np.float32 # 数据类型,需与 add.asc 中模板参数保持一致
|
|
55
|
+
|
|
56
|
+
# [MODIFY] 生成输入数据(根据你的算子调整)
|
|
57
|
+
x = np.random.randn(total_length).astype(dtype)
|
|
58
|
+
y = np.random.randn(total_length).astype(dtype)
|
|
59
|
+
|
|
60
|
+
x.tofile(args.input_x)
|
|
61
|
+
y.tofile(args.input_y)
|
|
62
|
+
|
|
63
|
+
# [MODIFY] 计算 golden(逻辑定义在 golden.py 中,修改那里即可)
|
|
64
|
+
golden = compute_golden(x, y)
|
|
65
|
+
golden.tofile(args.golden)
|
|
66
|
+
|
|
67
|
+
print(f"Generated test data: {total_length} elements, dtype={dtype}")
|
|
68
|
+
print(f" {args.input_x}: {x.shape}, {x.dtype}")
|
|
69
|
+
print(f" {args.input_y}: {y.shape}, {y.dtype}")
|
|
70
|
+
print(f" {args.golden}: {golden.shape}, {golden.dtype}")
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
# Golden 计算(双通路共用)
|
|
13
|
+
# ============================================================================
|
|
14
|
+
#
|
|
15
|
+
# [MODIFY] 创建新算子时修改:
|
|
16
|
+
# 1. compute_golden(): 替换为你的算子的正确计算逻辑
|
|
17
|
+
#
|
|
18
|
+
# 本文件被 gen_data.py 和 test_torch.py 共同引用,
|
|
19
|
+
# 修改此处即同时更新两条通路的 golden 基准。
|
|
20
|
+
# ============================================================================
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# [MODIFY] 替换为你的算子的正确计算逻辑
|
|
24
|
+
def compute_golden(x1, x2):
|
|
25
|
+
"""计算算子的参考输出。
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
x1: numpy array 或 torch.Tensor
|
|
29
|
+
x2: numpy array 或 torch.Tensor
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
与输入同类型的参考输出
|
|
33
|
+
"""
|
|
34
|
+
return x1 + x2
|