@cannbot-plugin/cannbot-harness 0.0.0-stage → 0.1.4
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 +104 -3
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/assets/ops-direct-invoke/.cannbot-bundle +1 -0
- package/assets/ops-direct-invoke/.claude-plugin/plugin.json +21 -0
- package/assets/ops-direct-invoke/.codex-plugin/plugin.json +30 -0
- package/assets/ops-direct-invoke/AGENTS.md +93 -0
- package/assets/ops-direct-invoke/LICENSE +38 -0
- package/assets/ops-direct-invoke/QUICKSTART.md +44 -0
- package/assets/ops-direct-invoke/README.md +219 -0
- package/assets/ops-direct-invoke/SKILLS_LICENSE +38 -0
- package/assets/ops-direct-invoke/agents/ops-direct-invoke-architect.md +39 -0
- package/assets/ops-direct-invoke/agents/ops-direct-invoke-developer.md +39 -0
- package/assets/ops-direct-invoke/agents/ops-direct-invoke-verifier.md +38 -0
- package/assets/ops-direct-invoke/init.sh +8 -0
- package/assets/ops-direct-invoke/plugin-install.json +24 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/SKILL.md +88 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/evals/evals.json +207 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-arithmetic.md +399 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-atomic.md +192 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-buffer.md +364 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-cross-gen-fixpipe.md +28 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-cross-gen-migration.md +91 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-crosscore-sync.md +259 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-datacopy.md +405 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-gathermask.md +243 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-gmm.md +260 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-hccl-host.md +187 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-hcomm.md +229 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-host-runtime.md +129 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-loaddata.md +196 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-matmul.md +364 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-mrgsort.md +636 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-pipeline.md +206 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-precision.md +146 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-quickref.md +192 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-reduce-pattern.md +132 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-reduce.md +282 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-repeat-limits.md +144 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-restrictions.md +200 -0
- package/assets/ops-direct-invoke/skills/ascendc-api-best-practices/references/api-transpose.md +234 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/SKILL.md +245 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/block/block_mmad_glu.h +238 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/block/block_scheduler_group_matmul.h +106 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/block/weight_quant_matmul_block_mmad.h +362 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/block_epilogue_dequant_swiglu.h +265 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/block_epilogue_pertoken_quant_single_pass.h +252 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/block_epilogue_pertoken_quant_two_pass_chunked.h +313 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/block_epilogue_swiglu.h +171 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/cv_sync_constants.h +32 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/epilogue_fusion_membase.h +212 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/epilogue_fusion_regbase.h +324 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/online_softmax_cross_core_epilogue.h +396 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/epilogue/online_softmax_per_tile_epilogue.h +421 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/kernel/group_matmul_kernel_cv1_v2.h +150 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/kernel/group_matmul_kernel_glu_fused.h +345 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/kernel/weight_quant_matmul_kernel.h +611 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/policy/dispatch_policy.h +63 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/utils/common_utils.h +101 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/blaze_custom/utils/integral_constant.h +38 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/op_tiling/matmul/blaze_group_matmul_pertoken_quant_selector.h +119 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/op_tiling/matmul/blaze_group_matmul_tiling_data.h +38 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/op_tiling/matmul/blaze_matmul_tiling.h +457 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/op_tiling/matmul/blaze_matmul_tiling_data.h +50 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/op_tiling/mx/quant_matmul_mx_tiling.h +549 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/op_tiling/mx/quant_matmul_mx_tiling_data.h +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/op_tiling/weight_quant/weight_quant_tiling.h +428 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/assets/op_tiling/weight_quant/weight_quant_tiling_data.h +59 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/evals/evals.json +234 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/blaze-investigation/assembly-recovery-method.md +106 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/blaze-investigation/dependency-trace-method.md +140 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/blaze-investigation/design-contract-method.md +78 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/blaze-investigation/investigation-report-template.md +249 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/blaze-investigation/source-investigation-method.md +131 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/fundamentals/blaze-cmake-build-guide.md +184 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/fundamentals/blaze-framework-overview.md +403 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/fundamentals/blaze-matmul-layout.md +322 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/fundamentals/blaze-sync-patterns.md +814 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/fundamentals/tensor-api-reference.md +589 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/kernel-design/blaze-design-template.md +593 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/kernel-design/blaze-plan-template.md +391 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/kernel-design/glu-development.md +755 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/kernel-design/glu-precision-diagnosis.md +113 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/kernel-design/group-matmul-delta.md +299 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/kernel-design/per-token-quant-development.md +450 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/kernel-design/tiling-selection.md +114 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/launcher/launcher-development.md +346 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-elementwise-then-vector-pertoken-quant/cube-matmul-then-vector-elementwise-then-vector-pertoken-quant-design.md +196 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-elementwise-then-vector-pertoken-quant/cube-matmul-then-vector-elementwise-then-vector-pertoken-quant-development.md +104 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-glu/cube-matmul-then-vector-glu-design.md +150 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-glu/cube-matmul-then-vector-glu-development.md +54 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-glu-then-vector-pertoken-quant/cube-matmul-then-vector-glu-then-vector-pertoken-quant-design.md +189 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-glu-then-vector-pertoken-quant/cube-matmul-then-vector-glu-then-vector-pertoken-quant-development.md +52 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-pertoken-quant/cube-matmul-then-vector-pertoken-quant-design.md +138 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-pertoken-quant/cube-matmul-then-vector-pertoken-quant-development.md +45 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-softmax-reduce/cube-matmul-then-vector-softmax-reduce-design.md +205 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-softmax-reduce/cube-matmul-then-vector-softmax-reduce-development.md +99 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-softmax-reduce/cv-sync-and-two-phase-entry.md +156 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-softmax-reduce/cv1-v2-adaptation-for-softmax-reduce.md +331 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-softmax-reduce/online-softmax-reduce-epilogue-design.md +174 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/cube-matmul-then-vector-softmax-reduce/reduce-adaptation-guide.md +204 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/elementwise-broadcast-epilogue-fusion/block-l0c2ub-extension.md +75 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/elementwise-broadcast-epilogue-fusion/elementwise-broadcast-epilogue-fusion-design.md +280 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/elementwise-broadcast-epilogue-fusion/elementwise-broadcast-epilogue-fusion-development.md +202 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/elementwise-broadcast-epilogue-fusion/epilogue-membase-design.md +82 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/elementwise-broadcast-epilogue-fusion/epilogue-regbase-design.md +95 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/elementwise-broadcast-epilogue-fusion/fused-kernel-development.md +71 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/elementwise-broadcast-epilogue-fusion/precision-diagnosis.md +86 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/elementwise-broadcast-epilogue-fusion/splitm-contract-and-debugging.md +86 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/index.md +14 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/scenario-extension-guide.md +84 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/weight-dequant-prologue-fusion/layout-variant-boundary.md +76 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/weight-dequant-prologue-fusion/pitfalls-and-diagnosis.md +124 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/weight-dequant-prologue-fusion/prologue-ub-layout-design.md +135 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/weight-dequant-prologue-fusion/prologue-vf-dequant-design.md +213 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/weight-dequant-prologue-fusion/vc-sync-and-l1-layout-design.md +103 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/weight-dequant-prologue-fusion/weight-dequant-prologue-fusion-design.md +289 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/weight-dequant-prologue-fusion/weight-dequant-prologue-fusion-development.md +232 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/scenarios/weight-dequant-prologue-fusion/weight-quant-tiling-contract.md +83 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/troubleshooting/compile-troubleshooting.md +231 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/troubleshooting/optimized-runtime-hang.md +102 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/workflow/step1-project-setup.md +170 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/workflow/step2-blaze-investigation.md +192 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/workflow/step3-kernel-design.md +246 -0
- package/assets/ops-direct-invoke/skills/ascendc-blaze-best-practice/references/workflow/step4-operator-development.md +166 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/SKILL.md +67 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/evals/evals.json +123 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/references/crash_workflow.md +193 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/references/memcheck/README.md +137 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/references/memcheck/automated_workflow.md +418 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/references/memcheck/mssanitizer_guide.md +181 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/scripts/memcheck_input.json.template +44 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/scripts/parse_plog.py +191 -0
- package/assets/ops-direct-invoke/skills/ascendc-crash-debug/scripts/run_memcheck_pre.sh +696 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/SKILL.md +105 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/evals/evals.json +128 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/CMakeLists.txt +131 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/README.md +55 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/op_extension/add_custom_torch.cpp +82 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/op_extension/ops.h +23 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/op_extension/register.cpp +42 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/op_host/add_custom.asc +149 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/op_host/data_utils.h +98 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/op_kernel/add_custom_kernel.asc +136 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/op_kernel/add_custom_tiling.h +31 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/run.sh +86 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/scripts/gen_data.py +49 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/scripts/golden.py +36 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/scripts/test_torch.py +90 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/add_custom/scripts/verify_result.py +54 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kernel_launch_details.md +116 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/CMakeLists.txt +19 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/README.md +214 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/UPSTREAM.md +35 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/add_custom.cpp +99 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/add_custom_tiling.h +25 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/cmake/Modules/CMakeCCECompiler.cmake.in +15 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/cmake/Modules/CMakeCCEInformation.cmake +51 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/cmake/Modules/CMakeDetermineCCECompiler.cmake +119 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/cmake/Modules/CMakeTestCCECompiler.cmake +11 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/cmake/npu/CMakeLists.txt +36 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/data_utils.h +132 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/ext_lib/.gitattributes +1 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/input/.keep +0 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/main.cpp +108 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/output/.keep +0 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/run.sh +141 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/scripts/acl.json +1 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/scripts/gen_data.py +26 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_add_template/scripts/verify_result.py +54 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/kirin_vector_guide.md +172 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_guide.md +348 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/CMakeLists.txt +157 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/common/acl_utils.h +70 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/common/common_utils.h +84 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/common/io_utils.h +163 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_extension/matmul_blaze_torch.cpp +55 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_extension/ops.h +22 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_extension/register.cpp +22 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_kernel/include/blaze_custom/.gitkeep +0 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_kernel/matmul_blaze_kernel.cpp +33 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_kernel/matmul_blaze_kernel.h +99 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_tiling/matmul_constant.h +31 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_tiling/matmul_tiling_data.h +45 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/op_tiling/matmul_tiling_stub.h +77 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/run.sh +94 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/scripts/gen_data_mxfp4.py +152 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/scripts/gen_data_mxfp8.py +114 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/scripts/verify_result.py +132 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/test_matmul_blaze.cpp +145 -0
- package/assets/ops-direct-invoke/skills/ascendc-direct-invoke-template/references/matmul_blaze_template/test_matmul_blaze_torch.py +141 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-gen/SKILL.md +56 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-gen/evals/evals.json +191 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-gen/references/aclnn-api-doc-template.md +368 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-gen/references/detailed-design-template.md +388 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-gen/references/iteration-plan-template.md +45 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-gen/references/operator-readme-template.md +234 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-gen/references/operator-readme-template_bak.md +165 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-gen/references/requirement-analysis-template.md +131 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/SKILL.md +163 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/evals/evals.json +197 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/references/api-index.md +207 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/references/compatibility.md +141 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/references/example-catalog.md +197 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/requirements.txt +2 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/scripts/__init__.py +6 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/scripts/ascend_content_fetcher.py +479 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/scripts/ascend_search_client.py +201 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/scripts/ascend_search_skill.py +163 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/scripts/clean_markdown.py +489 -0
- package/assets/ops-direct-invoke/skills/ascendc-docs-search/scripts/find_api_doc.sh +54 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/SKILL.md +123 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/evals/evals.json +211 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/references/asys_commands.md +64 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/references/env_config_guide.md +96 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/references/kirin_platform_guide.md +11 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/references/npu_commands.md +114 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/references/troubleshooting.md +177 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/scripts/_npu_info.py +763 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/scripts/check_env.sh +320 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/scripts/get_npu_arch.py +488 -0
- package/assets/ops-direct-invoke/skills/ascendc-env-check/scripts/npu_info.sh +228 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/SKILL.md +370 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/docs/CONTEXT.md +85 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/docs/MC2-CAPABILITY-PLAN.md +111 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/docs/adr/0001-mc2-skill-not-plugin.md +31 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/docs/adr/0002-decision-stack-path-registry.md +33 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/evals/evals.json +315 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/capability-declaration.md +97 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/codebase-analysis.md +34 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/fundamentals/architecture.md +444 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/fundamentals/communication.md +669 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/fundamentals/compute.md +587 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/fundamentals/fusion.md +550 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/operator-design/design-template.md +313 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/operator-design/dev-methodology.md +111 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/operator-design/development-guide.md +445 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/operator-design/host-and-testing.md +285 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/operator-design/operator-anatomy.md +739 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/operator-design/paradigm-mapping.md +93 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/operator-design/plan-template.md +235 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/review-checklist.md +96 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/compute-first-reduce-scatter/design.md +107 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/compute-first-reduce-scatter/development.md +272 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/get-all-gather-quant-matmul/design.md +93 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/get-all-gather-quant-matmul/development.md +70 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/index.md +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/put-all-gather-quant-matmul/design.md +83 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/put-all-gather-quant-matmul/development.md +62 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/put-all-to-all-quant-matmul/design.md +106 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/scenarios/put-all-to-all-quant-matmul/development.md +74 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/troubleshooting/failure-navigation.md +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/troubleshooting/optimization-playbook.md +143 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/workflow/step1-project-setup.md +52 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/workflow/step2-investigation.md +89 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/workflow/step3-design.md +69 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/workflow/step4-implementation.md +29 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/apace/workflow_integration.md +122 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/api-rules/dispatch-combine-contracts.md +60 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/api-rules/index.md +71 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/api-rules/mte-address-access.md +374 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/api-rules/sync-and-visibility.md +105 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/reading/combine-reading-guide.md +102 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/reading/common-reading-method.md +226 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/reading/design-overview.md +558 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/reading/dispatch-reading-guide.md +81 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/reading/kernel-execution-units.md +189 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/reading/mega-moe-reading-guide.md +123 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/build-framework.md +177 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/change-routing.md +18 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/combine-dataflow.md +144 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/dispatch-dataflow.md +128 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/index.md +98 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/CMakeLists.txt +51 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/README.md +131 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/build.sh +56 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/include/moe_dispatch_base_compat.h +113 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/include/tiling_data.h +100 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/include/utils.h +57 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/kernel/moe_dispatch.h +524 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/kernel/mte_dispatch_comm.h +324 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/moe_dispatch.cpp +67 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/run.sh +61 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/run_multi_data_test.sh +80 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/scripts/verify_dispatch.py +248 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/moe_dispatch_direct_invoke_sample/test/test_moe_dispatch.cpp +679 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/sample-helper-map.md +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/samples/spec-template.md +78 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/tiling-scheme/double-buffer-protocol.md +69 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/tiling-scheme/index.md +111 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/tiling-scheme/multi-core-formulas.md +126 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/tiling-scheme/split-core-design.md +100 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/ascendc-api/moe-dispatch-combine/tiling-scheme/window-memory-layout.md +199 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/CMakeLists.txt +95 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/cmake/ascend.cmake +59 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/cmake/shmem.cmake +75 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/cmake/tensor_api.cmake +48 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/common/host_utils/acl_utils.h +73 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/common/host_utils/common_utils.h +181 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/common/host_utils/io_utils.h +175 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/common/kernel_utils/common_utils.h +99 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/common/kernel_utils/integral_constant.h +36 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/common/kernel_utils/tuple_utils.h +34 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/block/block_mmad.h +27 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/block/block_scheduler_policy.h +35 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/block/block_scheduler_utils.h +27 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/block/quant_matmul_mx_block_mmad_swat.h +392 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/block/quant_matmul_mx_block_scheduler_swat.h +290 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/kernel/all_to_all_comm_udma.h +255 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/kernel/all_to_all_matmul_impl.h +370 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/kernel/heavy_kernels.h +128 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/kernel/qbmm_mx_kernel.h +395 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/policy/dispatch_policy.h +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tile/copy_scale_l1_to_l0a.h +61 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tile/copy_scale_l1_to_l0b.h +54 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tile/pad_mx_kl1.h +138 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tile/tile_mmad_mx.h +34 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tiling/all_to_all_matmul_tiling_data.h +29 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tiling/quant_matmul_mx_tiling_swat.h +410 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tiling/quant_matmul_tiling_base.h +116 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tiling/quant_matmul_tiling_common.h +101 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/tiling/quant_matmul_tiling_data.h +61 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/include/utils/constant.h +106 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/run.sh +65 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/scripts/extract_perf.py +57 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/scripts/gen_data.py +139 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/scripts/verify_result.py +152 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/src/all_to_all_matmul.cpp +396 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/all_to_all_matmul/src/utils.h +168 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/codebase_map.md +342 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/comm_shmem.md +280 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/matmul_blaze.md +259 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/mc2_architecture.md +199 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/review-checklist.md +29 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/blaze-shmem/workflow_integration.md +215 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/CMakeLists.txt +559 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/build.sh +319 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/cmake/config.cmake +232 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/cmake/func.cmake +478 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/cmake/intf.cmake +4 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/cmake/intf_pub.cmake +67 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/cmake/modules/Findalog.cmake +105 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/cmake/scripts/check_version_compatible.py +94 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/cmake/scripts/prepare.sh +129 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/examples/golden.py +27 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/examples/run_test.sh +33 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/examples/single_server_check_result.py +71 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/examples/single_server_config.ini +17 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/examples/single_server_gen_data.py +91 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/examples/single_server_run.py +116 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/examples/test_golden_cpu.py +63 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/CMakeLists.txt +202 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/mc2_common_infershape.cpp +163 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/mc2_common_infershape.h +49 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/formulaic_tiling_datatype.h +161 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/hccl_formulaic_tiling.cpp +373 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/hccl_formulaic_tiling.h +150 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/hccl_performance.cpp +206 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/hccl_performance.h +118 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/hcom_topo_info.h +81 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/matmul_formulaic_tiling.cpp +338 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/matmul_formulaic_tiling.h +340 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/matmul_performance.cpp +272 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/matmul_performance.h +152 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/mc2_tiling_struct.h +46 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/mc2_tiling_utils.cpp +296 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_host/op_tiling/mc2_tiling_utils.h +269 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_kernel/mc2_matmul_block.h +235 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_kernel/mc2_matmul_block_l2cache.h +165 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_kernel/mc2_matmul_compute.h +218 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_kernel/mc2_nd_to_nz.h +579 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/op_kernel/mc2_tiling_struct.h +164 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/utils/mc2_hcom_topo_info.cpp +390 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/utils/mc2_hcom_topo_info.h +81 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/mc2_common/utils/ops_utils.h +77 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_api/aclnn_x_all_gather_matmul.cpp +65 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_api/aclnn_x_all_gather_matmul.h +57 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_tiling/arch22/x_all_gather_formulaic_tiling_a2a3.cpp +50 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_tiling/arch22/x_all_gather_formulaic_tiling_a2a3.h +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_tiling/arch22/x_all_gather_matmul_tiling_a2a3.cpp +72 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_tiling/arch22/x_all_gather_matmul_tiling_a2a3.h +31 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_tiling/x_all_gather_formulaic_tiling.cpp +82 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_tiling/x_all_gather_formulaic_tiling.h +55 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_tiling/x_all_gather_matmul_tiling_base.cpp +508 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/op_tiling/x_all_gather_matmul_tiling_base.h +54 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/x_all_gather_matmul_def.cpp +79 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_host/x_all_gather_matmul_proto.cpp +39 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_kernel/x_all_gather_matmul.cpp +96 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_kernel/x_all_gather_matmul_base.h +152 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_kernel/x_all_gather_matmul_full_mesh.h +230 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_kernel/x_all_gather_matmul_tiling.h +45 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/all_gather_matmul/x_all_gather_matmul/op_kernel/x_all_gather_matmul_tiling_key.h +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/codebase_map.md +281 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/comm_hccl.md +201 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/matmul_fusion.md +50 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/mc2_architecture.md +142 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/op_architecture.md +167 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/pipeline_tuning.md +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/review-checklist.md +39 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/foundations/hccl-matmul/workflow_integration.md +152 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/operators/collective-comm.md +145 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/requirement-analysis/classification.md +27 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/requirement-analysis/comm-path-decision.md +51 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/requirement-analysis/grill-protocol.md +202 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/requirement-analysis/quality-checklist.md +57 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/requirement-analysis/template.md +208 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/shared/pipeline_tuning.md +232 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/references/shared/profiling_mc2.md +278 -0
- package/assets/ops-direct-invoke/skills/ascendc-mc2-best-practice/scripts/fetch_apace.sh +96 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/SKILL.md +121 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/evals/evals.json +138 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/advanced_tiling.md +92 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/broadcast_design.md +160 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/code/broadcast_add_kernel.cpp +118 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/code/broadcast_add_tiling.cpp +126 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/code/broadcast_common.h +344 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/code/onedim_add_kernel.cpp +97 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/code/onedim_add_tiling.cpp +57 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/datacopypad_design.md +46 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/nddma_design.md +53 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/onedim_design.md +114 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/broadcast/ub_broadcast_design.md +67 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/common/core_shrink_design.md +126 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/common/datacopy_optimization_design.md +351 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/common/tail_block_design.md +268 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/common/ub_resident_design.md +342 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/guide.md +69 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_base.template +81 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_big_dim.template +217 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_cut_one_axis.template +336 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_cut_two_axis.template +781 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_n_last.template +340 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_small_shape.template +321 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_tensor_move.template +102 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_transdata_5hd.template +480 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_transdata_5hd_021axis.template +533 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/dav3510/transpose_with_gather.template +688 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/templates/transpose_tiling_data.template +192 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_big_dim.md +220 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_cut_one_axis.md +175 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_cut_two_axis.md +177 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_fusion_design.md +398 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_gather.md +191 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_n_last.md +276 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_small_shape.md +315 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_tensor_move.md +203 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_tiling_data.md +176 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_vconv_021.md +206 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/conversion/transpose_vconv_5hd.md +179 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/elementwise/double_buffer_design.md +288 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/elementwise/vector_efficiency_design.md +203 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/constant_folding_design.md +466 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/fullload_design.md +344 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/guide.md +16 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/mte2_preload_design.md +320 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/pingpong_design.md +254 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/scale_coalescing_design.md +282 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/small_m_wide_n_pipeline_design.md +137 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/streamk_design.md +374 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/matmul/swat_design.md +423 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/mc2/guide.md +45 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/mc2/local_matmul_design.md +130 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/mc2/pipeline_balancing_design.md +502 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/guide.md +178 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/dav310/kernel_utils.template +75 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/dav310/softmax_v2_ar_full_load.template +429 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/dav310/softmax_v2_ar_recompute.template +485 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/dav310/softmax_v2_ar_small_r.template +348 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/dav310/softmax_v2_ara_full_load.template +574 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/dav310/softmax_v2_ara_online.template +324 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/dav310/softmax_v2_ara_recompute.template +436 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/dav310/softmax_v2_base.template +950 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/fused_attention_online_softmax_design.md +428 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/softmax_v2_ar_full_load.md +137 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/softmax_v2_ar_recompute.md +135 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/softmax_v2_ar_small_r.md +122 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/softmax_v2_ara_full_load.md +144 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/softmax_v2_ara_online.md +185 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/softmax_v2_ara_recompute.md +163 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/softmax_v2_tiling.template +460 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/softmax_v2_tiling_data.template +278 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/state_resident_design.md +337 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/reduce/templates/usage_guide.md +253 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/scalar/coding_principles.md +476 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/scalar/conv_scalar.md +165 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/scalar/guide.md +31 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/simt/optimization-guide.md +110 -0
- package/assets/ops-direct-invoke/skills/ascendc-performance-best-practices/references/sort/radix_sort.md +354 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/SKILL.md +361 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/evals/evals.json +161 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/ascendc-dumptensor-refs/api-reference.md +92 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/ascendc-dumptensor-refs/error-patterns.md +40 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/ascendc-dumptensor.md +205 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/best-practices.md +317 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/binary-search-debug.md +275 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/case-studies.md +459 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/common-traps.md +492 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/data-comparison.md +308 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/debug-summary-template.md +198 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/diagnosis-workflow.md +180 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/printf-debug.md +296 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/simt-precision-debug.md +76 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/references/tools-reference.md +364 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/scripts/error_analysis.py +148 -0
- package/assets/ops-direct-invoke/skills/ascendc-precision-debug/scripts/gen_boundary_test.py +169 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/SKILL.md +47 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/evals/evals.json +115 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/api/arithmetic_and_reduce.md +228 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/api/compute_api_membase_vs_regbase.md +107 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/api/datacopy_best_practices.md +139 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/api/index.md +38 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/api/pipeline_and_buffer.md +105 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/api/regbase_api_reference.md +303 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/api/regbase_api_sync.md +173 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/api/regbase_api_whitelist.md +142 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/dev-experience/index.md +24 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/dev-experience/regbase_build_notes.md +49 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/dev-experience/regbase_performance_practices.md +52 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/dev-experience/regbase_programming_notes.md +120 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/dev-experience/tiling_review_notes.md +86 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/dev-experience/working_vs_failed_dav_3510_cases.md +49 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/README.md +190 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-code/op_host/adam_apply_one_assign_def.cpp +102 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-code/op_host/arch35/adam_apply_one_assign_tiling_arch35.cpp +597 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-code/op_host/arch35/adam_apply_one_assign_tiling_arch35.h +82 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-code/op_kernel/adam_apply_one_assign.cpp +44 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-code/op_kernel/arch35/adam_apply_one_assign_kernel.h +361 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-code/op_kernel/arch35/adam_apply_one_assign_struct.h +27 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-code/op_kernel/arch35/adam_apply_one_assign_tiling_struct.h +53 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-design/adam_apply_one_assign_analysis.md +143 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/examples-adam-design/adam_apply_one_assign_design.md +2865 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/CMakeLists.txt +328 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/README.md +163 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_graph/xdivy_graph_infer.cpp +38 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_graph/xdivy_proto.h +42 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_host/arch35/xdivy_tiling_arch35.cpp +601 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_host/arch35/xdivy_tiling_arch35.h +89 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_host/xdivy_def.cpp +60 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_host/xdivy_infershape.cpp +58 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_kernel/arch35/xdivy_kernel.h +331 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_kernel/arch35/xdivy_struct.h +28 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_kernel/arch35/xdivy_tiling_struct.h +57 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/op_kernel/xdivy.cpp +42 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/aclnn/CMakeLists.txt +67 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/aclnn/run.sh +56 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/aclnn/test_aclnn.cpp +354 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/geir/CMakeLists.txt +69 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/geir/run.sh +58 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/geir/test_geir.cpp +407 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/tiling/CMakeLists.txt +185 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/tiling/run.sh +61 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/example/xdivy_custom_package/tests/tiling/test_tiling.cpp +386 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/patterns.md +324 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/references/broadcast-kernel-entrance.md +95 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/references/broadcast-template-overview.md +252 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/references/broadcast-template-standard/broadcast-standard-compute-flow.md +214 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/references/broadcast-template-standard/broadcast-standard-dag-buffers.md +285 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/references/broadcast-template-standard/broadcast-standard-kernel-helpers.md +209 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/references/broadcast-template-standard/broadcast-standard-kernel-template.md +611 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/references/broadcast-template-standard/broadcast-standard-tiling-preprocess.md +545 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/broadcast/references/broadcast-template-standard/broadcast-standard-tiling.md +471 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/common/broadcast-rules.md +126 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/common/cast-rules.md +414 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/common/datacopypad-rules.md +185 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/common/nddma-rules.md +255 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/common/sync-and-consistency.md +314 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/common/value-depend-process.md +40 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/common/vf-programming-rules.md +150 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/dynamic_shape/knowledge.md +382 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/dynamic_shape/patterns.md +260 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/elewise/patterns.md +46 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/elewise/tiling.md +215 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/example-routes.yaml +17 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/general-methodology.md +94 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/mask_predicate/patterns.md +99 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/numerical_stable/knowledge.md +233 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/numerical_stable/patterns.md +390 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/CMakeLists.txt +289 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/README.md +148 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_graph/euclidean_norm_graph_infer.cpp +39 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_graph/euclidean_norm_proto.h +54 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_host/arch35/euclidean_norm_tiling_arch35.cpp +1040 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_host/arch35/euclidean_norm_tiling_arch35.h +28 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_host/euclidean_norm_def.cpp +86 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_host/euclidean_norm_infershape.cpp +205 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm.cpp +46 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_base.h +965 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_empty.h +153 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_group.h +396 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_tiling_data.h +74 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_tiling_key.h +32 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/aclnn/CMakeLists.txt +59 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/aclnn/run.sh +36 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/aclnn/test_aclnn.cpp +227 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/geir/CMakeLists.txt +84 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/geir/run.sh +48 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/geir/test_geir.cpp +297 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/tiling/CMakeLists.txt +143 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/tiling/run.sh +40 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/example/euclidean_norm_package/tests/tiling/test_tiling.cpp +318 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/patterns.md +527 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-binary-sum.md +260 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-highlevel-api.md +146 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-kernel-entrance.md +96 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-survival-node.md +74 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-binary-base/reduction-binary-base-dag-buffers.md +612 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-binary-base/reduction-binary-base-kernel-template.md +1261 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-binary-base/reduction-binary-base-tiling.md +531 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-binary-group/reduction-binary-group-dag-buffers.md +209 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-binary-group/reduction-binary-group-kernel-template.md +588 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-binary-group/reduction-binary-group-tiling.md +203 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-empty/reduction-empty-dag-buffers.md +292 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-empty/reduction-empty-kernel-template.md +360 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-empty/reduction-empty-tiling.md +234 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-template-overview.md +238 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-tiling-preprocess.md +218 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-tuple-reduce.md +72 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/references/reduction-vf-fusion-rules.md +95 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/reduction/validate_gates.py +194 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/resolve_example.py +106 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/routes.yaml +39 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/stateful/patterns.md +146 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/variable_output/knowledge.md +366 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/paradigms/variable_output/patterns.md +203 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/pitfalls/api_misuse.md +50 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/pitfalls/common_traps.md +67 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/pitfalls/index.md +25 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/pitfalls/precision_failures.md +51 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/pitfalls/precision_guide.md +85 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/pitfalls/regbase_vs_membase_confusions.md +52 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/pitfalls/symptom_to_cause.md +38 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/reference-ops/open_source_operator_table.md +740 -0
- package/assets/ops-direct-invoke/skills/ascendc-regbase-best-practice/references/regbase_development_guide.md +334 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/SKILL.md +107 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/evals/evals.json +44 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/compute-operators.md +34 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/data-transfer.md +51 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/debug-api.md +530 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/index-calculation.md +49 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/intra-core-shared.md +70 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/macro-api.md +65 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/multi-core-sync.md +39 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/overview.md +128 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/tensorlist-handling.md +92 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/thread-stride-pattern.md +49 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/vf-call.md +51 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references/vf-declaration.md +39 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-best-practices/references//347/274/226/350/257/221/344/270/216/350/277/220/350/241/214.md +158 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-tiling-design/SKILL.md +42 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-tiling-design/evals/evals.json +44 -0
- package/assets/ops-direct-invoke/skills/ascendc-simt-tiling-design/references/guide.md +73 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/SKILL.md +316 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/evals/evals.json +44 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/references/constraint-examples.md +392 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/references/dependency-yaml-spec.md +625 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/references/empty-tensor-guide.md +236 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/references/parameter-definition.md +491 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/references/standards.md +11 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/scripts/generate_empty_tensor_cases_derive.py +815 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/scripts/generate_factor_values.py +1287 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/scripts/generate_implicit_constraints.py +511 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/scripts/generate_solver_config.py +618 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/scripts/generate_test_cases.py +2800 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/scripts/generate_test_factors.py +762 -0
- package/assets/ops-direct-invoke/skills/ascendc-st-design/scripts/utils.py +1931 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/SKILL.md +91 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/evals/evals.json +72 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/broadcast/dynamic-ub-broadcast.md +87 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/broadcast/nddma-broadcast.md +199 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/broadcast/onedim.md +152 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/broadcast/patterns.md +165 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/broadcast/ub-broadcast.md +331 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/conversion/patterns.md +261 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/elewise/patterns.md +46 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/elewise/tiling.md +215 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/design/_governance.md +132 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/design/execution.md +469 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/design/resources.md +339 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/design/shape.md +271 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/foundation/composition.md +138 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/foundation/extension_points.md +173 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/foundation/fundamentals.md +245 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/foundation/roofline.md +227 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/implementation_ref.md +201 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/patterns.md +239 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/specialization/feature_flags.md +216 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/specialization/sparse_design.md +198 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/subfamilies/base_design.md +395 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/flashattention/subfamilies/quantization_design.md +233 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/index/gather.md +273 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/index/index_add.md +434 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/index/index_select.md +185 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/index/patterns.md +199 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/index/repeat_interleave.md +251 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/index/scatter.md +341 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/matmul/ascendc-api-gmm-tiling.md +313 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/matmul/ascendc-api-matmul-tiling.md +408 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/matmul/patterns.md +32 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/alg-dichotomy.md +56 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/alg-group-reduce.md +101 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/alg-welford.md +74 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/algorithms.md +35 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/ar-colsplit.md +149 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/ar-fullload.md +151 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/ara-fullload.md +228 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/ara-rowsplit.md +219 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/multi-axis-transform.md +83 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/multi-output-buffer.md +115 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/patterns.md +212 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/tiling-fields.md +94 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/reduction/with-index.md +247 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/scatter/patterns.md +827 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/sort/alg-two-level-mrgsort.md +681 -0
- package/assets/ops-direct-invoke/skills/ascendc-tiling-design/references/sort/patterns.md +249 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/SKILL.md +109 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/coverage_files_question.json +24 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/csv-refactor/template_cmake.txt +46 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/csv-refactor/template_inferdtype.cpp +139 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/csv-refactor/template_inferdtype.csv +5 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/csv-refactor/template_infershape.cpp +122 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/csv-refactor/template_infershape.csv +5 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/csv-refactor/template_param.h +319 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/csv-refactor/template_tiling.cpp +154 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/csv-refactor/template_tiling.csv +5 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/question.json +100 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/template_report.md +112 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/assets/todo.json +24 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/evals/evals.json +198 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/coverage-guide/coverage-extraction.md +78 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/coverage-guide/test-implementation.md +136 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/custom/custom.md +5 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/ops-transformer/csv-format-spec.md +263 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/ops-transformer/csv-refactor-workflow.md +494 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/ops-transformer/legacy-code-extraction.md +325 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/ops-transformer/ops-transformer.md +75 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/ut-guide/build_ut.md +65 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/ut-guide/op-api-ut-guide.md +237 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/ut-guide/op-host-ut-guide.md +240 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/ut-guide/op-kernel-ut-guide.md +198 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/workflow/step1.md +43 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/workflow/step2.md +26 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/workflow/step3.md +51 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/workflow/step4.md +130 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/references/workflow/step5.md +5 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/scripts/extract_dtype_combinations.py +200 -0
- package/assets/ops-direct-invoke/skills/ascendc-ut-develop/scripts/generate_csv_template.py +270 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/SKILL.md +125 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/evals/evals.json +198 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/S1-input-collection.md +125 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/case-mapper/00-execution-order.md +58 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/case-mapper/01-variable-semantics.md +250 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/case-mapper/02-generate-mapper.md +218 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/case-mapper/S5_case_json_schema.md +373 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/case-mapper/S5_mapped_case_schema.md +131 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/case-mapper/s5_case_mapper_template.py +411 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/design-verifier/00-execution-order.md +114 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/source-analysis/00-execution-order.md +291 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/source-analysis/01-code-analyzer.md +121 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/source-analysis/02-interface-analyzer.md +417 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/source-analysis/03-param-derivation.md +45 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/source-analysis/04-test-design-template.md +231 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/source-analysis/05-network-search.md +154 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-a/00-overview.md +66 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-a/01-step1-tiling.md +114 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-a/02-step2-trace.md +81 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-a/03-step3-kernel.md +51 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-a/04-path-config-schema.md +342 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-d/00-execution-order.md +26 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-d/01-step1-merge.md +54 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-d/02-step2-group.md +44 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-d/03-step3-derive.md +416 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-d/04-step4-output.md +122 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/task-d/05-step5-gen-cases.md +156 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/ttk-converter/00-execution-order.md +108 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/ttk-converter/01-csv-common.md +33 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/ttk-converter/02-kernel-fields.md +64 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/ttk-converter/03-kernel-mode.md +142 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/references/workflow.md +193 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/_scout_common.py +53 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/assemble_dim_spec.py +232 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/build_param_def.py +134 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/build_path_list.py +520 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/format_json.py +135 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/gen_cases_template.py +196 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/generate_test_design.py +555 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/normalize_op_name.py +157 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/pick_dims.py +173 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/run_ttk_kernel_module.py +750 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/s2p0_verify.py +302 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/s3_task_d_gate.py +365 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/s5_append_empty.py +180 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/s5_check_mapper_outputs.py +292 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/s5_expand_high.py +208 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/scout_k.py +723 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/scout_t.py +983 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/ttk_generate_kernel_csv.py +346 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/ttk_precheck_env.py +248 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/ttk_validate_csv.py +315 -0
- package/assets/ops-direct-invoke/skills/ascendc-whitebox-design/scripts/update_path_list.py +143 -0
- package/assets/ops-direct-invoke/skills/cann-env-setup/SKILL.md +177 -0
- package/assets/ops-direct-invoke/skills/cann-env-setup/evals/evals.json +144 -0
- package/assets/ops-direct-invoke/skills/cann-env-setup/references/env_dependence.md +77 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/SKILL.md +51 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/overall-implementation.md +226 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/aclnn-adaptation.md +34 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/aicpu-load-balance-metadata.md +116 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/channel-buffer.md +36 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/compilation-launch.md +144 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/host-validation.md +34 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/layout-tail.md +53 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/synchronization.md +80 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/torch-registration.md +66 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/vf.md +144 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/patterns/workspace.md +67 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-best-practice/references/production-code.md +120 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-code-reviewer/SKILL.md +25 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-code-reviewer/core/methodology.md +104 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-code-reviewer/references/readability-rules.md +280 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-code-reviewer/steps/clause-review.md +59 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-code-reviewer/steps/report-write.md +60 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-code-reviewer/workflows/file-review.md +49 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-code-reviewer/workflows/pr-review.md +58 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/SKILL.md +97 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/references/checks-and-troubleshooting.md +96 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/references/env-selected-soc-schema.md +43 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/references/environment-schema.md +112 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/scripts/check_env.sh +34 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/scripts/env_check.py +946 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/scripts/probe_compile_stage.py +99 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/scripts/probe_kernel.py +33 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-env-check/tests/test_env_report.py +90 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/SKILL.md +60 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/references/pipeline-design.md +84 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/references/stage-cost-model.md +77 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/DESIGN-BRANCH.md.templ +119 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/INDEX.md.templ +34 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/API.md.templ +67 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/DevView.md.templ +67 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/HostLaunch.md.templ +119 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/InferShapeDtype.md.templ +56 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/Interface.md.templ +61 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/Kernel.md.templ +183 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/LaunchData.md.templ +126 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/Overview.md.templ +57 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/TemplatePartition.md.templ +69 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-op-design/templates/design/Validation.md.templ +80 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/SKILL.md +64 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/assets/case_contract.py +269 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/assets/test.py +571 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/references/cases.md +29 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/references/evidence.md +67 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/references/golden.md +12 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/scripts/build_blackbox_cases.py +536 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/scripts/build_tdd_cases.py +498 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/scripts/build_whitebox_cases.py +183 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/scripts/casebook.py +71 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/scripts/generator_support.py +95 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/scripts/prepare_golden.py +390 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/scripts/recipe_validation.py +144 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/tests/test_evidence_chain.py +339 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/tests/test_skills.py +547 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-test-generator/tests/test_synthesize_dtype.py +85 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-unit-planner/SKILL.md +35 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-unit-planner/references/decomposition-checks.md +46 -0
- package/assets/ops-direct-invoke/skills/cannbot-dsl-unit-planner/references/unit-format.md +77 -0
- package/assets/ops-direct-invoke/skills/npu-arch/SKILL.md +87 -0
- package/assets/ops-direct-invoke/skills/npu-arch/evals/evals.json +356 -0
- package/assets/ops-direct-invoke/skills/npu-arch/references/npu-arch-guide-triton.md +312 -0
- package/assets/ops-direct-invoke/skills/npu-arch/references/npu-arch-guide.md +454 -0
- package/assets/ops-direct-invoke/skills/npu-arch/references/npu-hardware-params.md +248 -0
- package/assets/ops-direct-invoke/skills/npu-arch/references/simt-arch-guide.md +303 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/SKILL.md +41 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/index.md +32 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/api/arithmetic_and_reduce.md +96 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/api/datacopy_best_practices.md +87 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/api/index.md +37 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/api/pipeline_and_buffer.md +87 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/api/precision_and_runtime.md +98 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/api/regbase_api_reference.md +88 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/api/regbase_api_sync.md +112 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/api/regbase_api_whitelist.md +121 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/complexity_and_route_selection.md +113 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/index.md +55 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/process_memory_cards.md +54 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/regbase_build_notes.md +87 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/regbase_kernel_case_notes.md +103 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/regbase_performance_practices.md +92 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/regbase_programming_notes.md +108 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/requirements_analysis_patterns.md +97 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/small_channel_transpose_notes.md +78 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/tiling_review_notes.md +87 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/dev-experience/working_vs_failed_950_cases.md +85 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/index.md +30 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/broadcast_patterns.md +132 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/index.md +48 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/inplace_operator_patterns.md +182 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/kernel_design_patterns.md +117 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/reduction_patterns.md +152 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/regbase_buffer_partitioning.md +122 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/regbase_kernel_dataflow_patterns.md +164 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/regbase_operator_patterns.md +138 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/regbase_sync_patterns.md +113 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/tiling_input_validation.md +267 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/patterns/tiling_patterns.md +124 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/pitfalls/api_misuse.md +161 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/pitfalls/common_traps.md +199 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/pitfalls/index.md +41 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/pitfalls/precision_failures.md +176 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/pitfalls/precision_guide.md +190 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/pitfalls/regbase_vs_membase_confusions.md +89 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/pitfalls/symptom_to_cause.md +58 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/knowledge/regbase_development_guide.md +290 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/design_sample/flash_attn-arch35-best-practices.md +80 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/design_sample/quant_flash_attn-arch35-best-practices.md +67 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/design_sample/sparse_flash_attention-arch35-best-practices.md +66 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/design_sample/sparse_flash_mla-arch35-best-practices.md +69 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/patterns.md +65 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/advanced.md +37 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/buffer.md +241 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/compute-flow.md +111 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/load-balancing.md +42 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/pipeline-example.md +173 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/pipeline.md +60 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/pre-knowledge.md +197 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/roofline.md +220 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/selection.md +32 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/stage-cost.md +63 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/trait-mla.md +36 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/trait-quantization.md +51 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/FA/references/trait-sparse.md +35 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/README.md +20 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/capability-mapping.md +41 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/dag-buffers.md +285 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/design-spec.md +24 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-code/op_host/adam_apply_one_assign_def.cpp +104 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-code/op_host/arch35/adam_apply_one_assign_tiling_arch35.cpp +572 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-code/op_host/arch35/adam_apply_one_assign_tiling_arch35.h +86 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-code/op_kernel/adam_apply_one_assign.cpp +46 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-code/op_kernel/arch35/adam_apply_one_assign_kernel.h +343 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-code/op_kernel/arch35/adam_apply_one_assign_struct.h +29 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-code/op_kernel/arch35/adam_apply_one_assign_tiling_struct.h +53 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-design/adam_apply_one_assign_analysis.md +143 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/examples-adam-design/adam_apply_one_assign_design.md +2840 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/CMakeLists.txt +328 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/README.md +162 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_graph/xdivy_graph_infer.cpp +40 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_graph/xdivy_proto.h +44 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_host/arch35/xdivy_tiling_arch35.cpp +582 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_host/arch35/xdivy_tiling_arch35.h +94 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_host/xdivy_def.cpp +62 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_host/xdivy_infershape.cpp +60 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_kernel/arch35/xdivy_kernel.h +337 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_kernel/arch35/xdivy_struct.h +30 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_kernel/arch35/xdivy_tiling_struct.h +57 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/op_kernel/xdivy.cpp +44 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/aclnn/CMakeLists.txt +67 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/aclnn/run.sh +57 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/aclnn/test_aclnn.cpp +353 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/geir/CMakeLists.txt +69 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/geir/run.sh +59 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/geir/test_geir.cpp +409 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/tiling/CMakeLists.txt +185 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/tiling/run.sh +62 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/example/xdivy_custom_package/tests/tiling/test_tiling.cpp +355 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/index.md +48 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/kernel-entrance.md +95 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/kernel-helpers.md +208 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/kernel-template.md +617 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/overview.md +250 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/pitfalls.md +50 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/tiling-preprocess.md +487 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/ascendc/tiling.md +374 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/dsl/capability-mapping.md +50 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/dsl/implementation-guide.md +52 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/adapters/dsl/index.md +33 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/capability-contract.md +41 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/compute-flow.md +216 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/index.md +23 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/liveness-fusion.md +200 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/scene.md +68 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/shape-preprocessing.md +209 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/splitting.md +158 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/sync-model.md +79 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/generic/verification.md +131 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/broadcast/patterns.md +62 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/common/broadcast-rules.md +126 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/common/cast-rules.md +414 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/common/datacopypad-rules.md +186 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/common/nddma-rules.md +257 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/common/sync-and-consistency.md +315 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/common/value-depend-process.md +40 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/common/vf-programming-rules.md +150 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/example-routes.yaml +31 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/general-methodology-dsl.md +11 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/general-methodology.md +94 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/binary-tree.md +260 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/capability-mapping.md +49 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/design-spec.md +26 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/CMakeLists.txt +289 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/README.md +147 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_graph/euclidean_norm_graph_infer.cpp +39 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_graph/euclidean_norm_proto.h +54 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_host/arch35/euclidean_norm_tiling_arch35.cpp +1027 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_host/arch35/euclidean_norm_tiling_arch35.h +28 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_host/euclidean_norm_def.cpp +85 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_host/euclidean_norm_infershape.cpp +211 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_apt.cpp +41 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_base.h +911 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_empty.h +141 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_group.h +381 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_tiling_data.h +65 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/op_kernel/arch35/euclidean_norm_tiling_key.h +30 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/aclnn/CMakeLists.txt +59 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/aclnn/run.sh +37 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/aclnn/test_aclnn.cpp +223 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/geir/CMakeLists.txt +84 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/geir/run.sh +49 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/geir/test_geir.cpp +296 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/tiling/CMakeLists.txt +143 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/tiling/run.sh +41 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/example/euclidean_norm_package/tests/tiling/test_tiling.cpp +320 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/highlevel-api.md +146 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/index.md +48 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/kernel-entrance.md +97 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/overview.md +237 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/survival-node.md +74 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/binary-base/dag-buffers.md +612 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/binary-base/kernel-template.md +1213 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/binary-base/tiling.md +511 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/binary-group/dag-buffers.md +209 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/binary-group/kernel-template.md +577 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/binary-group/tiling.md +199 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/empty/dag-buffers.md +292 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/empty/kernel-template.md +349 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/templates/empty/tiling.md +230 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/tiling-preprocess.md +218 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/tuple-reduce.md +72 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/adapters/ascendc/vf-fusion-rules.md +95 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/axis-preprocessing.md +109 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/capability-contract.md +48 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/index.md +23 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/liveness-fusion.md +111 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/scene.md +92 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/splitting.md +230 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/sync-model.md +86 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/tree-reduction.md +160 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/generic/tuple-reduce.md +53 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/patterns.md +62 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/reduction/validate_gates.py +196 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/resolve_example.py +170 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/paradigms/routes.yaml +39 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/references/reference-ops/open_source_operator_table.md +715 -0
- package/assets/ops-direct-invoke/skills/ops-design-paradigms/tests/test_language_route.py +142 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/SKILL.md +249 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/scripts/assemble_cannbotdsl_design.py +156 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/scripts/assemble_workflow.py +571 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/scripts/build_implementation_subgraph.py +320 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/scripts/generate_workflow_guide.py +94 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/scripts/run_workflow.py +121 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/scripts/validate_unit_contracts.py +228 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/ascendc//344/273/243/347/240/201/344/277/256/345/244/215.yaml +39 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/ascendc//346/212/200/346/234/257/347/251/277/345/210/272.yaml +40 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/ascendc//346/226/207/346/241/243/345/207/206/345/244/207.yaml +27 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/ascendc//346/265/213/350/257/225/345/267/245/347/250/213/345/274/200/345/217/221.yaml +33 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/ascendc//347/231/275/347/233/222/346/265/213/350/257/225/350/256/276/350/256/241.yaml +34 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/ascendc//347/237/245/350/257/206/346/220/234/351/233/206.yaml +36 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/ascendc//347/256/227/345/255/220/345/274/200/345/217/221.yaml +47 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/ascendc//351/273/221/347/233/222/346/265/213/350/257/225/350/256/276/350/256/241.yaml +27 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//344/272/244/344/273/230.yaml +15 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//344/273/243/347/240/201/346/243/200/350/247/206.yaml +18 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//345/210/233/345/273/272/345/267/245/344/275/234/345/214/272.yaml +17 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//345/215/225/345/205/203/344/273/273/345/212/241/346/213/206/345/210/206.yaml +22 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//345/215/225/345/205/203/345/256/236/347/216/260.yaml +27 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//345/215/225/345/205/203/351/233/206/346/210/220/345/244/215/351/252/214.yaml +19 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//345/256/236/347/216/260/344/277/256/345/244/215.yaml +21 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//345/256/236/347/216/260/346/243/200/350/247/206.yaml +20 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//345/256/236/347/216/260/351/227/250/347/246/201.yaml +17 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//346/200/247/350/203/275/344/274/230/345/214/226.yaml +22 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//346/226/207/346/241/243/347/224/237/346/210/220.yaml +15 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//346/226/271/346/241/210/350/256/276/350/256/241.yaml +32 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//346/265/213/350/257/225/347/224/237/346/210/220.yaml +29 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//347/216/257/345/242/203/345/260/261/347/273/252.yaml +25 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//347/262/276/345/272/246/351/252/214/350/257/201.yaml +25 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//350/247/204/346/240/274/347/224/237/346/210/220.yaml +18 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//351/234/200/346/261/202/345/210/206/346/236/220.yaml +16 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/cannbot-dsl//351/273/221/347/233/222/347/224/250/344/276/213/350/256/276/350/256/241.yaml +19 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/tasks/common/.gitkeep +0 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/templates//344/273/243/347/240/201/346/243/200/350/247/206/346/212/245/345/221/212.md +70 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/templates//345/212/237/350/203/275/351/252/214/346/224/266/346/212/245/345/221/212.md +80 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/templates//346/265/213/350/257/225/346/211/247/350/241/214/350/256/260/345/275/225.md +73 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/templates//347/231/275/347/233/222/346/265/213/350/257/225/350/256/276/350/256/241.md +37 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/templates//347/237/245/350/257/206/346/220/234/351/233/206.md +25 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/templates//351/252/214/346/224/266/346/212/245/345/221/212.md +39 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/templates//351/273/221/347/233/222/346/265/213/350/257/225/350/256/276/350/256/241.md +130 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/workflows/ascendc/basic.yaml +57 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/workflows/ascendc/feasibility.yaml +13 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/workflows/cannbot-dsl/op-dev.graph-preview.yaml +18 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke/workflows/cannbot-dsl/op-dev.yaml +142 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/SKILL.md +115 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/reference/agents-entry.md +23 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/reference/documentation.md +52 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/reference/ops-direct-invoke.md +67 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/reference/repo-skills.md +85 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/reference/subagents.md +43 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/reference/task-authoring.md +83 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/reference/tests.md +33 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/test/ut/dsl_generation/test.py +499 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/test/ut/support.py +122 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/test/ut/test_all.py +59 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/test/ut/variables/test.py +100 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/test/ut/workflow_execution/test.py +134 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/test/ut/workflow_generation/test.py +457 -0
- package/assets/ops-direct-invoke/skills/ops-direct-invoke-maintain/test/ut/workflow_guide/test.py +91 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/SKILL.md +22 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/evals/evals.json +120 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/references/benchmark_construction.md +77 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/references/float_compute.md +126 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/references/integer_compute.md +105 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/references/non_compute.md +81 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/references/quantization.md +49 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/references/random_generation.md +198 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/references/test_case_generation.md +61 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/scripts/bitwise_match.py +103 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/scripts/integer_compute_check.py +157 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/scripts/mixed_tolerance_check.py +178 -0
- package/assets/ops-direct-invoke/skills/ops-precision-standard/scripts/random_distribution_check.py +247 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/SKILL.md +185 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/evals/evals.json +196 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/SKILL.md +259 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/VERSION +10 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/evals/evals.json +33 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/references/collection-workflow.md +91 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/references/data-contract.md +63 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/references/environment-and-failure.md +82 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/references/validation-and-performance.md +63 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/references/visualization-contract.md +86 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/collect.py +2209 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/collect_discovery.py +987 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/collect_validate.py +607 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/environment_context.py +723 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/estimate_runtime.py +131 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/run_pipeline.py +339 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/runtime_guard.py +589 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/self_check.py +465 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/visualize.py +1004 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/visualize_common.py +258 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/visualize_parsers.py +1555 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/visualize_render.py +286 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/visualize_resolvers.py +1224 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/scripts/visualize_source.py +1288 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/msopprof-visualization/templates/report_template.html +253 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/references/csv_fields_reference.md +260 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/references/msprof-guide.md +252 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/references/msprof-op-guide.md +241 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/references/optimization_quickref.md +265 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/scripts/msprof_perf_summary.py +2469 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/scripts/msprof_profile_run.sh +400 -0
- package/assets/ops-direct-invoke/skills/ops-profiling/scripts/perf_summary.py +448 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/SKILL.md +233 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/evals/evals.json +128 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/pc-source-mapping.md +76 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/performance-issues-aic.md +557 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/performance-issues-aiv.md +674 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/performance-issues-general.md +199 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/performance-issues-template.md +143 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/performance-metrics-reference.md +350 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/pipeline-bubble-analysis.md +269 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/simulator-advanced.md +174 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/references/troubleshooting.md +105 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/scripts/map_pc_to_source.py +741 -0
- package/assets/ops-direct-invoke/skills/ops-simulator/scripts/trace_bubble_analyzer.py +971 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/SKILL.md +350 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/evals/evals.json +114 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/README.md +71 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/add/spec.yaml +161 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/complex/spec.yaml +154 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/cumsum/spec.yaml +176 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/dropout/spec.yaml +170 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/fused_quant_matmul/spec.yaml +331 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/matmul/spec.yaml +201 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/nonzero/spec.yaml +174 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/reduce_sum/spec.yaml +151 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/reduce_sum_all/spec.yaml +135 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/reduce_sum_fixed/spec.yaml +143 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/softmax/spec.yaml +231 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/examples/split/spec.yaml +160 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/references/accumulation_order.md +63 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/references/error-codes.md +199 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/references/spec-cheatsheet.md +358 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/references/stage-rules.md +476 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/references/usage-scenarios.md +265 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/anti_pattern_registry.yaml +51 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/boundary_min_cases.yaml +215 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/category_enum.yaml +37 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/category_paradigm_map.yaml +145 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/chip_registry.yaml +82 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/error_code_enum.yaml +25 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/framework_oracle_registry.yaml +22 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/invariant_kind_registry.yaml +130 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/machine_check_kind_registry.yaml +84 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/paradigm_enum.yaml +48 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/primitive_whitelist.yaml +67 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/synthesize_pattern_registry.yaml +58 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/registries/tolerance_defaults.yaml +53 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/schemas/op-spec.json +762 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/check_registry_schema_sync.py +167 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/dump_rule_ids.py +168 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/__init__.py +8 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/_ast_sandbox.py +142 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/broadcast.py +270 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/dtype_eval.py +186 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/extreme_inputs_check.py +355 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/formula_eval.py +431 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/formula_oracle_equiv.py +603 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/invariant_exec.py +569 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/oracle_check.py +465 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/parser.py +71 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/promote.py +254 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/shape_eval.py +368 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/stages.py +995 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/evaluators/types.py +130 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/generate_spec.py +1571 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/scripts/validate_spec.py +1848 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/templates/spec.yaml.tmpl +100 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/conftest.py +21 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_attr_resolve.py +72 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_broadcast.py +85 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_doc_drift.py +45 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_dtype_eval.py +163 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_examples.py +54 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_extreme_inputs_check.py +181 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_formula_eval.py +154 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_formula_oracle_equiv.py +281 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_generate_spec.py +98 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_invariant_exec.py +235 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_main_pipeline.py +419 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_oracle.py +255 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_promote.py +127 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_registry_schema_sync.py +32 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_sandbox_escape.py +90 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_shape_eval.py +220 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_shape_literal.py +82 -0
- package/assets/ops-direct-invoke/skills/ops-spec-gen/tests/test_stage2_constraints.py +213 -0
- package/assets/ops-direct-invoke/skills/repo-build-guide/SKILL.md +10 -0
- package/assets/ops-direct-invoke/skills/repo-build-guide/references/build-guide.md +42 -0
- package/assets/ops-direct-invoke/skills/repo-coding-rules/SKILL.md +10 -0
- package/assets/ops-direct-invoke/skills/repo-coding-rules/references/red-lines.md +42 -0
- package/assets/ops-direct-invoke/skills/repo-env-check/SKILL.md +44 -0
- package/assets/ops-direct-invoke/skills/repo-env-check/references//347/216/257/345/242/203/344/277/241/346/201/257.md +42 -0
- package/assets/ops-direct-invoke/skills/repo-knowledge/SKILL.md +12 -0
- package/assets/ops-direct-invoke/skills/repo-knowledge/references/evaluation-contract.md +48 -0
- package/assets/ops-direct-invoke/skills/repo-op-templates/SKILL.md +15 -0
- package/assets/ops-direct-invoke/skills/repo-op-templates/references/operator-template.md +27 -0
- package/assets/ops-direct-invoke/skills/repo-op-templates/references/project-skeleton.md +41 -0
- package/assets/ops-direct-invoke/skills/repo-requirement/SKILL.md +39 -0
- package/assets/ops-direct-invoke/skills/repo-requirement/references/requirement-checklist.md +70 -0
- package/assets/ops-direct-invoke/skills/repo-test-develop/SKILL.md +17 -0
- package/assets/ops-direct-invoke/skills/repo-test-develop/references/blackbox-design.md +30 -0
- package/assets/ops-direct-invoke/skills/repo-test-develop/references/cannbench-integration.md +75 -0
- package/assets/ops-direct-invoke/skills/repo-test-develop/references/precision-and-perf.md +36 -0
- package/assets/ops-direct-invoke/skills/repo-test-develop/references/test-framework.md +75 -0
- package/assets/ops-direct-invoke/skills/repo-test-develop/references/whitebox-design.md +19 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/README.md +145 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/SKILL.md +84 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/approve_task.py +98 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/get_task.py +1133 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/init_status.py +131 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/link_agent_config.py +89 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/orchestrator.py +738 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/poll_workflow.py +392 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/task_graph.py +144 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/update_status.py +149 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/verdict_common.py +103 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/verdict_fail.py +22 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/scripts/verdict_pass.py +21 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/templates/basic_workflow.yaml +113 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/tests/test_agent_exit.py +91 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/tests/test_approval.py +490 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/tests/test_link_agent_config.py +202 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/tests/test_nested_subgraphs.py +337 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/tests/test_orchestrator.py +1383 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/tests/test_poll_workflow.py +371 -0
- package/assets/ops-direct-invoke/skills/workflow-orchestrator/tests/test_verdict.py +148 -0
- package/cordis.patch.yml +3 -0
- package/icon.svg +1 -0
- package/lib/client.js +384 -0
- package/lib/client.js.map +1 -0
- package/lib/index.js +20 -0
- package/locale/en.json +1 -0
- package/locale/zh.json +1 -0
- package/package.json +63 -3
- package/upstream.json +10 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>msOpProf Performance Report</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root{
|
|
9
|
+
color-scheme:light;
|
|
10
|
+
--bg:#f4f6fa;--panel:#fff;--panel2:#f8fafc;--line:#dfe5ee;--line2:#cbd5e1;
|
|
11
|
+
--text:#172033;--muted:#667085;--accent:#2457d6;--accent2:#6fa3ff;
|
|
12
|
+
--high:#a94442;--high-bg:#fff6f5;--low:#3f6fae;--low-bg:#f3f7fc;
|
|
13
|
+
--normal:#f8fafc;--normal-border:#d8e0ea;--amber:#a15c00;--amber-bg:#fff8e8;
|
|
14
|
+
--shadow:0 1px 2px rgba(16,24,40,.04),0 8px 22px rgba(16,24,40,.04)
|
|
15
|
+
}
|
|
16
|
+
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,"Noto Sans SC",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:13px}
|
|
17
|
+
button,input,select{font:inherit}.topbar{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.97);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
|
|
18
|
+
.head{height:58px;display:flex;align-items:center;padding:0 24px}.brand{font-size:17px;font-weight:760;letter-spacing:.01em}.tabs{display:flex;gap:2px;padding:0 18px;overflow:auto}.tab{border:0;background:transparent;color:#475467;padding:10px 13px;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;font-size:13px}.tab:hover{color:var(--accent);background:#f8fbff}.tab.active{color:var(--accent);font-weight:700;border-bottom-color:var(--accent)}
|
|
19
|
+
main{max-width:none;margin:0;padding:14px 14px 32px}body.source-immersive{overflow:hidden;background:#fff}body.source-immersive .topbar{display:none}body.source-immersive main{height:100vh;padding:0;overflow:hidden}body.source-immersive .view{height:100vh}.view{display:none}.view.active{display:block}.section{margin:0 0 24px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 10px}.section-head h2{font-size:15px;margin:0;font-weight:760}.controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.controls .label{font-size:11px;color:var(--muted)}select,input{border:1px solid var(--line2);border-radius:7px;background:#fff;padding:6px 9px;color:var(--text);font-size:11px}
|
|
20
|
+
.card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.card{padding:14px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.label{font-size:11px;color:var(--muted)}.value{font-weight:730}.small,.muted{font-size:10px;color:var(--muted)}
|
|
21
|
+
.empty-canvas{height:320px;border:1px solid var(--line);border-radius:10px;background:linear-gradient(#fff,#fff),repeating-linear-gradient(0deg,transparent 0,transparent 31px,#f1f5f9 32px),repeating-linear-gradient(90deg,transparent 0,transparent 31px,#f1f5f9 32px);box-shadow:var(--shadow)}.coverage-bar{display:none;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 24px 9px;border-top:1px solid #eef2f6;background:#fbfcfe;color:#536174;font-size:10px}.coverage-bar.visible{display:flex}.coverage-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:3px 8px}.coverage-chip.omitted{border-color:#ead7b4;background:#fff9ed;color:#7b4d00}.unavailable-card{max-width:920px;margin:28px auto;padding:22px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.unavailable-card h2{margin:0 0 8px;font-size:18px}.unavailable-card p{color:#536174;line-height:1.65}.unavailable-evidence{display:grid;gap:6px;margin-top:14px}.unavailable-evidence div{padding:8px 10px;border:1px solid var(--line);border-radius:7px;background:#f8fafc;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}
|
|
22
|
+
.chart-tooltip{position:fixed;pointer-events:none;background:#172033;color:#fff;border-radius:6px;padding:7px 9px;font-size:11px;box-shadow:0 6px 20px rgba(0,0,0,.18);opacity:0;z-index:99;transform:translate(10px,-10px)}
|
|
23
|
+
/* Details: Basic information */
|
|
24
|
+
.basic-card{padding:12px 14px;min-height:76px}.basic-card .value{font-size:18px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.duration-wrap{margin-top:10px;padding:8px 12px 6px}.duration-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}.duration-chart{width:100%;height:165px;display:block}
|
|
25
|
+
/* Details: Occupancy */
|
|
26
|
+
.occ-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px}.summary-chip{border:1px solid var(--line);background:#fbfcfe;border-radius:8px;padding:9px 11px}.summary-chip .value{font-size:16px;margin-top:3px}.occ-card-wrap{padding:12px}.occ-layout-note{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-2px 0 9px;padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:#f8fafc;color:#5f6b7c;font-size:10px}.occ-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.physical-core{border:1px solid var(--line);border-radius:8px;background:#fbfcfe;padding:7px;min-height:74px}.physical-core-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.physical-core-id{font-weight:760;font-size:11px;color:#243047}.physical-core-count{font-size:9px;color:var(--muted)}.subcore{border:1px solid var(--normal-border);background:var(--normal);border-radius:6px;padding:8px 9px;margin-top:5px;cursor:pointer;transition:.12s}.subcore:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(16,24,40,.07)}.subcore.high{border-color:#d7a09e;background:var(--high-bg)}.subcore.low{border-color:#adc0da;background:var(--low-bg)}.subcore.selected{outline:2px solid #344054;outline-offset:1px}.subcore-top{display:flex;justify-content:space-between;gap:6px;align-items:center}.subcore-name{font-size:10px;font-weight:700;color:#344054}.subcore-flag{font-size:9px;font-weight:700;border-radius:999px;padding:2px 5px}.high .subcore-flag{background:#f4dedd;color:var(--high)}.low .subcore-flag{background:#e2ebf7;color:var(--low)}.subcore-val{font-size:15px;font-weight:760;margin-top:4px;color:#172033}.occ-legend{display:flex;align-items:center;gap:12px;margin-top:10px;color:var(--muted);font-size:10px}.dot{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:4px;vertical-align:-1px}.dot.normal{background:#f8fafc;border:1px solid #cbd5e1}.dot.low{background:#e2ebf7;border:1px solid #91a9c8}.dot.high{background:#f4dedd;border:1px solid #c98f8d}.core-detail{margin-top:10px;border-top:1px solid var(--line);padding-top:10px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px}.detail-metric{padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:#fff}.detail-metric .value{font-size:12px;margin-top:3px}
|
|
27
|
+
/* Details: Compute */
|
|
28
|
+
.compute-type-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:10px}.compute-panel{padding:12px}.compute-panel-title{font-size:12px;font-weight:780;text-transform:uppercase;letter-spacing:.03em;margin-bottom:10px}.compute-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}.compute-panel-head .compute-panel-title{margin-bottom:2px}.engine-badge{font-size:9px;font-weight:800;border-radius:999px;padding:3px 7px;background:#eef4ff;color:#2457d6}.engine-badge.cube{background:#eef9f0;color:#20733a}.compute-metric-section{border-top:1px solid var(--line);padding-top:8px;margin-top:8px}.compute-metric-title{font-size:10px;font-weight:760;color:#475467;text-transform:uppercase;letter-spacing:.04em;margin:3px 0 6px}.compute-metric-title.table-title{margin-top:12px}.util-fill.breakdown{background:linear-gradient(90deg,#7c3aed,#a78bfa)}.util-fill.wait{background:linear-gradient(90deg,#d97706,#fbbf24)}.util-row{display:grid;grid-template-columns:minmax(150px,1.2fr) 4fr 76px;gap:9px;align-items:center;margin:8px 0}.util-name{font-size:11px}.util-track{height:16px;border:1px solid var(--line);background:#eef2f7;border-radius:3px;overflow:hidden}.util-fill{height:100%;background:linear-gradient(90deg,#2457d6,#6fa3ff)}.util-val{text-align:right;font-variant-numeric:tabular-nums;font-size:11px}.axis-row{display:grid;grid-template-columns:minmax(150px,1.2fr) 4fr 76px;gap:9px;color:#98a2b3;font-size:9px;margin-top:2px}.axis-ticks{display:flex;justify-content:space-between}.compute-table,.mem-table{width:100%;border-collapse:collapse;font-size:11px;margin-top:10px}.compute-table th,.compute-table td,.mem-table th,.mem-table td{border-top:1px solid var(--line);padding:7px 8px;text-align:left}.compute-table th,.mem-table th{background:#f8fafc;color:#475467;font-size:10px}.compute-table td.num,.mem-table td.num{text-align:right;font-variant-numeric:tabular-nums}
|
|
29
|
+
/* Details: Memory */
|
|
30
|
+
.memory-shell{padding:14px}.memory-toolbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}.memory-toolbar .label{font-weight:650;color:#344054}.memory-binding{margin-left:auto;color:#536174;font-size:10px}.memory-summary-note{width:100%;color:#697586;font-size:10px}.memory-topology{width:100%;height:410px;border:1px solid #cfd7e3;border-radius:6px;background:#fff;display:block}.topology-note{font-size:10px;color:var(--muted);margin-top:7px}.advice{margin-top:10px;border-left:3px solid #e0a000;background:var(--amber-bg);color:#5b451d;border-radius:4px;padding:9px 11px;font-size:11px;line-height:1.55}.advice-stack{display:grid;gap:6px;margin-top:10px}.memory-tables{display:grid;grid-template-columns:1fr;gap:10px;margin-top:12px}.mem-group{border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#fff}.mem-group-head{display:flex;align-items:center;justify-content:space-between;background:#eef2f7;border-bottom:1px solid var(--line);padding:8px 10px;font-size:11px;font-weight:760}.mem-table{margin:0;table-layout:fixed;width:100%;border-collapse:collapse}.mem-table col.item-col{width:30%}.mem-table th,.mem-table td{padding:7px 10px;border-top:1px solid var(--line);vertical-align:middle}.mem-table thead th{background:#f8fafc;color:#344054;font-size:10px;font-weight:720;border-top:0;border-bottom:1px solid var(--line)}.mem-table th:first-child,.mem-table td:first-child{text-align:left}.mem-table th:not(:first-child),.mem-table td:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}.mem-table tbody tr:nth-child(even){background:#fbfcfe}.mem-table tbody tr:hover{background:#f2f6ff}.na{color:#98a2b3}.edge-label{font-size:10px;font-weight:760;fill:#27364d;font-variant-numeric:tabular-nums}.node-title{font-size:13px;font-weight:780;fill:#fff}.node-sub{font-size:10px;fill:#fff}.node-memory{fill:#2b67b1;stroke:#24558f;stroke-width:1}.node-buffer{fill:#4f8f78;stroke:#3f7461;stroke-width:1}.node-compute{fill:#708c2a;stroke:#5b7222;stroke-width:1}.node-other{fill:#7469a9;stroke:#5e558b;stroke-width:1}.edge{stroke:#687384;stroke-width:1.45;fill:none}.edge-pill{fill:#fff;stroke:#cfd7e3;stroke-width:1}.legend-scale{font-size:10px;fill:#667085}.topology-group{fill:#fbfcfe;stroke:#cbd3df;stroke-width:1.2}.topology-group-label{font-size:10px;font-weight:720;fill:#697586;letter-spacing:.03em}.unmapped-paths{margin-top:8px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.unmapped-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:3px 7px;font-size:9px;color:var(--muted)}
|
|
31
|
+
/* Common other pages */
|
|
32
|
+
.roofline-wrap{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}.roofline-stack{display:grid;gap:14px}.roofline-card{position:relative;padding:12px 14px 10px;overflow:visible}.roofline-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:2px}.roofline-title{text-align:left;font-size:13px;font-weight:780;margin:0}.roofline-live-status{font-size:9px;color:#7a8698;white-space:nowrap}.roofline-stage{position:relative;min-width:0}.roofline-svg{width:100%;height:460px;display:block;background:#fff;touch-action:none;overflow:visible}.roofline-legend{display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 0;color:#596579;font-size:9px}.roofline-legend-item{display:inline-flex;align-items:center;gap:5px;padding:3px 5px;border-radius:4px;transition:.14s}.roofline-line-key{width:16px;height:0;border-top:2px solid currentColor}.roofline-line-key.compute{border-top-style:dashed}.roofline-point-key{width:7px;height:7px;border-radius:50%;background:currentColor}.roofline-axis{stroke:#8792a2;stroke-width:1;vector-effect:non-scaling-stroke}.roofline-grid{stroke:#e5eaf1;stroke-width:1;vector-effect:non-scaling-stroke}.roofline-tick{fill:#697586;font-size:9px}.roofline-axis-label{fill:#596579;font-size:10px}.roofline-curve-visual{fill:none;stroke-width:1.9;opacity:.86;pointer-events:none;transition:stroke-width .14s,opacity .14s,filter .14s;vector-effect:non-scaling-stroke}.roofline-curve-visual.active{stroke-width:4;opacity:1;filter:drop-shadow(0 0 3px rgba(36,87,214,.36))}.roofline-curve-visual.dimmed{opacity:.18}.roofline-curve-hit{fill:none;stroke:rgba(0,0,0,.001);stroke-width:16;pointer-events:stroke;cursor:crosshair;vector-effect:non-scaling-stroke}.roofline-point{stroke:#fff;stroke-width:1.4;cursor:crosshair;transition:transform .12s,opacity .12s,filter .12s;transform-box:fill-box;transform-origin:center;vector-effect:non-scaling-stroke}.roofline-point.active{transform:scale(1.42);filter:drop-shadow(0 2px 4px rgba(16,24,40,.30))}.roofline-point.dimmed{opacity:.25}.roofline-interaction-surface{fill:transparent;pointer-events:all;cursor:crosshair}.roofline-crosshair{opacity:0;pointer-events:none;transition:opacity .08s}.roofline-crosshair.visible{opacity:1}.roofline-crosshair-line{stroke:#596579;stroke-width:1;stroke-dasharray:3 3;opacity:.78;vector-effect:non-scaling-stroke}.roofline-coordinate-box{fill:#4b5565;stroke:#fff;stroke-width:.6;rx:3}.roofline-coordinate-text{fill:#fff;font-size:9px;font-weight:650;font-variant-numeric:tabular-nums}.roofline-tooltip{position:absolute;left:0;top:0;min-width:225px;max-width:300px;padding:10px 11px;background:rgba(255,255,255,.98);border:1px solid #d9e1ec;border-left:3px solid var(--roofline-tip-color,#2457d6);border-radius:6px;box-shadow:0 10px 28px rgba(16,24,40,.18);font-size:10px;line-height:1.52;color:#344054;pointer-events:none;opacity:0;transform:translateY(3px);transition:opacity .08s,transform .08s;z-index:8}.roofline-tooltip.visible{opacity:1;transform:translateY(0)}.roofline-tooltip-title{font-size:11px;font-weight:780;color:#172033;margin-bottom:5px;display:flex;align-items:center;gap:6px}.roofline-tooltip-dot{width:8px;height:8px;border-radius:50%;background:var(--roofline-tip-color,#2457d6);flex:0 0 auto}.roofline-tooltip-grid{display:grid;grid-template-columns:minmax(112px,auto) 1fr;gap:2px 8px}.roofline-tooltip-key{color:#7a8698}.roofline-tooltip-val{font-variant-numeric:tabular-nums;text-align:right;color:#263247;font-weight:620}.roofline-advice{position:static}.roofline-no-plot{border:1px solid #e0b25b;border-left:4px solid #c88a12;background:#fff9ec;border-radius:8px;padding:16px 18px;line-height:1.6;color:#5d430f}.roofline-no-plot-title{font-size:13px;font-weight:780;color:#3f2d09;margin-bottom:5px}.roofline-no-plot-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;background:#fff;border:1px solid #ead8b2;border-radius:4px;padding:2px 5px}.advice-list{display:flex;flex-direction:column;gap:8px}.advice-item{border-left:3px solid var(--accent);background:#f8fbff;border-radius:6px;padding:10px 11px;font-size:11px;line-height:1.6}.cache-shell{display:flex;flex-direction:column;gap:12px}.cache-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px}.cache-toolbar .cache-note{margin-left:auto;max-width:760px;color:#667085;font-size:10px;line-height:1.45}.cache-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.cache-map-card{padding:12px;min-width:0}.cache-map-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.cache-map-title{font-size:13px;font-weight:780}.cache-map-total{font-size:10px;color:#667085;font-variant-numeric:tabular-nums}.cache-expand{border:1px solid var(--line2);background:#fff;border-radius:6px;padding:4px 8px;cursor:pointer;color:#475467;font-size:10px}.cache-expand:hover{border-color:#7d9bd1;color:#2457d6}.cache-matrix-wrap{display:grid;grid-template-columns:28px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 20px;gap:4px;min-height:390px}.cache-y-label,.cache-x-label{display:flex;align-items:center;justify-content:center;color:#8b96a8;font-size:9px}.cache-y-label{writing-mode:vertical-rl;transform:rotate(180deg)}.cache-matrix{display:grid;grid-template-columns:repeat(var(--cache-cols),minmax(2px,1fr));grid-auto-rows:minmax(2px,1fr);gap:1px;aspect-ratio:1/1;min-width:0;min-height:0;background:#98a2b3;border:1px solid #98a2b3;overflow:hidden}.cache-matrix-cell{min-width:0;min-height:0;border:0;padding:0;cursor:pointer;outline:0}.cache-matrix-cell:hover{box-shadow:inset 0 0 0 2px #172033;z-index:2}.cache-matrix-cell.selected{box-shadow:inset 0 0 0 3px #2457d6;z-index:3}.cache-legend{display:flex;align-items:center;justify-content:flex-end;gap:7px;margin-top:8px;color:#667085;font-size:9px}.cache-gradient{width:120px;height:9px;border-radius:2px;background:linear-gradient(90deg,#8793a5,#83cbb7,#d8ef71,#ffd12e,#ff6b2e,#d61616)}.cache-detail{padding:12px}.cache-detail-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.cache-detail-item{border:1px solid var(--line);border-radius:7px;background:#fbfcfe;padding:8px;min-width:0}.cache-detail-item .value{margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.cache-detail-note{grid-column:1/-1;color:#667085;font-size:10px;line-height:1.55;padding:7px 2px}.cache-source-link{border:1px solid var(--line2);background:#fff;border-radius:6px;padding:5px 8px;font-size:10px}.cache-source-link:disabled{opacity:.5;cursor:not-allowed}.cache-modal{display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:120;padding:32px}.cache-modal.visible{display:flex;align-items:center;justify-content:center}.cache-modal-card{width:min(1100px,96vw);height:min(900px,92vh);background:#fff;border-radius:10px;box-shadow:0 24px 70px rgba(15,23,42,.34);display:flex;flex-direction:column;padding:14px}.cache-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.cache-modal-body{flex:1;min-height:0;display:flex;justify-content:center}.cache-modal-body .cache-matrix{height:100%;width:auto;max-width:100%;aspect-ratio:1/1}.cache-modal-close{border:0;background:#f2f4f7;border-radius:6px;width:30px;height:30px;cursor:pointer;font-size:18px}.cache-legacy{padding:12px}.bar-list{display:flex;flex-direction:column;gap:9px}.bar-row{display:grid;grid-template-columns:minmax(180px,1.3fr) minmax(220px,4fr) 90px;gap:10px;align-items:center}.bar-label{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-track{height:16px;background:#edf2f7;border:1px solid var(--line);border-radius:3px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2))}.bar-val{text-align:right;font-size:11px;font-variant-numeric:tabular-nums}
|
|
33
|
+
/* On-Chip Memory */
|
|
34
|
+
.onchip-shell{display:flex;flex-direction:column;gap:12px}.onchip-status{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:11px 13px}.onchip-status-main{font-weight:740}.onchip-status-note{font-size:10px;color:#667085;line-height:1.5}.onchip-warning{margin-top:7px;border:1px solid #f1c4c2;background:#fff4f3;color:#9c2f2b;border-radius:6px;padding:7px 9px;font-size:10px}.onchip-map-card{padding:12px}.onchip-map-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.onchip-svg{width:100%;height:430px;display:block;border:1px solid var(--line);border-radius:7px;background:#fff}.onchip-grid-line{stroke:#e7ebf1;stroke-width:1}.onchip-axis{stroke:#8390a3;stroke-width:1}.onchip-axis-label{fill:#667085;font-size:10px}.onchip-block{stroke:#fff;stroke-width:1;cursor:pointer;opacity:.9}.onchip-block:hover{stroke:#172033;stroke-width:2}.onchip-block.selected{stroke:#2457d6;stroke-width:3;opacity:1}.onchip-lower{display:grid;grid-template-columns:minmax(300px,.75fr) minmax(0,1.8fr);gap:12px}.onchip-detail{padding:12px}.onchip-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.onchip-detail-item{border:1px solid var(--line);border-radius:7px;background:#fbfcfe;padding:8px;min-width:0}.onchip-detail-item.full{grid-column:1/-1}.onchip-detail-item .value{margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.onchip-banks{padding:12px;min-width:0}.onchip-bank-grid{display:grid;grid-template-columns:repeat(var(--bank-cols),minmax(42px,1fr));gap:6px}.onchip-bank-group{border:1px solid var(--line);border-radius:7px;background:#f5f7fa;padding:6px}.onchip-bank-group-title{text-align:center;font-size:9px;font-weight:720;margin-bottom:5px;color:#475467}.onchip-bank-cells{display:grid;grid-template-columns:repeat(auto-fit,minmax(38px,1fr));gap:4px}.onchip-bank{height:48px;display:flex;align-items:center;justify-content:center;border:1px solid #cdd6e2;border-radius:4px;background:#e9eef5;color:#475467;font-size:9px}.onchip-bank.occupied{background:#b7cdf1;border-color:#6e95d1}.onchip-bank.selected{background:#2457d6;color:#fff;border-color:#153f9d}.onchip-bank-note{color:#667085;font-size:10px;padding:18px;text-align:center;border:1px dashed var(--line2);border-radius:7px}.onchip-empty-detail{color:#98a2b3;padding:28px 5px;text-align:center}@media(max-width:1100px){.cache-pair,.onchip-lower{grid-template-columns:1fr}.cache-detail-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
|
|
35
|
+
.source-page{height:100%;min-height:760px;display:flex;flex-direction:column;background:#fff;overflow:hidden;--source-row-h:30px}.source-toolbar{flex:0 0 auto;display:grid;grid-template-columns:minmax(140px,.55fr) minmax(420px,2.8fr) minmax(260px,1.3fr) auto;align-items:center;gap:10px;padding:8px 10px;border-radius:0;box-shadow:none;border-left:0;border-right:0;border-top:0}.source-control-group{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;min-width:0}.source-control-group select{width:100%;min-width:0}.source-toolbar .source-status{text-align:center;color:#536174;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.source-toolbar .source-status strong{color:#2457d6}.source-toolbar .source-right-tools{display:flex;justify-content:flex-end;gap:7px;align-items:center;min-width:0}.source-toolbar input[type=search]{width:190px;min-width:120px}.source-toolbar .check{display:inline-flex;align-items:center;gap:5px;color:#475467;font-size:10px;white-space:nowrap}.source-toolbar input[type=checkbox]{accent-color:var(--accent)}.source-legend{flex:0 0 auto;min-height:28px;padding:5px 10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--line);background:#fbfcfe;color:#697586;font-size:9px}.source-legend:empty{display:none}.source-legend-label{font-weight:750;color:#475467}.source-legend-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.source-legend-dot{width:8px;height:8px;border-radius:2px}.source-fusion-badge{margin-left:auto;border:1px solid #cdd8e8;background:#f5f8fd;color:#46617f;border-radius:999px;padding:2px 7px}.source-layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(430px,var(--source-left,48%)) 7px minmax(560px,1fr);gap:0;background:#fff}.source-splitter{position:relative;cursor:col-resize;background:#eef1f5;border-left:1px solid #d7dde7;border-right:1px solid #d7dde7;touch-action:none}.source-splitter:after{content:"";position:absolute;left:2px;top:46%;width:2px;height:48px;border-radius:2px;background:#aeb8c7}.source-splitter.dragging,.source-splitter:hover{background:#dce7fb}.source-layout.resizing{user-select:none;cursor:col-resize}.source-panel{position:relative;min-width:0;min-height:0;background:#fff;border:0;border-radius:0;box-shadow:none;overflow:hidden;display:flex;flex-direction:column}.source-code-panel{border-right:0}.source-panel-head{flex:0 0 34px;height:34px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 9px;border-bottom:1px solid var(--line);background:#f8fafc}.source-file-title{font-size:9.5px;color:#536174;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-kind-badge{font-size:8.5px;padding:2px 6px;border-radius:999px;border:1px solid #cfd8e8;background:#f2f6ff;color:#2457d6;white-space:nowrap}.source-code-scroll,.source-inst-scroll{flex:1;min-height:0;overflow:auto;position:relative;background:#fff;scrollbar-gutter:stable}.source-code-canvas{min-width:1110px}.source-code-head,.source-code-row{display:grid;grid-template-columns:42px minmax(360px,1fr) 96px 190px 190px 64px;align-items:stretch}.source-code-head{height:34px;background:#f8fafc;border-bottom:1px solid var(--line);font-size:9px;font-weight:720;color:#536174;position:sticky;top:0;z-index:8}.source-code-head>div,.source-code-row>div{padding:6px 6px;border-right:1px solid #edf0f5;min-width:0;overflow:hidden;text-overflow:ellipsis}.source-code-head>div:last-child,.source-code-row>div:last-child{border-right:0}.source-code-body{background:#fff}.source-code-row{min-height:var(--source-row-h);border-bottom:1px solid #eef1f5;font:10px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;cursor:pointer}.source-code-row:hover{background:#f7faff}.source-code-row.mapped{box-shadow:inset 2px 0 #9bb4df}.source-code-row.selected{background:#e6effd;box-shadow:inset 3px 0 #2457d6}.source-code-row.hot .source-line-number{color:#8a5a11;font-weight:800}.source-line-number{text-align:right;color:#8b96a8;user-select:none;font-variant-numeric:tabular-nums}.source-code-text{white-space:pre;overflow:hidden;text-overflow:ellipsis;color:#27364d;min-width:0}.source-code-text .kw{color:#8a4bb4;font-weight:650}.source-code-text .type{color:#2468a2}.source-code-text .comment{color:#6f8b64}.source-code-text .string{color:#a35f32}.source-metric{text-align:right;color:#3f4d61;font-variant-numeric:tabular-nums}.source-metric.zero{color:#b0b8c5}.source-stall-cell{height:100%;display:grid;grid-template-columns:48px minmax(72px,1fr);gap:6px;align-items:center;font-family:Inter,"Noto Sans SC",sans-serif}.source-stall-value{text-align:right;font-size:9px;color:#526176;font-variant-numeric:tabular-nums}.source-stall-track{height:8px;background:#edf1f6;border:1px solid #dfe5ed;border-radius:2px;overflow:hidden;display:flex}.source-stall-segment{height:100%;min-width:1px}.source-stall-empty{color:#b0b8c5;font-size:9px;text-align:center}.source-inst-toolbar{flex:0 0 34px;height:34px;display:flex;align-items:center;gap:8px;padding:0 9px;border-bottom:1px solid var(--line);background:#f8fafc}.source-inst-toolbar .muted{margin-left:auto}.source-inst-canvas{min-width:1120px}.source-inst-head,.source-inst-row{display:grid;grid-template-columns:34px 128px 68px 92px 76px 62px 250px 180px 180px;align-items:center}.source-inst-head{height:34px;background:#f8fafc;border-bottom:1px solid var(--line);font-size:9px;font-weight:720;color:#536174;position:sticky;top:0;z-index:9}.source-inst-head>div,.source-inst-row>div{padding:6px 6px;border-right:1px solid #edf0f5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-inst-head>div:last-child,.source-inst-row>div:last-child{border-right:0}.source-inst-head [data-sort]{cursor:pointer}.source-inst-head [data-sort]:hover{color:#2457d6}.source-inst-body{position:relative;min-width:1120px;isolation:isolate}.source-inst-row{height:var(--source-row-h);border-bottom:1px solid #eef1f5;font:9.5px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;cursor:pointer;position:relative;z-index:1}.source-inst-row:hover{background:#f7faff}.source-inst-row.related{background:#f0f5fd;box-shadow:inset 2px 0 #6f94d8}.source-inst-row.selected{background:#dce9fc;box-shadow:inset 3px 0 #2457d6}.source-inst-row .pipe{font-family:Inter,"Noto Sans SC",sans-serif;font-size:9px;font-weight:720;color:#4a5c75}.source-inst-row .op{color:#365276}.source-inst-row .num{text-align:right;font-variant-numeric:tabular-nums}.source-gpr-slot{height:var(--source-row-h);overflow:hidden;min-width:0}.source-gpr-overlay{position:absolute;left:0;top:0;width:250px;pointer-events:none;z-index:2;overflow:visible}.source-gpr-line{stroke:#96639a;stroke-width:1;opacity:.62}.source-gpr-marker{fill:#96639a;stroke:#7f4f84;stroke-width:.5}.source-gpr-marker.status-1{fill:#80538d}.source-gpr-marker.status-2{fill:#b174ae}.source-gpr-marker.status-3{fill:#fff;stroke-width:1.2}.source-gpr-marker.status-4{fill:#c79ac4}.source-detail{display:none;position:absolute;right:12px;bottom:12px;width:min(760px,calc(100% - 24px));max-height:250px;overflow:auto;border:1px solid #cfd8e8;border-radius:8px;background:rgba(255,255,255,.98);box-shadow:0 14px 34px rgba(16,24,40,.18);padding:10px 11px;z-index:20}.source-detail.visible{display:block}.source-detail-close{position:absolute;right:7px;top:6px;border:0;background:transparent;color:#667085;cursor:pointer;font-size:15px}.source-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding-right:18px}.source-detail-item{border:1px solid var(--line);border-radius:5px;background:#fff;padding:6px 7px;min-width:0}.source-detail-item .label{font-size:8px}.source-detail-item .value{font:9px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-gpr-raw,.source-stall-detail{grid-column:1/-1;font:9px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#5b4961;white-space:normal}.source-stall-detail{color:#475467}.source-instruction-count{font-variant-numeric:tabular-nums}.source-empty{padding:60px;text-align:center;color:#98a2b3}@media(max-width:1250px){.source-toolbar{grid-template-columns:minmax(130px,.6fr) minmax(360px,2fr)}.source-toolbar .source-status,.source-toolbar .source-right-tools{grid-column:1/-1}.source-layout{grid-template-columns:1fr}.source-splitter{display:none}.source-panel{min-height:520px}.source-page{height:auto;overflow:visible}.source-code-scroll,.source-inst-scroll{height:520px;flex:none}}
|
|
36
|
+
.scroll{overflow:auto;border:1px solid var(--line);border-radius:8px;max-height:560px}.raw-table,.pc-table{width:100%;border-collapse:collapse;font-size:11px}.raw-table th,.raw-table td,.pc-table th,.pc-table td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.raw-table th,.pc-table th{background:#f8fafc;color:#475467;position:sticky;top:0;z-index:2;font-size:10px}.raw-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap}.raw-toolbar input{min-width:260px}.raw-meta{font-size:10px;color:var(--muted)}
|
|
37
|
+
/* Timeline analyzer */
|
|
38
|
+
.tl-shell{height:calc(100vh - 128px);min-height:620px;background:#11151b;color:#edf2f8;border:1px solid #303947;border-radius:10px;overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;--tl-label-width:230px;--tl-track-width:1100px;--tl-grid-step:120px;--tl-scalar:#ff5b49;--tl-vector:#25c6c8;--tl-mte2:#38aef0;--tl-mte3:#ff9d2e;--tl-cube:#65d46e;--tl-other:#f06cc4}.tl-topbar{height:48px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 12px;background:#1d232c;border-bottom:1px solid #303947}.tl-title{font-weight:760;font-size:13px}.tl-toolbar{display:flex;align-items:center;gap:7px;min-width:0}.tl-toolbtn{height:28px;min-width:30px;padding:0 9px;border:1px solid #3b4655;background:#202733;color:#edf2f8;border-radius:5px;cursor:pointer}.tl-toolbtn:hover{border-color:#6684aa;background:#293241}.tl-toolbtn.active{background:#204a83;border-color:#4f8cff}.tl-zoom-label{min-width:62px;text-align:center;color:#c8d1dd;font-variant-numeric:tabular-nums}.tl-selection-info{font-size:10px;color:#c5d0df;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:420px}.tl-legend{display:flex;align-items:center;gap:8px}.tl-legend-item{display:flex;align-items:center;gap:4px;color:#c0cad7;font-size:9px}.tl-swatch{width:9px;height:9px;border-radius:2px}.tl-wrap{flex:1;min-height:0;display:flex;flex-direction:column}.tl-scroll{flex:1;min-height:0;overflow:auto;background:#11161c;position:relative}.tl-table{position:relative;min-height:100%;width:max-content}.tl-row{display:grid;grid-template-columns:var(--tl-label-width) var(--tl-track-width);min-height:31px;border-bottom:1px solid #232b35}.tl-sticky-label{position:sticky;left:0;z-index:20;isolation:isolate;border-right:1px solid #303947;background:#171c23}.tl-axis-row{position:sticky;top:0;z-index:30;height:38px;background:#171c23;border-bottom:1px solid #3b4655}.tl-axis-label{display:flex;align-items:center;padding:0 11px;color:#8e9aab}.tl-axis-track{position:relative;height:38px;background:#141920;overflow:hidden}.tl-tick{position:absolute;top:0;height:100%;border-left:1px solid #36404d}.tl-tick.major{border-left-color:#566273}.tl-tick-label{position:absolute;top:5px;transform:translateX(-50%);font-size:9px;color:#a8b3c1;white-space:nowrap}.tl-minor-dot{position:absolute;bottom:5px;width:1px;height:4px;background:#44505f}.tl-group-label{display:flex;align-items:center;gap:7px;padding:0 10px;font-weight:680;color:#dce4ee;cursor:pointer}.tl-chev{width:12px;color:#9ba7b6;transition:.12s}.tl-group-label.collapsed .tl-chev{transform:rotate(-90deg)}.tl-group-track{position:relative;background:#12171d;overflow:hidden}.tl-group-summary{position:absolute;top:7px;height:16px;border-radius:2px;background:#475363;opacity:.75}.tl-lane-row{height:34px}.tl-lane-label{display:flex;align-items:center;padding-left:31px;color:#aeb9c7}.tl-lane-name{font-size:10px;letter-spacing:.02em}.tl-lane-track{position:relative;background:repeating-linear-gradient(to right,#12171d 0,#12171d calc(var(--tl-grid-step) - 1px),#1d252f calc(var(--tl-grid-step) - 1px),#1d252f var(--tl-grid-step));cursor:crosshair;overflow:hidden}.tl-event{position:absolute;top:7px;height:20px;border-radius:2px;color:#fff;font-size:9px;line-height:20px;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;min-width:2px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 0 0 1px rgba(0,0,0,.25)}.tl-event:hover{filter:brightness(1.18);z-index:4;box-shadow:0 0 0 1px #fff,0 0 14px rgba(255,255,255,.18)}.tl-event.selected{z-index:6;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px rgba(0,0,0,.35)}.tl-event.scalar{background:var(--tl-scalar)}.tl-event.vector{background:var(--tl-vector);color:#062a2d;font-weight:700}.tl-event.mte2{background:var(--tl-mte2);color:#05273a;font-weight:700}.tl-event.mte3{background:var(--tl-mte3);color:#3b2500;font-weight:700}.tl-event.cube{background:var(--tl-cube);color:#0c2a12}.tl-event.other{background:var(--tl-other)}.tl-selection-band{position:absolute;top:0;bottom:0;background:rgba(47,129,247,.20);border-left:1px solid #6da7ff;border-right:1px solid #6da7ff;pointer-events:none;z-index:2}.tl-selection-label{position:absolute;top:2px;transform:translateX(-50%);background:#2f81f7;color:#fff;border-radius:3px;padding:2px 5px;font-size:9px;white-space:nowrap;z-index:8}.tl-bottom{height:250px;min-height:190px;background:#171c23;border-top:1px solid #3b4655;display:flex;flex-direction:column}.tl-tabs{height:34px;display:flex;align-items:end;border-bottom:1px solid #303947;padding-left:10px}.tl-tab{height:33px;border:0;border-bottom:2px solid transparent;background:transparent;color:#a6b2c1;padding:0 11px;cursor:pointer}.tl-tab.active{color:#57a0ff;border-bottom-color:#2f81f7}.tl-bottom-content{flex:1;min-height:0;overflow:hidden}.tl-inspector-view{display:none;height:100%}.tl-inspector-view.active{display:block}.tl-detail-grid{display:grid;grid-template-columns:330px minmax(0,1fr);height:100%}.tl-detail-fields{padding:14px 18px;display:grid;grid-template-columns:170px 1fr;grid-auto-rows:min-content;gap:9px 20px;align-content:start}.tl-detail-key{color:#9eabbc}.tl-detail-value{color:#d7e0ea;font-variant-numeric:tabular-nums}.tl-detail-extra{border-left:1px solid #303947;padding:14px 18px;color:#9eabbc}.tl-empty-state{height:100%;display:flex;align-items:center;justify-content:center;color:#778496}.tl-list-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;height:100%}.tl-slice-table-wrap{overflow:auto}.tl-slice-table{width:100%;border-collapse:collapse;font-size:10px}.tl-slice-table th,.tl-slice-table td{padding:7px 9px;border-bottom:1px solid #303947;text-align:left}.tl-slice-table th{position:sticky;top:0;background:#252d38;color:#dbe4ef;z-index:2;font-weight:650}.tl-slice-table td.num{text-align:right;font-variant-numeric:tabular-nums}.tl-slice-table tbody tr{cursor:pointer}.tl-slice-table tbody tr:hover,.tl-slice-table tbody tr.selected{background:#202936}.tl-range-detail{border-left:1px solid #303947;padding:12px;overflow:auto}.tl-range-title{font-size:11px;font-weight:700;margin-bottom:8px}.tl-range-box{display:grid;grid-template-columns:120px 1fr;gap:7px 10px;font-size:10px}.tl-range-key{color:#8f9cad}.tl-range-val{font-variant-numeric:tabular-nums}.tl-event-list{margin-top:12px;border-top:1px solid #303947;padding-top:8px}.tl-event-list-row{display:grid;grid-template-columns:1fr 80px;gap:8px;padding:5px 0;border-bottom:1px solid #242c36;font-size:10px}.tl-event-list-row span:last-child{text-align:right;font-variant-numeric:tabular-nums}.tl-hover-tip{position:fixed;pointer-events:none;background:#0d1117;border:1px solid #4b5869;color:#eef3f8;border-radius:5px;padding:7px 9px;font-size:10px;box-shadow:0 10px 24px rgba(0,0,0,.35);opacity:0;z-index:99;min-width:130px}
|
|
39
|
+
@media(max-width:1100px){.grid2,.grid4,.cache-layout,.roofline-wrap,.source-layout{grid-template-columns:1fr}.source-summary{grid-template-columns:repeat(3,1fr)}.source-toolbar{grid-template-columns:auto 1fr}.source-toolbar .source-status,.source-toolbar .source-right-tools{grid-column:1/-1}.source-layout{min-height:0}.source-code-body{height:520px}.source-inst-scroll{height:500px}.occ-summary{grid-template-columns:repeat(2,1fr)}.compute-type-grid{grid-template-columns:1fr}.tl-legend{display:none}.tl-selection-info{max-width:220px}.tl-row{grid-template-columns:170px var(--tl-track-width)}.tl-detail-grid{grid-template-columns:1fr}.tl-detail-extra{display:none}.tl-list-layout{grid-template-columns:1fr}.tl-range-detail{display:none}}
|
|
40
|
+
@media(max-width:720px){.head{padding:0 14px}.tabs{padding:0 6px}main{padding:14px}.grid4{grid-template-columns:repeat(2,1fr)}.bar-row{grid-template-columns:1fr}.bar-val{text-align:left}}
|
|
41
|
+
.source-diagnostic{min-height:520px;display:flex;align-items:flex-start;justify-content:center;padding:34px 18px;background:#f7f9fc}.source-diagnostic-card{width:min(980px,100%);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}.source-diagnostic-head{padding:18px 20px;border-bottom:1px solid var(--line);background:#fbfcfe}.source-diagnostic-code{font-size:10px;font-weight:760;letter-spacing:.04em;text-transform:uppercase;color:#a15c00}.source-diagnostic-title{font-size:18px;font-weight:780;margin-top:5px}.source-diagnostic-explanation{margin-top:8px;color:#536174;line-height:1.65}.source-diagnostic-evidence{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;padding:14px 20px;border-bottom:1px solid var(--line)}.source-diagnostic-evidence-item{border:1px solid var(--line);border-radius:7px;background:#f8fafc;padding:9px 10px}.source-diagnostic-evidence-item .value{font-size:15px;margin-top:3px}.source-diagnostic-body{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:18px 20px}.source-diagnostic-section h3{margin:0 0 9px;font-size:12px}.source-diagnostic-list{margin:0;padding-left:18px;color:#475467;line-height:1.65}.source-diagnostic-note{padding:11px 20px;border-top:1px solid var(--line);background:#fff8e8;color:#6a4a12;font-size:11px}.source-diagnostic .empty-canvas{display:none}@media(max-width:760px){.source-diagnostic-body{grid-template-columns:1fr}}
|
|
42
|
+
</style>
|
|
43
|
+
</head>
|
|
44
|
+
<body>
|
|
45
|
+
<div class="topbar"><div class="head"><div class="brand">msOpProf Performance Report</div></div><div class="tabs" id="tabs" role="tablist"></div><div class="coverage-bar" id="coverageBar"></div></div>
|
|
46
|
+
<main id="app"></main>
|
|
47
|
+
<div class="chart-tooltip" id="chartTooltip"></div>
|
|
48
|
+
<script id="payload" type="application/json">__MSOPPROF_PAYLOAD__</script>
|
|
49
|
+
<script>
|
|
50
|
+
let PAYLOAD=null;
|
|
51
|
+
async function loadPayload(){const el=document.getElementById('payload');if(el.dataset.encoding==='gzip-base64'){if(!('DecompressionStream' in window))throw new Error('This report embeds a gzip-compressed payload (--compress-payload on), but this browser does not support DecompressionStream. Re-render with --compress-payload off.');const b64=el.textContent.trim(),bin=Uint8Array.from(atob(b64),c=>c.charCodeAt(0)),stream=new Blob([bin]).stream().pipeThrough(new DecompressionStream('gzip'));return JSON.parse(await new Response(stream).text())}return JSON.parse(el.textContent)}
|
|
52
|
+
const LABELS={details:'Details',roofline:'Roofline',timeline:'Timeline',cache:'Cache','onchip-memory':'On-Chip Memory',source:'Source','warp-stall':'Warp Stall','instruction-timeline':'Instruction Timeline','raw-data':'Raw Data',availability:'Availability'};
|
|
53
|
+
const $=(s,r=document)=>r.querySelector(s), $$=(s,r=document)=>[...r.querySelectorAll(s)];
|
|
54
|
+
const esc=v=>String(v??'').replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));
|
|
55
|
+
const num=v=>Number.isFinite(Number(v))?Number(v):null;
|
|
56
|
+
function fmt(v,format='number'){if(v==null||!Number.isFinite(Number(v)))return '—';const n=Number(v);if(format==='percent')return `${n.toFixed(Math.abs(n)>=10?2:3)}%`;if(Math.abs(n)>=1e9)return `${(n/1e9).toFixed(2)}G`;if(Math.abs(n)>=1e6)return `${(n/1e6).toFixed(2)}M`;if(Math.abs(n)>=1e3)return `${(n/1e3).toFixed(2)}k`;if(Math.abs(n)>=100)return n.toFixed(1);if(Math.abs(n)>=1)return n.toFixed(3).replace(/0+$/,'').replace(/\.$/,'');return n.toPrecision(4)}
|
|
57
|
+
function emptyCanvas(){return '<div class="empty-canvas"></div>'}
|
|
58
|
+
function section(title,body,controls=''){return `<section class="section"><div class="section-head"><h2>${esc(title)}</h2><div class="controls">${controls}</div></div>${body}</section>`}
|
|
59
|
+
function card(body,cls=''){return `<div class="card ${cls}">${body}</div>`}
|
|
60
|
+
function colorScale(v,min,max){if(v==null||!Number.isFinite(v))return '#f1f5f9';if(max<=min)return '#9db7ef';const t=Math.max(0,Math.min(1,(v-min)/(max-min)));const a=[238,242,247],b=[36,87,214];const rgb=a.map((x,i)=>Math.round(x+(b[i]-x)*t));return `rgb(${rgb.join(',')})`}
|
|
61
|
+
function buildTabs(){const tabs=$('#tabs');tabs.innerHTML=PAYLOAD.pages.map((p,i)=>`<button class="tab ${i===0?'active':''}" role="tab" aria-selected="${i===0?'true':'false'}" data-page="${p}">${LABELS[p]||p}</button>`).join('');tabs.addEventListener('click',e=>{const b=e.target.closest('.tab');if(!b)return;$$('.tab',tabs).forEach(x=>{const on=x===b;x.classList.toggle('active',on);x.setAttribute('aria-selected',on?'true':'false')});$$('.view').forEach(v=>v.classList.toggle('active',v.dataset.page===b.dataset.page));activatePage(b.dataset.page)});}
|
|
62
|
+
function buildCoverage(){const bar=$('#coverageBar'),requested=PAYLOAD.requested_pages||PAYLOAD.pages||[],rendered=(PAYLOAD.module_status||[]).filter(x=>x.available),omitted=PAYLOAD.omitted_modules||[];if(!bar||(!requested.length&&!omitted.length))return;const chips=[`<span class="coverage-chip">Rendered ${rendered.length} / Requested ${requested.length}</span>`];omitted.forEach(x=>chips.push(`<span class="coverage-chip omitted">Omitted: ${esc(LABELS[x.page]||x.page)} · ${esc(x.reason||'unavailable')}</span>`));bar.innerHTML=chips.join('');bar.classList.add('visible')}
|
|
63
|
+
/* Basic information */
|
|
64
|
+
function renderBasic(data){if(!data?.available)return '';const cards=[['Name',data.name||'—'],['Duration (μs)',Number.isFinite(num(data.duration_us))?Number(data.duration_us).toFixed(3):'—'],['Op Type',data.op_type||'—'],['Block Dim',data.block_dim||'—'],['SoC',data.soc||'—'],['Device',data.device_id||'—'],['Current / Rated Freq (MHz)',Number.isFinite(num(data.current_frequency_mhz))?`${fmt(data.current_frequency_mhz)} / ${Number.isFinite(num(data.rated_frequency_mhz))?fmt(data.rated_frequency_mhz):'—'}`:'—'],['Frequency Ratio',Number.isFinite(num(data.frequency_ratio_percent))?`${Number(data.frequency_ratio_percent).toFixed(1)}%`:'—']].filter(x=>x[1]!=='—'||['Name','Duration (μs)','Op Type','Block Dim'].includes(x[0]));const html=section('Basic Information',`<div class="grid4">${cards.map(x=>`<div class="panel basic-card"><div class="label">${esc(x[0])}</div><div class="value">${esc(x[1])}</div></div>`).join('')}</div><div class="panel duration-wrap"><div class="duration-head"><div class="label">Block Duration</div><div class="muted">Hover to inspect individual blocks</div></div><svg id="durationSvg" class="duration-chart"></svg></div>`);setTimeout(()=>initBasic(data),0);return html}
|
|
65
|
+
function initBasic(data){const draw=()=>{const svg=$('#durationSvg');if(!svg)return;const rows=data.blocks||[];if(!rows.length){svg.innerHTML='';return}const W=Math.max(svg.clientWidth,800),H=165,p={l:48,r:12,t:12,b:28};svg.setAttribute('viewBox',`0 0 ${W} ${H}`);const vals=rows.map(x=>num(x.duration_us)).filter(Number.isFinite);const min=Math.min(...vals),max=Math.max(...vals),range=Math.max(max-min,.001),base=Math.max(0,min-range*.18),top=max+range*.08;const sx=i=>p.l+i*(W-p.l-p.r)/rows.length,barW=Math.max(2,(W-p.l-p.r)/rows.length-2),sy=v=>p.t+(top-v)/(top-base)*(H-p.t-p.b);let h='';for(let i=0;i<4;i++){const v=base+(top-base)*i/3,y=sy(v);h+=`<line x1="${p.l}" y1="${y}" x2="${W-p.r}" y2="${y}" stroke="#e7ebf1"/><text x="${p.l-7}" y="${y+3}" text-anchor="end" font-size="9" fill="#98a2b3">${v.toFixed(1)}</text>`}rows.forEach((r,i)=>{const v=num(r.duration_us),x=sx(i)+1,y=sy(v),hh=H-p.b-y;h+=`<rect class="duration-bar" data-i="${i}" x="${x}" y="${y}" width="${barW}" height="${Math.max(1,hh)}" rx="1.5" fill="#b8cdf8"/>`});const step=Math.max(1,Math.ceil(rows.length/8));for(let i=0;i<rows.length;i+=step)h+=`<text x="${sx(i)+barW/2}" y="${H-8}" text-anchor="middle" font-size="9" fill="#98a2b3">${esc(rows[i].block_id)}</text>`;h+=`<text x="12" y="${H/2}" transform="rotate(-90 12 ${H/2})" text-anchor="middle" font-size="9" fill="#667085">Duration (μs)</text>`;svg.innerHTML=h;const tip=$('#chartTooltip');$$('.duration-bar',svg).forEach(el=>{el.onmousemove=e=>{const r=rows[Number(el.dataset.i)];tip.innerHTML=`Block ${esc(r.block_id)}<br><b>${Number(r.duration_us).toFixed(6)} μs</b>`;tip.style.left=e.clientX+'px';tip.style.top=e.clientY+'px';tip.style.opacity=1;el.setAttribute('fill','#5f8fe8')};el.onmouseleave=()=>{tip.style.opacity=0;el.setAttribute('fill','#b8cdf8')}})};draw();window.addEventListener('resize',draw,{passive:true})}
|
|
66
|
+
/* Occupancy */
|
|
67
|
+
function quantile(vals,q){const a=[...vals].sort((x,y)=>x-y);if(!a.length)return NaN;const p=(a.length-1)*q,lo=Math.floor(p),hi=Math.ceil(p);return lo===hi?a[lo]:a[lo]+(a[hi]-a[lo])*(p-lo)}
|
|
68
|
+
function outlierModel(vals){const v=vals.filter(Number.isFinite),med=quantile(v,.5),abs=v.map(x=>Math.abs(x-med)),mad=quantile(abs,.5),q1=quantile(v,.25),q3=quantile(v,.75),iqr=q3-q1;return{med,classify(x){if(!Number.isFinite(x))return'missing';if(mad>0){const z=.6745*(x-med)/mad;if(z>3.5)return'high';if(z<-3.5)return'low';return'normal'}const low=q1-1.5*iqr,high=q3+1.5*iqr;if(x>high)return'high';if(x<low)return'low';if(med!==0&&x>med*1.25)return'high';if(med!==0&&x<med*.75)return'low';return'normal'}}}
|
|
69
|
+
function renderOccupancy(data){if(!data?.available||!(data.metrics||[]).length)return emptyCanvas();const opts=data.metrics.map(m=>`<option value="${esc(m.key)}">${esc(m.label)}</option>`).join('');const html=section('Core Occupancy','<div id="occRoot"></div>',`<span class="label">Show As</span><select id="occMetric">${opts}</select>`);setTimeout(()=>initOccupancy(data),0);return html}
|
|
70
|
+
function initOccupancy(data){const sel=$('#occMetric');if(!sel)return;const draw=()=>{const key=sel.value,m=data.metrics.find(x=>x.key===key)||data.metrics[0],vals=data.cores.map(c=>num(c.metrics?.[m.key])).filter(Number.isFinite),model=outlierModel(vals),groups={};data.cores.forEach((c,i)=>{(groups[c.core_id]??=[]).push({...c,_index:i})});let high=0,low=0;for(const c of data.cores){const cls=model.classify(num(c.metrics?.[m.key]));if(cls==='high')high++;if(cls==='low')low++}const physical=Object.entries(groups).sort((a,b)=>String(a[0]).localeCompare(String(b[0]),undefined,{numeric:true})),layout=data.layout||{},packed=layout.adapter==='packed-core-group',layoutText=packed?`${layout.logical_core_count||physical.length} logical cores · ${layout.lanes_per_core||2} lanes/core · profiler raw core groups normalized`:`${layout.logical_core_count||physical.length} profiler cores · native IDs retained`;$('#occRoot').innerHTML=`<div class="occ-summary"><div class="summary-chip"><div class="label">Median</div><div class="value">${fmt(model.med,m.format)}</div></div><div class="summary-chip"><div class="label">Normal Core/Subcore</div><div class="value">${data.cores.length-high-low}</div></div><div class="summary-chip"><div class="label">Low Outlier</div><div class="value" style="color:var(--low)">${low}</div></div><div class="summary-chip"><div class="label">High Outlier</div><div class="value" style="color:var(--high)">${high}</div></div></div><div class="panel occ-card-wrap"><div class="occ-layout-note"><span>${esc(layoutText)}</span><span>${packed?`SoC ${esc(layout.soc||'—')} · raw groups ${esc(layout.raw_core_count??'—')}`:'No core-ID remapping'}</span></div><div class="occ-grid">${physical.map(([id,subs])=>`<div class="physical-core"><div class="physical-core-head"><span class="physical-core-id">Core ${esc(id)}</span><span class="physical-core-count">${subs.length} subcore${subs.length===1?'':'s'}</span></div>${subs.map(c=>{const v=num(c.metrics?.[m.key]),cls=model.classify(v),tag=cls==='high'?'HIGH':cls==='low'?'LOW':'';return `<div class="subcore ${cls}" data-index="${c._index}"><div class="subcore-top"><span class="subcore-name">${esc((c.subcore_type||'core')+(c.subcore_id!=null?' '+c.subcore_id:''))}</span>${tag?`<span class="subcore-flag">${tag}</span>`:''}</div><div class="subcore-val">${fmt(v,m.format)}</div></div>`}).join('')}</div>`).join('')}</div><div class="occ-legend"><span><i class="dot normal"></i>Normal values stay neutral</span><span><i class="dot low"></i>Low statistical outlier</span><span><i class="dot high"></i>High statistical outlier</span></div><div id="occDetail" class="core-detail"></div></div>`;const cells=$$('.subcore',$('#occRoot'));cells.forEach(cell=>cell.onclick=()=>{cells.forEach(x=>x.classList.remove('selected'));cell.classList.add('selected');const c=data.cores[Number(cell.dataset.index)],mapping=[`Core ${c.core_id} / ${c.subcore_type||'subcore'} ${c.subcore_id}`,`Raw core ${c.raw_core_id??'—'} / raw subcore ${c.raw_subcore_id??'—'}`];$('#occDetail').innerHTML=`<div class="detail-metric"><div class="label">Display Mapping</div><div class="value">${esc(mapping[0])}</div></div><div class="detail-metric"><div class="label">Profiler Source ID</div><div class="value">${esc(mapping[1])}</div></div>`+data.metrics.map(mm=>`<div class="detail-metric"><div class="label">${esc(mm.label)}</div><div class="value">${fmt(c.metrics?.[mm.key],mm.format)}</div></div>`).join('')});if(cells[0])cells[0].click()};sel.addEventListener('change',draw);draw()}
|
|
71
|
+
/* Compute */
|
|
72
|
+
function renderCompute(data){if(!data?.available)return emptyCanvas();const ids=data.block_ids||[...new Set((data.items||[]).map(x=>x.block_id))];const opts=ids.map(x=>`<option value="${esc(x)}">${esc(x)}</option>`).join('');const html=section('Compute Workload Analysis','<div id="computeRoot"></div>',`<span class="label">Block ID</span><select id="computeBlock">${opts}</select>`);setTimeout(()=>initCompute(data),0);return html}
|
|
73
|
+
function metricIsPercent(x){if(String(x.unit)==='3')return true;const n=String(x.name).toLowerCase();return (n.includes('ratio')||n.includes('rate')||n.includes('util')||n.includes('active'))&&x.value>=0&&x.value<=100}
|
|
74
|
+
function initCompute(data){const sel=$('#computeBlock');if(!sel)return;
|
|
75
|
+
const metricBars=(title,items,kind='pipeline')=>{const rows=(items||[]).filter(x=>Number.isFinite(num(x.value)));if(!rows.length)return'';return `<div class="compute-metric-section ${kind}"><div class="compute-metric-title">${esc(title)}</div>${rows.map(r=>{const v=Math.max(0,Math.min(100,num(r.value)||0));return `<div class="util-row"><div class="util-name">${esc(r.name)}</div><div class="util-track"><div class="util-fill ${kind}" style="width:${v}%"></div></div><div class="util-val">${v.toFixed(2)}%</div></div>`}).join('')}<div class="axis-row"><div></div><div class="axis-ticks"><span>0%</span><span>20%</span><span>40%</span><span>60%</span><span>80%</span><span>100%</span></div><div></div></div></div>`};
|
|
76
|
+
const draw=()=>{const id=sel.value,block=(data.blocks||[]).find(x=>String(x.block_id)===String(id));if(!block){$('#computeRoot').innerHTML='<div class="empty-canvas"></div>';return}$('#computeRoot').innerHTML=`<div class="compute-type-grid">${(block.engines||[]).map(engine=>{const meta=[Number.isFinite(num(engine.time_us))?`Duration ${Number(engine.time_us).toFixed(3)} μs`:'',Number.isFinite(num(engine.cycles))?`Cycles ${fmt(engine.cycles)}`:''].filter(Boolean).join(' · ');const counters=(engine.counters||[]);return `<div class="panel compute-panel"><div class="compute-panel-head"><div><div class="compute-panel-title">${esc(engine.label||engine.engine_type)}</div><div class="muted">${esc(meta)}</div></div><span class="engine-badge ${esc(engine.engine_type)}">${esc(String(engine.engine_type||'compute').toUpperCase())}</span></div>${metricBars('Pipeline Utilization',engine.pipeline,'pipeline')}${metricBars('Compute Breakdown',engine.breakdown,'breakdown')}${metricBars('Wait / Conflict',engine.waits,'wait')}${counters.length?`<div class="compute-metric-title table-title">Instruction / Counter Detail</div><table class="compute-table"><thead><tr><th>Metric</th><th>Value</th></tr></thead><tbody>${counters.map(r=>`<tr><td>${esc(r.name)}</td><td class="num">${fmt(r.value)}</td></tr>`).join('')}</tbody></table>`:''}</div>`}).join('')}</div>`};sel.addEventListener('change',draw);draw()}
|
|
77
|
+
/* Memory V5: exact execution-block binding + directed topology routes. */
|
|
78
|
+
const TOPOLOGY_LAYOUTS={
|
|
79
|
+
'vector-simd':{view:[0,0,1180,360],groups:[{x:35,y:45,w:365,h:270,label:'Memory hierarchy'},{x:455,y:45,w:675,h:270,label:'Vector datapath'}],nodes:{'GM':[70,90,110,180,'node-memory'],'L2 Cache':[245,90,120,180,'node-memory'],'UB':[535,145,210,70,'node-buffer'],'Vector':[865,90,220,180,'node-compute']}},
|
|
80
|
+
'vector-simt':{view:[0,0,1180,360],groups:[{x:35,y:45,w:365,h:270,label:'Memory hierarchy'},{x:455,y:45,w:675,h:270,label:'Vector datapath'}],nodes:{'GM':[70,90,110,180,'node-memory'],'L2 Cache':[245,90,120,180,'node-memory'],'DCache':[535,145,210,70,'node-buffer'],'Vector':[865,90,220,180,'node-compute']}},
|
|
81
|
+
'vector-hybrid':{view:[0,0,1180,360],groups:[{x:35,y:45,w:365,h:270,label:'Memory hierarchy'},{x:455,y:35,w:675,h:290,label:'Vector datapath'}],nodes:{'GM':[70,90,110,180,'node-memory'],'L2 Cache':[245,90,120,180,'node-memory'],'UB':[510,65,220,70,'node-buffer'],'DCache':[510,215,220,70,'node-buffer'],'Vector':[865,90,220,180,'node-compute']}},
|
|
82
|
+
'cube':{view:[0,0,1380,430],groups:[],nodes:{'GM':[35,155,110,120,'node-memory'],'L2 Cache':[190,155,115,120,'node-memory'],'L1':[370,155,120,120,'node-buffer'],'L0A':[590,55,120,72,'node-buffer'],'L0B':[590,285,120,72,'node-buffer'],'Cube':[805,145,150,140,'node-compute'],'L0C':[1035,155,125,120,'node-buffer'],'FixPipe':[1210,285,125,72,'node-other']}},
|
|
83
|
+
'mix':{view:[0,0,1500,560],groups:[],nodes:{'GM':[35,220,110,120,'node-memory'],'L2 Cache':[190,220,115,120,'node-memory'],'L1':[370,65,120,90,'node-buffer'],'L0A':[575,30,110,65,'node-buffer'],'L0B':[575,130,110,65,'node-buffer'],'Cube':[760,75,145,120,'node-compute'],'L0C':[965,70,120,95,'node-buffer'],'FixPipe':[1145,125,120,65,'node-other'],'UB':[480,350,150,72,'node-buffer'],'DCache':[710,440,150,72,'node-buffer'],'Vector':[1000,350,180,140,'node-compute']}},
|
|
84
|
+
'generic':{view:[0,0,1180,420],groups:[],nodes:{}}
|
|
85
|
+
};
|
|
86
|
+
/* Every route is keyed by directed edge_id. Labels remain bound to that edge. */
|
|
87
|
+
const TOPOLOGY_ROUTES={
|
|
88
|
+
'cube':{
|
|
89
|
+
'GM->L2 Cache':{p:[[145,202],[190,202]],l:[168,190]},'L2 Cache->GM':{p:[[190,238],[145,238]],l:[168,252]},'L2 Cache->L1':{p:[[305,215],[370,215]],l:[338,203]},'L1->L0A':{p:[[490,188],[540,188],[540,91],[590,91]],l:[540,146]},'L1->L0B':{p:[[490,242],[540,242],[540,321],[590,321]],l:[540,281]},'L0A->Cube':{p:[[710,91],[760,91],[760,185],[805,185]],l:[760,137]},'L0B->Cube':{p:[[710,321],[760,321],[760,245],[805,245]],l:[760,283]},'Cube->L0C':{p:[[955,215],[1035,215]],l:[995,203]},'L0C->FixPipe':{p:[[1098,275],[1098,321],[1210,321]],l:[1148,309]},'FixPipe->L2 Cache':{p:[[1210,345],[1150,345],[1150,398],[335,398],[335,245],[305,245]],l:[405,386]},'FixPipe->L1':{p:[[1210,310],[1170,310],[1170,375],[545,375],[545,255],[490,255]],l:[610,363]}
|
|
90
|
+
},
|
|
91
|
+
'vector-hybrid':{
|
|
92
|
+
'GM->L2 Cache':{p:[[180,145],[245,145]],l:[212,132]},'L2 Cache->GM':{p:[[245,215],[180,215]],l:[212,229]},'L2 Cache->UB':{p:[[365,125],[440,125],[440,100],[510,100]],l:[438,86]},'UB->L2 Cache':{p:[[510,122],[465,122],[465,235],[365,235]],l:[465,194]},'L2 Cache->DCache':{p:[[365,180],[440,180],[440,250],[510,250]],l:[438,219]},'UB->Vector':{p:[[730,100],[800,100],[800,145],[865,145]],l:[800,128]},'Vector->UB':{p:[[865,175],[825,175],[825,122],[730,122]],l:[825,158]},'DCache->Vector':{p:[[730,250],[800,250],[800,215],[865,215]],l:[800,236]},'Vector->DCache':{p:[[865,240],[825,240],[825,272],[730,272]],l:[825,286]}
|
|
93
|
+
},
|
|
94
|
+
'vector-simd':{
|
|
95
|
+
'GM->L2 Cache':{p:[[180,145],[245,145]],l:[212,132]},'L2 Cache->GM':{p:[[245,215],[180,215]],l:[212,229]},'L2 Cache->UB':{p:[[365,145],[535,165]],l:[450,143]},'UB->L2 Cache':{p:[[535,195],[365,215]],l:[450,225]},'UB->Vector':{p:[[745,165],[865,145]],l:[805,143]},'Vector->UB':{p:[[865,215],[745,195]],l:[805,225]}
|
|
96
|
+
},
|
|
97
|
+
'vector-simt':{
|
|
98
|
+
'GM->L2 Cache':{p:[[180,145],[245,145]],l:[212,132]},'L2 Cache->GM':{p:[[245,215],[180,215]],l:[212,229]},'L2 Cache->DCache':{p:[[365,180],[535,180]],l:[450,166]},'DCache->Vector':{p:[[745,165],[865,145]],l:[805,143]},'Vector->DCache':{p:[[865,215],[745,195]],l:[805,225]}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
function edgeTextV4(v,mode){if(v==null||String(v).trim()===''||String(v).toUpperCase()==='NA')return'NA';if(!Number.isFinite(num(v)))return'NA';const n=Number(v);if(Object.is(n,-0)||n===0)return'0';if(mode==='request')return Math.round(n).toLocaleString();const a=Math.abs(n);return a>=100?n.toFixed(1):a>=1?n.toFixed(2):a>=.01?n.toFixed(3):n.toFixed(5)}
|
|
102
|
+
function layoutFor(topology){return TOPOLOGY_LAYOUTS[topology?.adapter]||TOPOLOGY_LAYOUTS.generic}
|
|
103
|
+
function genericNodeLayout(nodes){const out={},cols=Math.max(1,Math.ceil(Math.sqrt(nodes.length||1))),w=150,h=68,gx=220,gy=120;nodes.forEach((n,i)=>{out[n]=[60+(i%cols)*gx,60+Math.floor(i/cols)*gy,w,h,n==='GM'||n==='L2 Cache'?'node-memory':(n==='Cube'||n==='Vector'?'node-compute':'node-buffer')]});return{view:[0,0,Math.max(980,120+cols*gx),Math.max(360,140+Math.ceil(nodes.length/cols)*gy)],nodes:out}}
|
|
104
|
+
function anchorPoint(A,B){const [ax,ay,aw,ah]=A,[bx,by,bw,bh]=B,acx=ax+aw/2,acy=ay+ah/2,bcx=bx+bw/2,bcy=by+bh/2,dx=bcx-acx,dy=bcy-acy;if(Math.abs(dx)>=Math.abs(dy)){return{x1:dx>=0?ax+aw:ax,y1:acy,x2:dx>=0?bx:bx+bw,y2:bcy,axis:'h'}}return{x1:acx,y1:dy>=0?ay+ah:ay,x2:bcx,y2:dy>=0?by:by+bh,axis:'v'}}
|
|
105
|
+
function edgeGeomV4(A,B,offset=0){if(!A||!B)return null;const a=anchorPoint(A,B);if(a.axis==='h'){const mid=(a.x1+a.x2)/2,y1=a.y1+offset,y2=a.y2+offset;return{d:`M${a.x1},${y1} H${mid} V${y2} H${a.x2}`,lx:mid,ly:(y1+y2)/2}}const mid=(a.y1+a.y2)/2,x1=a.x1+offset,x2=a.x2+offset;return{d:`M${x1},${a.y1} V${mid} H${x2} V${a.y2}`,lx:(x1+x2)/2,ly:mid}}
|
|
106
|
+
function routeForEdge(adapter,e,positions){const src=e.src??e.source,dst=e.dst??e.target,eid=e.edge_id||`${src}->${dst}`;const spec=TOPOLOGY_ROUTES[adapter]?.[eid];if(spec){const d=spec.p.map((q,i)=>`${i?'L':'M'}${q[0]},${q[1]}`).join(' ');return{d,lx:spec.l[0],ly:spec.l[1],fixed:true}}const g=edgeGeomV4(positions[src],positions[dst],0);return g?{...g,fixed:false}:null}
|
|
107
|
+
function nativeColumns(t){const rowKeys=[];(t.rows||[]).forEach(r=>Object.keys(r.values||{}).forEach(k=>{if(!rowKeys.includes(k))rowKeys.push(k)}));const preferred=(t.headers||[]).filter(h=>h&&String(h).toLowerCase()!=='name'&&rowKeys.includes(h));return [...preferred,...rowKeys.filter(k=>!preferred.includes(k))]}
|
|
108
|
+
function nativeCell(v){if(v==null||String(v).trim()===''||String(v).toUpperCase()==='NA')return'<span class="na">NA</span>';const n=num(v);if(!Number.isFinite(n))return esc(v);const a=Math.abs(n);const text=a>=1000?n.toLocaleString(undefined,{maximumFractionDigits:2}):a>=1?n.toFixed(3):a>=.01?n.toFixed(5):n.toFixed(7);return esc(text)}
|
|
109
|
+
function renderNativeTables(block,id){return (block?.tables||[]).map(t=>{const cols=nativeColumns(t),n=Math.max(cols.length,1),w=(70/n).toFixed(3);return `<div class="mem-group"><div class="mem-group-head"><span>${esc(t.name)}</span><span class="muted">Block ${esc(id)}</span></div><table class="mem-table"><colgroup><col class="item-col">${cols.map(()=>`<col style="width:${w}%">`).join('')}</colgroup><thead><tr><th>Item</th>${cols.map(h=>`<th>${esc(h)}</th>`).join('')}</tr></thead><tbody>${(t.rows||[]).map(r=>`<tr><td>${esc(r.name)}</td>${cols.map(h=>`<td>${nativeCell(r.values?.[h])}</td>`).join('')}</tr>`).join('')}</tbody></table></div>`}).join('')}
|
|
110
|
+
function memoryBindingText(block){const b=block?.execution_binding||block?.topology?.execution_binding||{};if(b.physical_core_id==null||b.physical_core_id==='')return'No physical-core binding';const dispatch=b.dispatch_count>1?` · dispatch ${b.dispatch_index}/${b.dispatch_count}`:'';return `Physical Core ${b.physical_core_id}${dispatch}`}
|
|
111
|
+
function memoryOccurrences(block){return block?.occurrences?.length?block.occurrences:[block]}
|
|
112
|
+
function renderMemory(data,computeData){if(!data?.available)return emptyCanvas();const ids=(data.blocks||[]).map(x=>x.block_id).sort((a,b)=>String(a).localeCompare(String(b),undefined,{numeric:true})),physical=[...new Set((data.blocks||[]).flatMap(x=>memoryOccurrences(x)).map(x=>x.execution_binding?.physical_core_id).filter(x=>x!=null&&x!==''))],dispatchMax=Number(data.max_occurrences_per_block)||Math.max(1,...(data.blocks||[]).map(x=>memoryOccurrences(x).length)),records=Number(data.execution_record_count)||(data.blocks||[]).reduce((n,x)=>n+memoryOccurrences(x).length,0),summary=[`${ids.length} unique Block IDs`,`${records} execution records`,physical.length?`${physical.length} physical cores`:null,dispatchMax>1?`up to ${dispatchMax} dispatches/Block ID`:null,`binding: ${(data.binding_modes||[]).join(', ')||'unavailable'}`].filter(Boolean).join(' · ');const html=section('Memory Workload Analysis',`<div class="panel memory-shell"><div class="memory-toolbar"><span class="label">Block ID</span><select id="memoryBlock">${ids.map(x=>`<option value="${esc(x)}">${esc(x)}</option>`).join('')}</select><span class="label memory-dispatch-control">Dispatch</span><select id="memoryDispatch" class="memory-dispatch-control"></select><span class="label">Show As</span><select id="memoryMode"><option value="bandwidth">Bandwidth (GB/s)</option><option value="request">Requests</option></select><span id="memoryBinding" class="memory-binding"></span><div class="memory-summary-note">${esc(summary)}</div></div><div id="memoryRoot"></div></div>`);setTimeout(()=>initMemory(data,computeData),0);return html}
|
|
113
|
+
function initMemory(data,computeData){const blockSel=$('#memoryBlock'),dispatchSel=$('#memoryDispatch'),modeSel=$('#memoryMode');if(!blockSel)return;const selectedParent=()=>(data.blocks||[]).find(x=>String(x.block_id)===String(blockSel.value));const syncDispatch=()=>{const parent=selectedParent(),occurrences=memoryOccurrences(parent);dispatchSel.innerHTML=occurrences.map((x,i)=>{const b=x.execution_binding||{},label=b.dispatch_count>1?`Dispatch ${b.dispatch_index||i+1}/${b.dispatch_count}`:`Occurrence ${i+1}`;return `<option value="${i}">${esc(label)}</option>`}).join('');const visible=occurrences.length>1;$$('.memory-dispatch-control').forEach(x=>x.style.display=visible?'':'none');dispatchSel.value='0'};const draw=()=>{const parent=selectedParent(),occurrences=memoryOccurrences(parent),occIndex=Math.max(0,Math.min(occurrences.length-1,Number(dispatchSel.value)||0)),block=occurrences[occIndex],id=parent?.block_id,mode=modeSel.value;if(!block){$('#memoryRoot').innerHTML='<div class="empty-canvas"></div>';return}const topology=block.topology||{adapter:'generic',nodes:[],edges:[],node_metrics:{}},base=layoutFor(topology),layout=Object.keys(base.nodes||{}).length?base:genericNodeLayout(topology.nodes||[]),positions=layout.nodes||{},edgeTable=topology.edge_table||topology.edges||[];$('#memoryBinding').textContent=memoryBindingText(block);const groupsSvg=(layout.groups||[]).map(g=>`<g><rect x="${g.x}" y="${g.y}" width="${g.w}" height="${g.h}" rx="3" class="topology-group"/><text x="${g.x+10}" y="${g.y+17}" class="topology-group-label">${esc(g.label||'')}</text></g>`).join('');const edgesSvg=edgeTable.map(e=>{const g=routeForEdge(topology.adapter,e,positions);if(!g)return'';const value=mode==='request'?e.request:e.bandwidth,text=edgeTextV4(value,mode),pillW=Math.max(50,Math.min(94,24+text.length*7));return `<g class="memory-edge" data-edge-id="${esc(e.edge_id||`${e.src??e.source}->${e.dst??e.target}`)}"><path d="${g.d}" class="edge" marker-end="url(#memArrowV5)"/><rect x="${g.lx-pillW/2}" y="${g.ly-10}" width="${pillW}" height="20" rx="3" class="edge-pill"/><text x="${g.lx}" y="${g.ly+3}" text-anchor="middle" class="edge-label">${esc(text)}</text><title>${esc(e.edge_id||`${e.src??e.source}->${e.dst??e.target}`)} · ${mode==='request'?'Requests':'Bandwidth'}: ${esc(text)}</title></g>`}).join('');const nodesSvg=(topology.nodes||[]).map(n=>{const q=positions[n];if(!q)return'';const [x,y,w,h,cls]=q,sub=topology.node_metrics?.[n]||'';return `<g data-node="${esc(n)}"><rect x="${x}" y="${y}" width="${w}" height="${h}" rx="2" class="${cls||'node-buffer'}"/><text x="${x+w/2}" y="${y+h/2-(sub?8:0)}" text-anchor="middle" class="node-title">${esc(n)}</text>${sub?`<text x="${x+w/2}" y="${y+h/2+15}" text-anchor="middle" class="node-sub">${esc(sub)}</text>`:''}</g>`}).join('');const [vx,vy,vw,vh]=layout.view,bind=block.execution_binding||{},bindingNote=bind.physical_core_id!=null?`Block ID ${id} · dispatch ${bind.dispatch_index||occIndex+1}/${bind.dispatch_count||occurrences.length} → Physical Core ${bind.physical_core_id} · ${bind.binding||'binding unavailable'}`:`Block ID ${id} · no core_memory_map binding`;const svg=`<svg class="memory-topology" viewBox="${vx} ${vy} ${vw} ${vh}"><defs><marker id="memArrowV5" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 z" fill="#687384"/></marker></defs>${groupsSvg}${edgesSvg}${nodesSvg}<text x="24" y="${vh-14}" class="legend-scale">${mode==='request'?'Line labels: Requests':'Line labels: Bandwidth (GB/s)'} · ${esc(topology.adapter||'generic')}</text></svg><div class="topology-note">${esc(bindingNote)}</div>`;const advice=(data.advice||[]).length?`<div class="advice-stack">${data.advice.map(x=>`<div class="advice">⚠ ${esc(x)}</div>`).join('')}</div>`:'';const unmapped=(topology.unmapped_paths||[]).length?`<div class="unmapped-paths"><span class="muted">Unmapped profiler paths</span>${topology.unmapped_paths.map(x=>`<span class="unmapped-chip">path ${esc(x.memory_path)}</span>`).join('')}</div>`:'';$('#memoryRoot').innerHTML=`${svg}${unmapped}${advice}<div class="memory-tables">${renderNativeTables(block,id)}</div>`};blockSel.addEventListener('change',()=>{syncDispatch();draw()});dispatchSel.addEventListener('change',draw);modeSel.addEventListener('change',draw);syncDispatch();draw()}
|
|
114
|
+
|
|
115
|
+
function renderAdvice(data){if(!data?.available)return '';return section('Performance Advice',card(`<div class="advice-list">${(data.items||[]).map(x=>`<div class="advice-item">${esc(x)}</div>`).join('')}</div>`))}
|
|
116
|
+
function renderDetails(data){const parts=[];if(data?.show_basic!==false)parts.push(renderBasic(data?.basic));for(const s of data?.sections||[]){if(s==='occupancy')parts.push(renderOccupancy(data.occupancy));if(s==='compute')parts.push(renderCompute(data.compute));if(s==='memory')parts.push(renderMemory(data.memory,data.compute));if(s==='advice')parts.push(renderAdvice(data.advice))}return parts.filter(Boolean).join('')||emptyCanvas()}
|
|
117
|
+
/* Roofline */
|
|
118
|
+
function renderRoofline(data){
|
|
119
|
+
const charts=(data?.charts||[]);
|
|
120
|
+
if(!data?.available)return emptyCanvas();
|
|
121
|
+
const plots=data.plot_available&&charts.length?`<div class="roofline-stack">${charts.map((c,i)=>`<div class="panel roofline-card" id="rooflineCard${i}"><div class="roofline-head"><div class="roofline-title">${esc(c.title||`Roofline ${i+1}`)}</div><div class="roofline-live-status" id="rooflineStatus${i}">Move the pointer across the plot for live coordinates</div></div><div class="roofline-stage" id="rooflineStage${i}"><svg class="roofline-svg" id="rooflineSvg${i}" viewBox="0 0 1180 460" role="img" aria-label="Interactive Roofline chart"></svg><div class="roofline-tooltip" id="rooflineTooltip${i}"></div></div><div class="roofline-legend" id="rooflineLegend${i}"></div></div>`).join('')}</div>`:`<div class="roofline-no-plot"><div class="roofline-no-plot-title">No measured Roofline coordinate was emitted</div><div>The profiler returned classification or advice, but no positive arithmetic-intensity/performance point suitable for a Roofline chart. The report intentionally does not fabricate bandwidth, compute ceilings, or coordinates. Inspect <span class="roofline-no-plot-code">Profiler Advice</span> below and the Roofline command logs in <span class="roofline-no-plot-code">_internal/logs</span>.</div></div>`;
|
|
122
|
+
const advice=(data.advice||[]).length?`<div class="card roofline-advice"><div class="label" style="margin-bottom:8px">Profiler Advice</div><div class="advice-list">${data.advice.map(x=>`<div class="advice-item">${esc(x)}</div>`).join('')}</div></div>`:'';
|
|
123
|
+
const html=`<div class="roofline-wrap">${plots}${advice}</div>`;
|
|
124
|
+
if(data.plot_available)setTimeout(()=>drawRoofline(data),0);
|
|
125
|
+
return html
|
|
126
|
+
}
|
|
127
|
+
function rooflineTick(v){const e=Math.round(Math.log10(v));if(Math.abs(Math.log10(v)-e)<1e-9)return e===0?'1':e===1?'10':e===2?'100':`10^${e}`;return Number(v).toPrecision(2)}
|
|
128
|
+
function rooflineReadout(v){if(!Number.isFinite(v))return'NA';const a=Math.abs(v);if(a===0)return'0';if(a>=1000||a<.0001)return v.toExponential(5);const digits=a>=100?3:a>=10?4:a>=1?5:a>=.1?6:7;return Number(v.toPrecision(digits)).toString()}
|
|
129
|
+
function rooflineFixed(v,d=3){if(!Number.isFinite(v))return'NA';const a=Math.abs(v);if(a>=1000||a<.001)return v.toExponential(3);return v.toFixed(d).replace(/\.0+$/,'').replace(/(\.\d*?)0+$/,'$1')}
|
|
130
|
+
function rooflinePercent(v){if(!Number.isFinite(v))return'NA';return`${rooflineFixed(v,4)}%`}
|
|
131
|
+
function drawRoofline(data){(data.charts||[]).forEach((chart,index)=>drawRooflineChart(chart,index))}
|
|
132
|
+
function drawRooflineChart(chart,index){
|
|
133
|
+
const svg=$(`#rooflineSvg${index}`),legend=$(`#rooflineLegend${index}`),tip=$(`#rooflineTooltip${index}`),stage=$(`#rooflineStage${index}`),status=$(`#rooflineStatus${index}`);
|
|
134
|
+
if(!svg)return;
|
|
135
|
+
const series=(chart.series||[]).filter(s=>num(s.point?.x)>0&&num(s.point?.y)>0),w=1180,h=460,p={l:78,r:28,t:28,b:58};
|
|
136
|
+
if(!series.length){svg.innerHTML='';return}
|
|
137
|
+
const finitePositive=x=>Number.isFinite(x)&&x>0;
|
|
138
|
+
const allX=series.flatMap(s=>[num(s.point?.x),num(s.knee_intensity)]).filter(finitePositive),allY=series.flatMap(s=>[num(s.point?.y),num(s.compute_ceiling),num(s.roofline_limit)]).filter(finitePositive);
|
|
139
|
+
const xMinExp=Math.min(-3,Math.floor(Math.log10(Math.min(...allX)))-1),xMaxExp=Math.max(2,Math.ceil(Math.log10(Math.max(...allX)))),yMinExp=Math.min(-3,Math.floor(Math.log10(Math.min(...allY)))-1),yMaxExp=Math.max(2,Math.ceil(Math.log10(Math.max(...allY))));
|
|
140
|
+
const xmin=10**xMinExp,xmax=10**xMaxExp,ymin=10**yMinExp,ymax=10**yMaxExp;
|
|
141
|
+
const sx=x=>p.l+(Math.log10(x)-xMinExp)/(xMaxExp-xMinExp)*(w-p.l-p.r),sy=y=>h-p.b-(Math.log10(y)-yMinExp)/(yMaxExp-yMinExp)*(h-p.t-p.b);
|
|
142
|
+
const ix=x=>10**(xMinExp+(x-p.l)/(w-p.l-p.r)*(xMaxExp-xMinExp)),iy=y=>10**(yMinExp+(h-p.b-y)/(h-p.t-p.b)*(yMaxExp-yMinExp));
|
|
143
|
+
const bwPalette=['#2457d6','#2f8f72','#7469a9','#b06d2f','#44789e','#9c5b7b'],computeNames=[...new Set(series.map(s=>s.compute_name||'Compute'))],bwNames=[...new Set(series.map(s=>s.bandwidth_name||'Bandwidth'))];
|
|
144
|
+
const colorFor=s=>bwPalette[Math.max(0,bwNames.indexOf(s.bandwidth_name))%bwPalette.length];
|
|
145
|
+
let out=`<defs><filter id="rooflineGlow${index}" x="-30%" y="-30%" width="160%" height="160%"><feDropShadow dx="0" dy="0" stdDeviation="2.4" flood-color="#2457d6" flood-opacity=".34"/></filter></defs>`;
|
|
146
|
+
out+=`<rect x="${p.l}" y="${p.t}" width="${w-p.l-p.r}" height="${h-p.t-p.b}" class="roofline-interaction-surface" data-role="surface"/>`;
|
|
147
|
+
for(let e=xMinExp;e<=xMaxExp;e++){const v=10**e,x=sx(v);out+=`<line x1="${x}" y1="${p.t}" x2="${x}" y2="${h-p.b}" class="roofline-grid"/><text x="${x}" y="${h-p.b+18}" text-anchor="middle" class="roofline-tick">${esc(rooflineTick(v))}</text>`}
|
|
148
|
+
for(let e=yMinExp;e<=yMaxExp;e++){const v=10**e,y=sy(v);out+=`<line x1="${p.l}" y1="${y}" x2="${w-p.r}" y2="${y}" class="roofline-grid"/><text x="${p.l-9}" y="${y+3}" text-anchor="end" class="roofline-tick">${esc(rooflineTick(v))}</text>`}
|
|
149
|
+
const axis=chart.axis||{},xLabel=`${axis.x_label||'Arithmetic Intensity'}${axis.x_unit?` (${axis.x_unit})`:''}`,yLabel=`${axis.y_label||'Performance'}${axis.y_unit?` (${axis.y_unit})`:''}`;
|
|
150
|
+
out+=`<line x1="${p.l}" y1="${h-p.b}" x2="${w-p.r}" y2="${h-p.b}" class="roofline-axis"/><line x1="${p.l}" y1="${p.t}" x2="${p.l}" y2="${h-p.b}" class="roofline-axis"/><text x="${(p.l+w-p.r)/2}" y="${h-14}" text-anchor="middle" class="roofline-axis-label">${esc(xLabel)}</text><text x="19" y="${(p.t+h-p.b)/2}" transform="rotate(-90 19 ${(p.t+h-p.b)/2})" text-anchor="middle" class="roofline-axis-label">${esc(yLabel)}</text>`;
|
|
151
|
+
series.forEach((s,i)=>{const bw=num(s.bandwidth),ceil=num(s.compute_ceiling);if(!(bw>0)||!(ceil>0))return;const color=colorFor(s),cross=ceil/bw,points=[[xmin,Math.min(ceil,bw*xmin)]];if(cross>xmin&&cross<xmax)points.push([cross,ceil]);points.push([xmax,Math.min(ceil,bw*xmax)]);const d=points.map((q,j)=>`${j?'L':'M'}${sx(q[0])},${sy(q[1])}`).join(' ');out+=`<path d="${d}" class="roofline-curve-visual" data-series="${i}" stroke="${color}"/><path d="${d}" class="roofline-curve-hit" data-kind="curve" data-series="${i}"/>`});
|
|
152
|
+
series.forEach((s,i)=>{const x=Number(s.point.x),y=Number(s.point.y),ci=Math.max(0,computeNames.indexOf(s.compute_name)),color=colorFor(s);if(ci%2===0)out+=`<circle cx="${sx(x)}" cy="${sy(y)}" r="6" fill="${color}" class="roofline-point" data-kind="point" data-series="${i}"/>`;else out+=`<rect x="${sx(x)-5.7}" y="${sy(y)-5.7}" width="11.4" height="11.4" rx="1.8" fill="${color}" class="roofline-point" data-kind="point" data-series="${i}"/>`});
|
|
153
|
+
out+=`<g class="roofline-crosshair" id="rooflineCrosshair${index}"><line class="roofline-crosshair-line roofline-crosshair-v" x1="0" y1="${p.t}" x2="0" y2="${h-p.b}"/><line class="roofline-crosshair-line roofline-crosshair-h" x1="${p.l}" y1="0" x2="${w-p.r}" y2="0"/><g class="roofline-x-readout"><rect class="roofline-coordinate-box" x="-37" y="${h-p.b+5}" width="74" height="19"/><text class="roofline-coordinate-text" x="0" y="${h-p.b+18}" text-anchor="middle"></text></g><g class="roofline-y-readout"><rect class="roofline-coordinate-box" x="${p.l-74}" y="-9.5" width="69" height="19"/><text class="roofline-coordinate-text" x="${p.l-9}" y="3" text-anchor="end"></text></g></g>`;
|
|
154
|
+
svg.innerHTML=out;
|
|
155
|
+
if(legend)legend.innerHTML=bwNames.map((n,i)=>`<span class="roofline-legend-item" style="color:${bwPalette[i%bwPalette.length]}"><i class="roofline-line-key"></i>${esc(n)}</span>`).join('')+computeNames.map((n,i)=>`<span class="roofline-legend-item" style="color:#697586"><i class="roofline-point-key" style="border-radius:${i%2===0?'50%':'1px'}"></i>${esc(n)}</span>`).join('');
|
|
156
|
+
const cross=$(`#rooflineCrosshair${index}`),vLine=$('.roofline-crosshair-v',cross),hLine=$('.roofline-crosshair-h',cross),xGroup=$('.roofline-x-readout',cross),yGroup=$('.roofline-y-readout',cross),xText=$('text',xGroup),yText=$('text',yGroup),xRect=$('rect',xGroup),yRect=$('rect',yGroup);
|
|
157
|
+
const svgPoint=e=>{const point=svg.createSVGPoint();point.x=e.clientX;point.y=e.clientY;return point.matrixTransform(svg.getScreenCTM().inverse())};
|
|
158
|
+
const inside=pt=>pt.x>=p.l&&pt.x<=w-p.r&&pt.y>=p.t&&pt.y<=h-p.b;
|
|
159
|
+
const setCrosshair=(x,y,xv,yv)=>{const tx=rooflineReadout(xv),ty=rooflineReadout(yv),xWidth=Math.max(64,tx.length*6.2+13),yWidth=Math.max(61,ty.length*6.2+13),xAnchor=Math.max(p.l+xWidth/2,Math.min(w-p.r-xWidth/2,x));vLine.setAttribute('x1',x);vLine.setAttribute('x2',x);hLine.setAttribute('y1',y);hLine.setAttribute('y2',y);xGroup.setAttribute('transform',`translate(${xAnchor-x},0)`);xRect.setAttribute('x',x-xWidth/2);xRect.setAttribute('width',xWidth);xText.setAttribute('x',x);xText.textContent=tx;yGroup.setAttribute('transform',`translate(0,${Math.max(p.t+10,Math.min(h-p.b-10,y))-y})`);yRect.setAttribute('x',p.l-yWidth-5);yRect.setAttribute('width',yWidth);yText.setAttribute('x',p.l-9);yText.textContent=ty;cross.classList.add('visible')};
|
|
160
|
+
const clearHighlight=()=>{$$('.roofline-curve-visual',svg).forEach(x=>x.classList.remove('active','dimmed'));$$('.roofline-point',svg).forEach(x=>x.classList.remove('active','dimmed'))};
|
|
161
|
+
const highlight=(seriesIndex,point=false)=>{$$('.roofline-curve-visual',svg).forEach((x,i)=>{x.classList.toggle('active',i===seriesIndex);x.classList.toggle('dimmed',i!==seriesIndex)});$$('.roofline-point',svg).forEach((x,i)=>{x.classList.toggle('active',point&&i===seriesIndex);x.classList.toggle('dimmed',i!==seriesIndex)})};
|
|
162
|
+
const tipRows=rows=>`<div class="roofline-tooltip-grid">${rows.filter(r=>r[1]!=null&&r[1]!=='NA').map(r=>`<div class="roofline-tooltip-key">${esc(r[0])}</div><div class="roofline-tooltip-val">${esc(r[1])}</div>`).join('')}</div>`;
|
|
163
|
+
const showTip=(e,color,title,rows)=>{if(!tip||!stage)return;tip.style.setProperty('--roofline-tip-color',color);tip.innerHTML=`<div class="roofline-tooltip-title"><i class="roofline-tooltip-dot"></i>${esc(title)}</div>${tipRows(rows)}`;tip.classList.add('visible');const rect=stage.getBoundingClientRect(),tw=tip.offsetWidth||260,th=tip.offsetHeight||150;let left=e.clientX-rect.left+15,top=e.clientY-rect.top-th-12;if(left+tw>rect.width-4)left=e.clientX-rect.left-tw-15;if(top<4)top=e.clientY-rect.top+15;tip.style.left=`${Math.max(4,left)}px`;tip.style.top=`${Math.max(4,Math.min(rect.height-th-4,top))}px`};
|
|
164
|
+
const hideTip=()=>tip?.classList.remove('visible');
|
|
165
|
+
svg.addEventListener('pointermove',e=>{const pt=svgPoint(e);if(!inside(pt)){cross.classList.remove('visible');hideTip();clearHighlight();return}const target=e.target.closest?.('[data-kind]'),kind=target?.dataset.kind,si=Number(target?.dataset.series);if(kind==='point'&&Number.isInteger(si)){const s=series[si],x=Number(s.point.x),y=Number(s.point.y),color=colorFor(s),limit=num(s.roofline_limit)??((num(s.bandwidth)>0&&num(s.compute_ceiling)>0)?Math.min(Number(s.bandwidth)*x,Number(s.compute_ceiling)):null),ratio=num(s.ratio_percent)??(num(s.ratio)!=null?Number(s.ratio)*100:null);setCrosshair(sx(x),sy(y),x,y);highlight(si,true);showTip(e,color,`${s.bandwidth_name} (${s.compute_name})`,[['Bandwidth',`${rooflineFixed(Number(s.bandwidth),3)} TB/s`],['Arithmetic Intensity',`${rooflineReadout(x)} Ops/Byte`],['Measured Performance',`${rooflineReadout(y)} TOPS/s`],['Roofline Limit',limit!=null?`${rooflineReadout(limit)} TOPS/s`:'NA'],['Performance Ratio',ratio!=null?rooflinePercent(ratio):'NA'],['Compute Ceiling',num(s.compute_ceiling)!=null?`${rooflineFixed(Number(s.compute_ceiling),3)} TOPS/s`:'NA'],['Ridge Point',num(s.knee_intensity)!=null?`${rooflineReadout(Number(s.knee_intensity))} Ops/Byte`:'NA'],['Region',s.bound_region||'unknown']]);if(status)status.textContent=`Point: ${rooflineReadout(x)} Ops/Byte · ${rooflineReadout(y)} TOPS/s`;return}if(kind==='curve'&&Number.isInteger(si)){const s=series[si],x=Math.max(xmin,Math.min(xmax,ix(pt.x))),bw=num(s.bandwidth),ceil=num(s.compute_ceiling),y=(bw>0&&ceil>0)?Math.min(bw*x,ceil):Math.max(ymin,Math.min(ymax,iy(pt.y))),color=colorFor(s),knee=(bw>0&&ceil>0)?ceil/bw:null,region=knee==null?'unknown':x<knee?'bandwidth segment':'compute ceiling';setCrosshair(sx(x),sy(y),x,y);highlight(si,false);showTip(e,color,`${s.bandwidth_name} / ${s.compute_name}`,[['Bandwidth',bw!=null?`${rooflineFixed(bw,3)} TB/s`:'NA'],['Compute Ceiling',ceil!=null?`${rooflineFixed(ceil,3)} TOPS/s`:'NA'],['Ridge Point',knee!=null?`${rooflineReadout(knee)} Ops/Byte`:'NA'],['Current Intensity',`${rooflineReadout(x)} Ops/Byte`],['Roofline Performance',`${rooflineReadout(y)} TOPS/s`],['Active Segment',region]]);if(status)status.textContent=`Curve: ${s.bandwidth_name} / ${s.compute_name}`;return}const x=ix(pt.x),y=iy(pt.y);setCrosshair(pt.x,pt.y,x,y);hideTip();clearHighlight();if(status)status.textContent=`Live: ${rooflineReadout(x)} Ops/Byte · ${rooflineReadout(y)} TOPS/s`});
|
|
166
|
+
svg.addEventListener('pointerleave',()=>{cross.classList.remove('visible');hideTip();clearHighlight();if(status)status.textContent='Move the pointer across the plot for live coordinates'});
|
|
167
|
+
}
|
|
168
|
+
/* Timeline */
|
|
169
|
+
function timelineEvents(data){const out=[];for(const lane of data?.lanes||[])for(const e of lane.events||[])out.push({name:e.name,category:e.category||'',pid:String(lane.pid??lane.label??'process'),tid:String(lane.tid??'lane'),ts:Number(e.start),dur:Number(e.duration),args:e.args||{}});return out.filter(e=>Number.isFinite(e.ts)&&Number.isFinite(e.dur))}
|
|
170
|
+
function renderTimeline(data,prefix='timeline'){if(!data?.available)return renderUnavailable(data,LABELS[prefix==='timeline'?'timeline':'instruction-timeline']);const events=timelineEvents(data);const html=`<div class="tl-shell" id="${prefix}Shell"><div class="tl-topbar"><div class="tl-toolbar"><span class="tl-title">${esc(prefix==='timeline'?(data.title||'Timeline'):'Instruction Timeline')}</span><button class="tl-toolbtn" id="${prefix}ZoomOut">−</button><button class="tl-toolbtn" id="${prefix}ZoomIn">+</button><button class="tl-toolbtn" id="${prefix}Fit">Fit</button><button class="tl-toolbtn" id="${prefix}Reset">Reset</button><span class="tl-zoom-label" id="${prefix}ZoomLabel">1.00×</span><button class="tl-toolbtn active" id="${prefix}Select">Range select</button></div><div class="tl-toolbar"><div class="tl-legend" id="${prefix}Legend"></div><div class="tl-selection-info" id="${prefix}SelectionInfo">No range selected</div></div></div><div class="tl-wrap"><div class="tl-scroll" id="${prefix}Scroll"><div class="tl-table" id="${prefix}Table"></div></div><div class="tl-bottom"><div class="tl-tabs"><button class="tl-tab active" data-view="detail">Slice Detail</button><button class="tl-tab" data-view="list">Slice List</button></div><div class="tl-bottom-content"><div class="tl-inspector-view active" id="${prefix}ViewDetail"></div><div class="tl-inspector-view" id="${prefix}ViewList"></div></div></div></div><div class="tl-hover-tip" id="${prefix}Tip"></div></div>`;setTimeout(()=>initTimeline(events,prefix),0);return html}
|
|
171
|
+
function initTimeline(events,prefix){const shell=$(`#${prefix}Shell`),scroll=$(`#${prefix}Scroll`),table=$(`#${prefix}Table`),tip=$(`#${prefix}Tip`);if(!shell||!events.length)return;const syncHeight=()=>{const top=shell.getBoundingClientRect().top,available=Math.floor(window.innerHeight-top-14);shell.style.height=Math.max(620,available)+'px'};syncHeight();window.addEventListener('resize',syncHeight,{passive:true});const minTs=Math.min(...events.map(e=>e.ts)),maxTs=Math.max(...events.map(e=>e.ts+e.dur)),span=Math.max(maxTs-minTs,1e-9);let zoom=1,fitPxPerUs=8,selectMode=true,selection=null,drag=null,selectedEvent=null,collapsed=new Set;const byPid={};events.forEach((e,i)=>{e._i=i;(byPid[e.pid]??=[]).push(e)});const pids=Object.keys(byPid).sort((a,b)=>String(a).localeCompare(String(b),undefined,{numeric:true,sensitivity:'base'}));const eventClass=name=>{const x=String(name).toLowerCase();if(x.includes('scalar'))return'scalar';if(x.includes('vector'))return'vector';if(x.includes('mte2'))return'mte2';if(x.includes('mte3'))return'mte3';if(x.includes('cube'))return'cube';return'other'};const colorOf=name=>getComputedStyle(shell).getPropertyValue('--tl-'+eventClass(name)).trim();const fmtComposite=us=>{let x=Math.max(0,Math.round(us*1000));if(x<1000)return`${x}ns`;const u=Math.floor(x/1000),r=x%1000;if(u<1000)return r?`${u}us${String(r).padStart(3,'0')}ns`:`${u}us`;const m=Math.floor(u/1000),ur=u%1000;return ur?`${m}ms${ur}us`:`${m}ms`};const fmtAxis=us=>span<10?`${Math.round(us*1000)}ns`:us<1?`${Math.round(us*1000)}ns`:`${us.toFixed(us<10?2:1)}μs`;const fmtMs=us=>(us/1000).toFixed(6);const labelWidth=()=>parseFloat(getComputedStyle(shell).getPropertyValue('--tl-label-width'))||230;const calcFit=()=>{const vw=Math.max(400,scroll.clientWidth-labelWidth());fitPxPerUs=Math.max(5,vw/span)};const pxPerUs=()=>fitPxPerUs*zoom;const trackWidth=()=>Math.max(scroll.clientWidth-labelWidth(),span*pxPerUs());const xOf=ts=>(ts-minTs)*pxPerUs();const timeOfX=x=>minTs+x/pxPerUs();const activateTab=name=>{$$('.tl-tab',shell).forEach(x=>x.classList.toggle('active',x.dataset.view===name));$(`#${prefix}ViewDetail`).classList.toggle('active',name==='detail');$(`#${prefix}ViewList`).classList.toggle('active',name==='list')};$$('.tl-tab',shell).forEach(x=>x.onclick=()=>activateTab(x.dataset.view));
|
|
172
|
+
const applySelection=()=>{$$('.tl-selection-band,.tl-selection-label',shell).forEach(x=>x.remove());if(!selection){$(`#${prefix}SelectionInfo`).textContent='No range selected';return}const left=xOf(selection.start),width=Math.max(1,(selection.end-selection.start)*pxPerUs());$$('.tl-track-surface',shell).forEach((tr,idx)=>{const b=document.createElement('div');b.className='tl-selection-band';b.style.left=left+'px';b.style.width=width+'px';tr.appendChild(b);if(idx===0){const lab=document.createElement('div');lab.className='tl-selection-label';lab.style.left=(left+width/2)+'px';lab.textContent=fmtComposite(selection.end-selection.start);tr.appendChild(lab)}});$(`#${prefix}SelectionInfo`).textContent=`Selected ${fmtComposite(selection.start-minTs)} – ${fmtComposite(selection.end-minTs)} · ${fmtComposite(selection.end-selection.start)}`};
|
|
173
|
+
const showRangeDetail=(name,rows,hits)=>{const box=$(`#${prefix}RangeDetail`);if(!box)return;const list=name==='__totals'?hits:(rows.find(r=>r.name===name)?.list||[]).map(x=>x.e);box.innerHTML=`<div class="tl-range-title">${name==='__totals'?'Selection':'Slice Group: '+esc(name)}</div><div class="tl-range-box"><div class="tl-range-key">Start</div><div class="tl-range-val">${fmtComposite(selection.start-minTs)}</div><div class="tl-range-key">End</div><div class="tl-range-val">${fmtComposite(selection.end-minTs)}</div><div class="tl-range-key">Wall Duration</div><div class="tl-range-val">${fmtComposite(selection.end-selection.start)}</div><div class="tl-range-key">Slices</div><div class="tl-range-val">${list.length}</div></div><div class="tl-event-list">${list.slice(0,14).map(e=>`<div class="tl-event-list-row"><span>${esc(e.name)} · ${esc(e.pid)} / ${esc(e.tid)}</span><span>${fmtComposite(e.dur)}</span></div>`).join('')}${list.length>14?`<div class="muted" style="padding-top:7px">+ ${list.length-14} more</div>`:''}</div>`};
|
|
174
|
+
const showRangeStats=()=>{if(!selection)return;const hits=events.filter(e=>e.ts<selection.end&&e.ts+e.dur>selection.start),grouped={};for(const e of hits){const overlap=Math.max(0,Math.min(e.ts+e.dur,selection.end)-Math.max(e.ts,selection.start));(grouped[e.name]??=[]).push({e,overlap})}const rows=Object.entries(grouped).map(([name,list])=>{const ds=list.map(x=>x.overlap),total=ds.reduce((a,b)=>a+b,0);return{name,list,total,avg:total/list.length,max:Math.max(...ds),min:Math.min(...ds),occ:list.length}}).sort((a,b)=>b.total-a.total);$(`#${prefix}ViewList`).innerHTML=`<div class="tl-list-layout"><div class="tl-slice-table-wrap"><table class="tl-slice-table"><thead><tr><th>Name</th><th>Wall Duration(ms)</th><th>Average Wall Duration(ms)</th><th>Max Wall Duration(ms)</th><th>Min Wall Duration(ms)</th><th>Occurrences</th></tr></thead><tbody><tr class="selected" data-name="__totals"><td>Totals</td><td class="num">${fmtMs(rows.reduce((a,r)=>a+r.total,0))}</td><td class="num">${fmtMs(rows.length?rows.reduce((a,r)=>a+r.avg,0)/rows.length:0)}</td><td class="num">${fmtMs(rows.length?Math.max(...rows.map(r=>r.max)):0)}</td><td class="num">${fmtMs(rows.length?Math.min(...rows.map(r=>r.min)):0)}</td><td class="num">${hits.length}</td></tr>${rows.map(r=>`<tr data-name="${esc(r.name)}"><td>${esc(r.name)}</td><td class="num">${fmtMs(r.total)}</td><td class="num">${fmtMs(r.avg)}</td><td class="num">${fmtMs(r.max)}</td><td class="num">${fmtMs(r.min)}</td><td class="num">${r.occ}</td></tr>`).join('')}</tbody></table></div><div class="tl-range-detail" id="${prefix}RangeDetail"></div></div>`;$$('.tl-slice-table tbody tr',$(`#${prefix}ViewList`)).forEach(tr=>tr.onclick=()=>{$$('.tl-slice-table tbody tr',$(`#${prefix}ViewList`)).forEach(x=>x.classList.remove('selected'));tr.classList.add('selected');showRangeDetail(tr.dataset.name,rows,hits)});showRangeDetail('__totals',rows,hits)};
|
|
175
|
+
const attachSelectionSurface=el=>{el.onpointerdown=e=>{if(!selectMode)return;const rect=el.getBoundingClientRect(),startX=e.clientX-rect.left;drag={startX:Math.max(0,startX),curX:Math.max(0,startX)};el.setPointerCapture?.(e.pointerId);selection={start:timeOfX(drag.startX),end:timeOfX(drag.curX)};applySelection()};el.onpointermove=e=>{if(!drag)return;const rect=el.getBoundingClientRect(),x=e.clientX-rect.left;drag.curX=Math.max(0,Math.min(trackWidth(),x));selection={start:timeOfX(Math.min(drag.startX,drag.curX)),end:timeOfX(Math.max(drag.startX,drag.curX))};applySelection()};el.onpointerup=()=>{if(!drag)return;const a=Math.min(drag.startX,drag.curX),b=Math.max(drag.startX,drag.curX);drag=null;if(Math.abs(b-a)<3){selection=null;applySelection();return}selection={start:timeOfX(a),end:timeOfX(b)};applySelection();showRangeStats();activateTab('list')}};
|
|
176
|
+
const showEvent=(e,el)=>{selectedEvent=e;$$('.tl-event.selected',shell).forEach(x=>x.classList.remove('selected'));el.classList.add('selected');activateTab('detail');const startRel=e.ts-minTs;$(`#${prefix}ViewDetail`).innerHTML=`<div class="tl-detail-grid"><div class="tl-detail-fields"><div class="tl-detail-key">Title</div><div class="tl-detail-value">${esc(e.name)}</div><div class="tl-detail-key">Start</div><div class="tl-detail-value">${fmtComposite(startRel)}</div><div class="tl-detail-key">Start(Raw Timestamp)</div><div class="tl-detail-value">${fmtComposite(e.ts)}</div><div class="tl-detail-key">End(Raw Timestamp)</div><div class="tl-detail-value">${fmtComposite(e.ts+e.dur)}</div><div class="tl-detail-key">Wall Duration</div><div class="tl-detail-value">${fmtComposite(e.dur)}</div></div><div class="tl-detail-extra"><div style="font-weight:700;color:#dce5ef;margin-bottom:10px">Slice Context</div><div>${esc(e.pid)} / ${esc(e.tid)}</div></div></div>`};
|
|
177
|
+
const render=()=>{table.innerHTML='';shell.style.setProperty('--tl-track-width',trackWidth()+'px');shell.style.setProperty('--tl-grid-step',Math.max(80,trackWidth()/10)+'px');const axis=document.createElement('div');axis.className='tl-row tl-axis-row';axis.innerHTML=`<div class="tl-sticky-label tl-axis-label">Timeline</div><div class="tl-axis-track tl-track-surface"></div>`;table.appendChild(axis);const tr=axis.children[1],targetTicks=Math.max(4,Math.floor(trackWidth()/150)),rawStep=span/targetTicks,pow=Math.pow(10,Math.floor(Math.log10(rawStep))),choices=[1,2,5,10];let step=choices.find(c=>c*pow>=rawStep)*pow;if(!step)step=10*pow;for(let t=Math.ceil(minTs/step)*step;t<=maxTs+1e-9;t+=step){const x=xOf(t),line=document.createElement('div');line.className='tl-tick major';line.style.left=x+'px';tr.appendChild(line);const lab=document.createElement('div');lab.className='tl-tick-label';lab.style.left=x+'px';lab.textContent=fmtAxis(t-minTs);tr.appendChild(lab);for(let k=1;k<5;k++){const mt=t+k*step/5;if(mt>=maxTs)break;const d=document.createElement('div');d.className='tl-minor-dot';d.style.left=xOf(mt)+'px';tr.appendChild(d)}}attachSelectionSurface(tr);for(const pid of pids){const evs=byPid[pid],start=Math.min(...evs.map(e=>e.ts)),end=Math.max(...evs.map(e=>e.ts+e.dur)),group=document.createElement('div');group.className='tl-row';group.innerHTML=`<div class="tl-sticky-label tl-group-label ${collapsed.has(pid)?'collapsed':''}"><span class="tl-chev">▾</span><span>${esc(pid)}</span></div><div class="tl-group-track tl-track-surface"><div class="tl-group-summary" style="left:${xOf(start)}px;width:${Math.max(2,(end-start)*pxPerUs())}px"></div></div>`;table.appendChild(group);group.children[0].onclick=()=>{collapsed.has(pid)?collapsed.delete(pid):collapsed.add(pid);render()};attachSelectionSurface(group.children[1]);if(collapsed.has(pid))continue;const tids=[...new Set(evs.map(e=>e.tid))].sort((a,b)=>String(a).localeCompare(String(b),undefined,{numeric:true}));for(const tid of tids){const lane=document.createElement('div');lane.className='tl-row tl-lane-row';lane.innerHTML=`<div class="tl-sticky-label tl-lane-label"><span class="tl-lane-name">${esc(tid)}</span></div><div class="tl-lane-track tl-track-surface"></div>`;table.appendChild(lane);const laneTrack=lane.children[1];for(const e of evs.filter(x=>x.tid===tid)){const el=document.createElement('div');el.className=`tl-event ${eventClass(e.name)}`;el.dataset.eventId=String(e._i);el.style.left=xOf(e.ts)+'px';el.style.width=Math.max(2,e.dur*pxPerUs())+'px';if(e.dur*pxPerUs()>52)el.textContent=e.name;el.onpointerdown=ev=>ev.stopPropagation();el.onclick=ev=>{ev.stopPropagation();showEvent(e,el)};el.onmouseenter=ev=>{tip.innerHTML=`<b>${esc(e.name)}</b><br>${esc(e.pid)} / ${esc(e.tid)}<br>Start: ${fmtComposite(e.ts-minTs)}<br>Duration: ${fmtComposite(e.dur)}`;tip.style.left=ev.clientX+12+'px';tip.style.top=ev.clientY+12+'px';tip.style.opacity=1};el.onmousemove=ev=>{tip.style.left=ev.clientX+12+'px';tip.style.top=ev.clientY+12+'px'};el.onmouseleave=()=>tip.style.opacity=0;laneTrack.appendChild(el)}attachSelectionSurface(laneTrack)}}applySelection();if(selectedEvent){const el=$(`.tl-event[data-event-id="${selectedEvent._i}"]`,shell);if(el)el.classList.add('selected')}$(`#${prefix}ZoomLabel`).textContent=zoom.toFixed(2)+'×'};
|
|
178
|
+
const setZoom=(next,anchorClientX=null)=>{next=Math.max(.45,Math.min(24,next));const viewport=scroll.clientWidth-labelWidth(),anchor=anchorClientX??viewport/2,oldP=pxPerUs(),oldScroll=scroll.scrollLeft,timeAt=(oldScroll+anchor)/oldP;zoom=next;render();scroll.scrollLeft=Math.max(0,timeAt*pxPerUs()-anchor)};$(`#${prefix}ZoomIn`).onclick=()=>setZoom(zoom*1.35);$(`#${prefix}ZoomOut`).onclick=()=>setZoom(zoom/1.35);$(`#${prefix}Fit`).onclick=()=>{zoom=1;calcFit();render();scroll.scrollLeft=0};$(`#${prefix}Reset`).onclick=()=>{zoom=1;selection=null;selectedEvent=null;collapsed.clear();calcFit();render();scroll.scrollLeft=0;$(`#${prefix}ViewDetail`).innerHTML='<div class="tl-empty-state">Click a slice to inspect details</div>';$(`#${prefix}ViewList`).innerHTML='<div class="tl-empty-state">Drag across the timeline to calculate a selected range</div>'};$(`#${prefix}Select`).onclick=function(){selectMode=!selectMode;this.classList.toggle('active',selectMode);this.textContent=selectMode?'Range select':'Range select off'};scroll.addEventListener('wheel',e=>{if(e.ctrlKey||e.metaKey){e.preventDefault();const rect=scroll.getBoundingClientRect();setZoom(zoom*(e.deltaY<0?1.18:1/1.18),e.clientX-rect.left-labelWidth())}},{passive:false});const names=[...new Set(events.map(e=>e.name))];$(`#${prefix}Legend`).innerHTML=names.map(n=>`<span class="tl-legend-item"><i class="tl-swatch" style="background:${colorOf(n)}"></i>${esc(n)}</span>`).join('');calcFit();render();$(`#${prefix}ViewDetail`).innerHTML='<div class="tl-empty-state">Click a slice to inspect details</div>';$(`#${prefix}ViewList`).innerHTML='<div class="tl-empty-state">Drag across the timeline to calculate a selected range</div>'}
|
|
179
|
+
/* Cache / Source / Stall / Raw */
|
|
180
|
+
function cacheHeatColor(value,min,max){if(value==null||!Number.isFinite(Number(value)))return'#8793a5';const t=max===min?.55:Math.max(0,Math.min(1,(Number(value)-min)/(max-min)));const stops=[[0,[135,147,165]],[.24,[131,203,183]],[.48,[216,239,113]],[.68,[255,209,46]],[.84,[255,107,46]],[1,[214,22,22]]];let a=stops[0],b=stops[stops.length-1];for(let i=1;i<stops.length;i++)if(t<=stops[i][0]){a=stops[i-1];b=stops[i];break}const u=(t-a[0])/Math.max(.0001,b[0]-a[0]),rgb=a[1].map((x,i)=>Math.round(x+(b[1][i]-x)*u));return`rgb(${rgb.join(',')})`}
|
|
181
|
+
function renderCache(data){
|
|
182
|
+
if(!data?.available)return emptyCanvas();
|
|
183
|
+
if(!(data.families||[]).length){const opts=(data.metrics||[]).map((m,i)=>`<option value="${esc(m)}" ${i===0?'selected':''}>${esc(m)}</option>`).join('');const html=section('Cache Heatmap',`<div class="cache-legacy"><div id="cacheGrid" class="cache-grid"></div><div id="cacheSummary"></div></div>`,`<select id="cacheMetric">${opts}</select>`);setTimeout(()=>initCacheLegacy(data),0);return html}
|
|
184
|
+
const opts=data.families.map(f=>`<option value="${esc(f.name)}" ${f.name===data.default_family?'selected':''}>${esc(f.name)}</option>`).join('');
|
|
185
|
+
const html=`<div class="cache-shell"><div class="panel cache-toolbar"><span class="label">Cache family</span><select id="cacheFamily">${opts}</select><span class="label">Color metric</span><select id="cacheValueMode"><option value="share">Event share (%)</option><option value="count">Event count</option></select><div id="cacheGranularity" class="cache-note"></div></div><div class="cache-pair"><div class="card cache-map-card"><div class="cache-map-head"><div><div class="cache-map-title">Hit</div><div id="cacheHitTotal" class="cache-map-total"></div></div><button class="cache-expand" data-cache-expand="hit">Enlarge</button></div><div class="cache-matrix-wrap"><div class="cache-y-label">Index row</div><div id="cacheHitMatrix" class="cache-matrix"></div><div></div><div class="cache-x-label">Index column</div></div><div class="cache-legend"><span>Low</span><span class="cache-gradient"></span><span>High</span></div></div><div class="card cache-map-card"><div class="cache-map-head"><div><div class="cache-map-title">Miss</div><div id="cacheMissTotal" class="cache-map-total"></div></div><button class="cache-expand" data-cache-expand="miss">Enlarge</button></div><div class="cache-matrix-wrap"><div class="cache-y-label">Index row</div><div id="cacheMissMatrix" class="cache-matrix"></div><div></div><div class="cache-x-label">Index column</div></div><div class="cache-legend"><span>Low</span><span class="cache-gradient"></span><span>High</span></div></div></div><div id="cacheDetail" class="card cache-detail"></div><div id="cacheModal" class="cache-modal"><div class="cache-modal-card"><div class="cache-modal-head"><div id="cacheModalTitle" class="cache-map-title"></div><button id="cacheModalClose" class="cache-modal-close">×</button></div><div id="cacheModalBody" class="cache-modal-body"></div></div></div></div>`;
|
|
186
|
+
setTimeout(()=>initCache(data),0);return html
|
|
187
|
+
}
|
|
188
|
+
function initCacheLegacy(data){const sel=$('#cacheMetric');if(!sel)return;const draw=()=>{const key=sel.value,vals=(data.blocks||[]).map(b=>num(b.values?.[key])).filter(v=>v!=null),min=vals.length?Math.min(...vals):0,max=vals.length?Math.max(...vals):1;$('#cacheGrid').innerHTML=(data.blocks||[]).map(b=>{const v=num(b.values?.[key]);return `<div class="cache-cell" style="background:${colorScale(v,min,max)}"><div class="id">Block ${esc(b.block_id)}</div><div class="val">${fmt(v,key.toLowerCase().includes('rate')?'percent':'number')}</div></div>`}).join('');$('#cacheSummary').innerHTML=''};sel.addEventListener('change',draw);draw()}
|
|
189
|
+
function initCache(data){const familySel=$('#cacheFamily'),modeSel=$('#cacheValueMode'),detail=$('#cacheDetail'),modal=$('#cacheModal');if(!familySel)return;let selectedIndex=null,currentKind='hit';const getFamily=()=>data.families.find(f=>f.name===familySel.value)||data.families[0];const metric=(cell,kind)=>modeSel.value==='count'?Number(cell[kind]||0):Number(cell[`${kind}_share_percent`]||0);const matrixCellsHtml=(family,kind)=>{const vals=family.cells.map(c=>metric(c,kind)),min=vals.length?Math.min(...vals):0,max=vals.length?Math.max(...vals):1;return family.cells.map((c,i)=>{const v=metric(c,kind),title=`${family.index_label} ${c.index} · ${kind}: ${fmt(c[kind])} · share ${Number(c[`${kind}_share_percent`]||0).toFixed(4)}%`;return `<button class="cache-matrix-cell ${String(c.index)===String(selectedIndex)?'selected':''}" data-cache-index="${esc(c.index)}" data-cache-kind="${kind}" style="background:${cacheHeatColor(v,min,max)}" title="${esc(title)}"></button>`}).join('')};const matrixHtml=(family,kind,modalMode=false)=>`<div class="cache-matrix ${modalMode?'cache-matrix-modal':''}" style="--cache-cols:${family.columns}">${matrixCellsHtml(family,kind)}</div>`;const bindCells=(scope=document)=>{$$('[data-cache-index]',scope).forEach(cell=>cell.onclick=()=>{selectedIndex=cell.dataset.cacheIndex;currentKind=cell.dataset.cacheKind||currentKind;draw()})};const drawDetail=(family)=>{const cell=family.cells.find(c=>String(c.index)===String(selectedIndex))||family.cells[0];if(!cell){detail.innerHTML='<div class="cache-detail-note">No cache event cells.</div>';return}selectedIndex=String(cell.index);const links=cell.source_links||[];detail.innerHTML=`<div class="cache-detail-grid"><div class="cache-detail-item"><div class="label">${esc(family.index_label)}</div><div class="value">${esc(cell.index)}</div></div><div class="cache-detail-item"><div class="label">Hit events</div><div class="value">${fmt(cell.hit)}</div></div><div class="cache-detail-item"><div class="label">Miss events</div><div class="value">${fmt(cell.miss)}</div></div><div class="cache-detail-item"><div class="label">Total events</div><div class="value">${fmt(cell.total)}</div></div><div class="cache-detail-item"><div class="label">Hit rate</div><div class="value">${cell.hit_rate==null?'NA':Number(cell.hit_rate).toFixed(4)+'%'}</div></div><div class="cache-detail-item"><div class="label">Selected event share</div><div class="value">${Number(cell[`${currentKind}_share_percent`]||0).toFixed(6)}%</div></div><div class="cache-detail-note">${esc(family.granularity_note||'')} ${links.length?'Source linkage is available for this cell.':'No cacheline-to-instruction mapping was emitted for this cell; the report does not fabricate a Source jump.'}</div><div class="cache-detail-note"><button class="cache-source-link" ${links.length?'':'disabled'}>${links.length?'Show linked instruction':'Source linkage unavailable'}</button></div></div>`};const draw=()=>{const family=getFamily();if(selectedIndex==null&&family.cells.length)selectedIndex=String(family.cells[0].index);$('#cacheGranularity').textContent=`${family.index_label} · ${family.cells.length} cells. ${family.granularity_note||''}`;$('#cacheHitTotal').textContent=`${fmt(family.totals.hit)} events` ;$('#cacheMissTotal').textContent=`${fmt(family.totals.miss)} events`;const hit=$('#cacheHitMatrix'),miss=$('#cacheMissMatrix');hit.style.setProperty('--cache-cols',family.columns);miss.style.setProperty('--cache-cols',family.columns);hit.innerHTML=matrixCellsHtml(family,'hit');miss.innerHTML=matrixCellsHtml(family,'miss');bindCells(hit);bindCells(miss);drawDetail(family)};familySel.onchange=()=>{selectedIndex=null;draw()};modeSel.onchange=draw;$$('[data-cache-expand]').forEach(btn=>btn.onclick=()=>{const family=getFamily(),kind=btn.dataset.cacheExpand;$('#cacheModalTitle').textContent=`${family.name} · ${kind==='hit'?'Hit':'Miss'} · ${modeSel.options[modeSel.selectedIndex].text}`;$('#cacheModalBody').innerHTML=matrixHtml(family,kind,true);modal.classList.add('visible');bindCells($('#cacheModalBody'))});$('#cacheModalClose').onclick=()=>modal.classList.remove('visible');modal.addEventListener('click',e=>{if(e.target===modal)modal.classList.remove('visible')});draw()}
|
|
190
|
+
function renderOnChipMemory(data){if(!data?.available)return renderUnavailable(data,'On-Chip Memory');const errors=(data.errors||[]);const html=`<div class="onchip-shell"><div class="panel onchip-status"><div><div class="onchip-status-main">${esc(data.source_name||'memory_info.json')} · ${data.summary?.allocation_count||0} allocations</div><div class="onchip-status-note">The block map uses virtual execution order on the x-axis and on-chip address on the y-axis. Select a block to inspect its lifetime, size, allocation location, temporary status, and physical bank distribution.</div>${errors.length?`<div class="onchip-warning">Partial payload warning: ${errors.map(esc).join(' · ')}</div>`:''}</div><div class="coverage-chip">${esc(data.status||'ok')}</div></div><div class="card onchip-map-card"><div class="onchip-map-head"><div class="cache-map-title">Memory Block Map</div><div class="muted">Execution order × on-chip address</div></div><svg id="onchipSvg" class="onchip-svg" viewBox="0 0 1200 430"></svg></div><div class="onchip-lower"><div id="onchipDetail" class="card onchip-detail"></div><div id="onchipBanks" class="card onchip-banks"></div></div></div>`;setTimeout(()=>initOnChipMemory(data),0);return html}
|
|
191
|
+
function initOnChipMemory(data){const svg=$('#onchipSvg'),detail=$('#onchipDetail'),banks=$('#onchipBanks');if(!svg)return;let selected=data.blocks?.[0]?.id||null;const palette=['#2e6bd1','#2c9470','#8a68b3','#c87935','#3d8ca8','#b45779','#708f4d','#9a7b3d'];const drawMap=()=>{const w=1200,h=430,p={l:78,r:24,t:24,b:52},xr=data.execution_range||[0,1],known=(data.address_range||[]).length===2,yr=known?data.address_range:[0,Math.max(1,...data.blocks.map(x=>Number(x.size_bytes)||1))],sx=x=>p.l+(Number(x)-xr[0])/Math.max(1e-9,xr[1]-xr[0])*(w-p.l-p.r),sy=y=>h-p.b-(Number(y)-yr[0])/Math.max(1e-9,yr[1]-yr[0])*(h-p.t-p.b);let out='';for(let i=0;i<=6;i++){const x=p.l+i*(w-p.l-p.r)/6,y=p.t+i*(h-p.t-p.b)/6;out+=`<line class="onchip-grid-line" x1="${x}" y1="${p.t}" x2="${x}" y2="${h-p.b}"/><line class="onchip-grid-line" x1="${p.l}" y1="${y}" x2="${w-p.r}" y2="${y}"/>`}out+=`<line class="onchip-axis" x1="${p.l}" y1="${h-p.b}" x2="${w-p.r}" y2="${h-p.b}"/><line class="onchip-axis" x1="${p.l}" y1="${p.t}" x2="${p.l}" y2="${h-p.b}"/><text class="onchip-axis-label" x="${(p.l+w-p.r)/2}" y="410" text-anchor="middle">Virtual execution order / IR line</text><text class="onchip-axis-label" x="18" y="${(p.t+h-p.b)/2}" transform="rotate(-90 18 ${(p.t+h-p.b)/2})" text-anchor="middle">${known?'On-chip memory address':'Relative buffer size (address unavailable)'}</text>`;data.blocks.forEach((b,i)=>{const y0=known?(b.address_start??yr[0]):0,y1=known?(b.address_end??y0+(b.size_bytes||1)):(b.size_bytes||1),x0=sx(b.start),x1=sx(b.end),top=sy(Math.max(y0,y1)),bottom=sy(Math.min(y0,y1)),height=Math.max(4,bottom-top),width=Math.max(3,x1-x0);out+=`<rect class="onchip-block ${b.id===selected?'selected':''}" data-onchip-id="${esc(b.id)}" x="${x0}" y="${top}" width="${width}" height="${height}" rx="2" fill="${palette[i%palette.length]}"><title>${esc(b.name)} · size ${fmt(b.size_bytes)} B · life ${fmt(b.lifetime)}</title></rect>`});svg.innerHTML=out;$$('[data-onchip-id]',svg).forEach(r=>r.onclick=()=>{selected=r.dataset.onchipId;drawMap();drawDetail();drawBanks()})};const drawDetail=()=>{const b=data.blocks.find(x=>x.id===selected);if(!b){detail.innerHTML='<div class="onchip-empty-detail">Select a memory block.</div>';return}detail.innerHTML=`<div class="cache-map-title" style="margin-bottom:9px">Selected Allocation</div><div class="onchip-detail-grid"><div class="onchip-detail-item full"><div class="label">Name</div><div class="value" title="${esc(b.name)}">${esc(b.name)}</div></div><div class="onchip-detail-item"><div class="label">Size</div><div class="value">${b.size_bytes==null?'NA':fmt(b.size_bytes)+' B'}</div></div><div class="onchip-detail-item"><div class="label">Lifetime</div><div class="value">${fmt(b.start)} → ${fmt(b.end)} (${fmt(b.lifetime)})</div></div><div class="onchip-detail-item"><div class="label">Address</div><div class="value">${b.address_start==null?'NA':fmt(b.address_start)+' → '+fmt(b.address_end)}</div></div><div class="onchip-detail-item"><div class="label">Temporary</div><div class="value">${b.temporary==null?'Unknown':b.temporary?'Yes':'No'}</div></div><div class="onchip-detail-item full"><div class="label">Allocation location</div><div class="value" title="${esc(b.allocation_location||'')}">${esc(b.allocation_location||'NA')}</div></div><div class="onchip-detail-item full"><div class="label">Bank / Group</div><div class="value">Banks: ${esc((b.bank_ids||[]).join(', ')||'NA')} · Groups: ${esc((b.group_ids||[]).join(', ')||'NA')}</div></div></div>`};const drawBanks=()=>{const layout=data.bank_layout||{},cells=layout.cells||[],b=data.blocks.find(x=>x.id===selected);if(!cells.length){banks.innerHTML=`<div class="cache-map-title" style="margin-bottom:9px">Memory Distribution</div><div class="onchip-bank-note">No physical bank/group assignment was present in memory_info.json. The report keeps this panel unavailable rather than inventing a bank layout.</div>`;return}const groups=[...new Set(cells.map(x=>x.group_id).filter(x=>x!=null))],cols=Math.min(8,Math.max(1,groups.length));banks.innerHTML=`<div class="cache-map-title" style="margin-bottom:9px">Memory Distribution</div><div class="onchip-bank-grid" style="--bank-cols:${cols}">${groups.map(g=>{const gc=cells.filter(x=>x.group_id===g);return `<div class="onchip-bank-group"><div class="onchip-bank-group-title">Group ${g}</div><div class="onchip-bank-cells">${gc.map(c=>{const occupied=(c.owner_ids||[]).length,sel=b&&(c.owner_ids||[]).includes(b.id);return `<div class="onchip-bank ${occupied?'occupied':''} ${sel?'selected':''}" title="${esc((c.owner_ids||[]).join(', ')||'Unassigned')}">Bank ${c.bank_id}</div>`}).join('')}</div></div>`}).join('')}</div>`};drawMap();drawDetail();drawBanks()}
|
|
192
|
+
function sourceExecuted(obj,core){const m=obj?.instructions_executed_by_core||{};const v=m[core]??m.ALL??0;return Number(v)||0}
|
|
193
|
+
function sourceShortPath(path){const p=String(path||'').split('/').filter(Boolean);return p.length>4?'…/'+p.slice(-4).join('/'):String(path||'')}
|
|
194
|
+
function sourceSyntax(text){
|
|
195
|
+
const tokens=[];
|
|
196
|
+
let raw=String(text??"");
|
|
197
|
+
raw=raw.replace(/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')/g,m=>{const i=tokens.push({kind:"string",value:m})-1;return `@@MSOPPROF_TOKEN_${i}@@`});
|
|
198
|
+
const commentAt=raw.indexOf("//");
|
|
199
|
+
if(commentAt>=0){const comment=raw.slice(commentAt);const i=tokens.push({kind:"comment",value:comment})-1;raw=raw.slice(0,commentAt)+`@@MSOPPROF_TOKEN_${i}@@`}
|
|
200
|
+
let s=esc(raw);
|
|
201
|
+
s=s.replace(/\b(if|else|for|while|return|template|namespace|constexpr|const|inline|void|int|float|uint32_t|size_t|struct|class|private|public|static|auto)\b/g,'<span class="kw">$1</span>');
|
|
202
|
+
s=s.replace(/\b(__global__|__vector__|__simt_vf__|__gm__|__ubuf__)\b/g,'<span class="type">$1</span>');
|
|
203
|
+
s=s.replace(/@@MSOPPROF_TOKEN_(\d+)@@/g,(_,idx)=>{const t=tokens[Number(idx)];return t?`<span class="${t.kind}">${esc(t.value)}</span>`:""});
|
|
204
|
+
return s
|
|
205
|
+
}
|
|
206
|
+
function sourceReasonLabel(reason){return String(reason||'').replace(/_/g,' ').replace(/\b\w/g,x=>x.toUpperCase())}
|
|
207
|
+
const SOURCE_STALL_COLORS={Active:'#3f7fc4',Divergence_Stack_Spill:'#8f78b6',IBuf_Empty:'#5aa6a6',Nop_Cycles:'#9aa6b2',Others:'#6b8fb8',Register_bank_conflict:'#9b6f9e',Resource_conflict:'#c18b55',Scoreboard_Not_Ready:'#b46f7d',Warp_Level_Sync:'#6f9b79'};
|
|
208
|
+
const SOURCE_STALL_FALLBACK=['#517da8','#6f9a8d','#8c7aa8','#ad825f','#6f8a9d','#9b7589','#7c9271','#9a8b68'];
|
|
209
|
+
function sourceStallColor(reason,index=0){return SOURCE_STALL_COLORS[reason]||SOURCE_STALL_FALLBACK[index%SOURCE_STALL_FALLBACK.length]}
|
|
210
|
+
function sourceStallMetric(value,legacy=0){if(value&&typeof value==='object')return value;const p=Number(legacy)||0;return{percent:p,total_samples:0,details:{},segments:[]}}
|
|
211
|
+
function sourceStallTitle(metric){const pct=Number(metric?.percent)||0,parts=(metric?.segments||[]).map(x=>`${sourceReasonLabel(x.reason)}: ${fmt(x.count)} (${Number(x.share_percent||0).toFixed(1)}%)`);return `${pct.toFixed(2)}%${parts.length?' · '+parts.join(' · '):''}`}
|
|
212
|
+
function sourceStallBar(metric,mapped=true){if(!mapped)return'<div class="source-stall-empty">—</div>';const m=sourceStallMetric(metric),pct=Number(m.percent)||0,segs=(m.segments||[]).filter(x=>Number(x.count)>0),title=esc(sourceStallTitle(m));return `<div class="source-stall-cell" title="${title}"><span class="source-stall-value">${pct.toFixed(2)}%</span><span class="source-stall-track">${segs.map((x,i)=>`<i class="source-stall-segment" style="width:${Math.max(.5,Number(x.share_percent)||0)}%;background:${sourceStallColor(x.reason,i)}" title="${esc(sourceReasonLabel(x.reason)+': '+fmt(x.count)+' · '+Number(x.share_percent||0).toFixed(1)+'%')}"></i>`).join('')}</span></div>`}
|
|
213
|
+
function renderSourceDiagnostic(data){const d=data?.diagnostic||{},e=d.evidence||[],req=d.requirements||[],fix=d.remediation||[];return `<div class="source-diagnostic"><div class="source-diagnostic-card"><div class="source-diagnostic-head"><div class="source-diagnostic-code">${esc(d.code||'feature_unavailable')}</div><div class="source-diagnostic-title">${esc(d.title||'Source mapping unavailable')}</div><div class="source-diagnostic-explanation">${esc(d.explanation||'The required Source payload is not available.')}</div></div><div class="source-diagnostic-evidence">${e.map(x=>`<div class="source-diagnostic-evidence-item"><div class="label">${esc(x.label)}</div><div class="value">${esc(x.value)}</div></div>`).join('')}</div><div class="source-diagnostic-body"><div class="source-diagnostic-section"><h3>Availability contract</h3><ol class="source-diagnostic-list">${req.map(x=>`<li>${esc(x)}</li>`).join('')}</ol></div><div class="source-diagnostic-section"><h3>Required next actions</h3><ol class="source-diagnostic-list">${fix.map(x=>`<li>${esc(x)}</li>`).join('')}</ol></div></div><div class="source-diagnostic-note">No source code or source-to-instruction relation has been fabricated from incomplete profiler output.</div></div></div>`}
|
|
214
|
+
function renderSource(data){
|
|
215
|
+
if(!data?.available)return data?.diagnostic?renderSourceDiagnostic(data):emptyCanvas();
|
|
216
|
+
if(!['msopprof-source-explorer/v1','msopprof-source-explorer/v2'].includes(data.schema))return `<div class="source-layout"><div class="source-panel">${(data.source_lines||[]).map(l=>`<div class="source-code-row"><div class="source-line-number">${esc(l.line??'')}</div><div class="source-code-text">${esc(l.text)}</div></div>`).join('')}</div><div class="source-panel">${(data.instructions||[]).map(i=>`<div class="source-inst-row"><div>${esc(i.pc)}</div><div>${esc(i.instruction)}</div></div>`).join('')}</div></div>`;
|
|
217
|
+
const s=data.summary||{},fusion=data.fusion||{},fusionText=fusion.accepted?`PCSampling merged · ${(Number(fusion.instruction_address_overlap_ratio)||0)*100|0}% address overlap`:(data.base_provider==='PCSampling fallback'?'PCSampling source fallback':'Source metrics only');
|
|
218
|
+
const html=`<div class="source-page"><div class="panel source-toolbar"><div class="source-control-group"><span class="label">Core</span><select id="sourceCore">${(data.cores||['ALL']).map(x=>`<option value="${esc(x)}">${esc(x)}</option>`).join('')}</select></div><div class="source-control-group"><span class="label">Source</span><select id="sourceFile" class="source-file-select">${(data.files||[]).map(f=>`<option value="${esc(f.id)}" title="${esc(f.path)}">${esc(f.kind+' · '+sourceShortPath(f.path))}</option>`).join('')}</select></div><div id="sourceStatus" class="source-status"></div><div class="source-right-tools"><select id="sourcePipe"><option value="ALL">All pipes</option></select><input id="sourceSearch" type="search" placeholder="Address / opcode / source"><label class="check"><input id="sourceOnlyRelated" type="checkbox">Only related instructions</label></div></div><div id="sourceLegend" class="source-legend"><span class="source-legend-label">Stall reasons</span>${(data.stall_reasons||[]).map((x,i)=>`<span class="source-legend-item"><i class="source-legend-dot" style="background:${sourceStallColor(x,i)}"></i>${esc(sourceReasonLabel(x))}</span>`).join('')}<span class="source-fusion-badge">${esc(fusionText)} · ${s.unique_source_files||0} files · ${s.instruction_count||0} instructions</span></div><div id="sourceLayout" class="source-layout"><div class="source-panel source-code-panel"><div class="source-panel-head"><span id="sourceFileTitle" class="source-file-title"></span><span id="sourceKind" class="source-kind-badge"></span></div><div id="sourceCodeScroll" class="source-code-scroll"><div class="source-code-canvas"><div class="source-code-head"><div>#</div><div>Source</div><div>Instructions Executed</div><div>Stall Sampling (All Samples)</div><div>Stall Sampling (Not Issue)</div><div>GPR Count</div></div><div id="sourceCodeBody" class="source-code-body"></div></div></div></div><div id="sourceSplitter" class="source-splitter" title="Drag to resize panes"></div><div class="source-panel source-inst-panel"><div class="source-inst-toolbar"><span class="label">Instruction view</span><span id="sourceShown" class="muted source-instruction-count"></span></div><div id="sourceInstScroll" class="source-inst-scroll"><div class="source-inst-canvas"><div class="source-inst-head"><div data-sort="index">#</div><div data-sort="address_value">Address</div><div data-sort="pipe">Pipe</div><div data-sort="opcode">Source</div><div data-sort="executed">Instr. Executed</div><div data-sort="gpr_count">GPR Count</div><div>GPR Status</div><div data-sort="stall_all_percent">Stall Sampling (All Samples)</div><div data-sort="stall_not_issue_percent">Stall Sampling (Not Issue)</div></div><div id="sourceInstBody" class="source-inst-body"></div></div></div><div id="sourceDetail" class="source-detail"></div></div></div></div>`;
|
|
219
|
+
setTimeout(()=>initSource(data),0);return html
|
|
220
|
+
}
|
|
221
|
+
function initSource(data){
|
|
222
|
+
const coreSel=$('#sourceCore'),fileSel=$('#sourceFile'),pipeSel=$('#sourcePipe'),search=$('#sourceSearch'),only=$('#sourceOnlyRelated'),codeBody=$('#sourceCodeBody'),codeScroll=$('#sourceCodeScroll'),instBody=$('#sourceInstBody'),instScroll=$('#sourceInstScroll'),status=$('#sourceStatus'),detail=$('#sourceDetail'),layout=$('#sourceLayout'),splitter=$('#sourceSplitter');if(!fileSel)return;
|
|
223
|
+
fileSel.value=data.default_file_id||data.files?.[0]?.id||'';let selectedLine=Number(data.default_line)||null,selectedInstruction=null,sortKey='index',sortDir=1;const instById=Object.fromEntries((data.instructions||[]).map(x=>[x.id,x]));const getFile=()=>data.files.find(f=>String(f.id)===String(fileSel.value))||data.files[0];const lineFor=(file,n)=>file?.lines?.find(x=>Number(x.number)===Number(n));const core=()=>coreSel.value||'ALL';const pipeValues=[...new Set((data.instructions||[]).map(x=>x.pipe).filter(Boolean))].sort();pipeSel.innerHTML='<option value="ALL">All pipes</option>'+pipeValues.map(x=>`<option value="${esc(x)}">${esc(x)}</option>`).join('');
|
|
224
|
+
const hideDetail=()=>{detail.classList.remove('visible');detail.innerHTML=''};
|
|
225
|
+
const updateStatus=()=>{const file=getFile(),line=lineFor(file,selectedLine),count=line?.related_instruction_ids?.length||0;status.innerHTML=selectedLine?`Line: <strong>${selectedLine}</strong> · Related Instructions: <strong>${count}</strong>`:`Select a source line`};
|
|
226
|
+
const scrollRow=(container,row)=>{if(!container||!row)return;const top=row.offsetTop-container.clientHeight/2+row.offsetHeight/2;container.scrollTo({top:Math.max(0,top),behavior:'smooth'})};
|
|
227
|
+
const selectLine=(n)=>{selectedLine=Number(n)||null;selectedInstruction=null;hideDetail();drawCode(false);drawInstructions('related')};
|
|
228
|
+
const selectInstruction=(id)=>{selectedInstruction=id;const inst=instById[id];if(!inst)return;const exact=(inst.related_lines||[]).find(x=>x.reasons?.includes('exact_location'))||(inst.related_lines||[])[0];if(exact){fileSel.value=exact.file_id;selectedLine=exact.line;drawCode(true)}drawInstructions(id);drawDetail(inst)};
|
|
229
|
+
const drawCode=(scroll=false)=>{const file=getFile();$('#sourceFileTitle').textContent=file?.path||'—';$('#sourceKind').textContent=file?.kind||'Source';const maxExec=Math.max(1,...(file?.lines||[]).map(l=>sourceExecuted(l,core())));codeBody.innerHTML=(file?.lines||[]).map(l=>{const exec=sourceExecuted(l,core()),related=(l.related_instruction_ids||[]).length,selected=Number(l.number)===Number(selectedLine),hot=(Number(l.stall_all?.percent??l.stall_all_percent)||0)>=50||(exec>0&&exec>=maxExec*.75);return `<div class="source-code-row ${l.mapped?'mapped':''} ${selected?'selected':''} ${hot?'hot':''}" data-line="${l.number}" title="${related} related instructions"><div class="source-line-number">${l.number}</div><div class="source-code-text" title="${esc(l.text||' ')}">${sourceSyntax(l.text||' ')}</div><div class="source-metric ${exec?'':'zero'}">${l.mapped?fmt(exec):'—'}</div><div>${sourceStallBar(l.stall_all,l.mapped)}</div><div>${sourceStallBar(l.stall_not_issue,l.mapped)}</div><div class="source-metric ${l.gpr_count?'':'zero'}">${l.mapped?(l.gpr_count??0):'—'}</div></div>`}).join('');$$('.source-code-row',codeBody).forEach(row=>row.onclick=()=>selectLine(row.dataset.line));if(scroll&&selectedLine){const row=$(`.source-code-row[data-line="${selectedLine}"]`,codeBody);scrollRow(codeScroll,row)}updateStatus()};
|
|
230
|
+
const filteredInstructions=()=>{const file=getFile(),line=lineFor(file,selectedLine),related=new Set(line?.related_instruction_ids||[]),q=(search.value||'').trim().toLowerCase(),pipe=pipeSel.value;let rows=(data.instructions||[]).filter(i=>pipe==='ALL'||i.pipe===pipe).filter(i=>!q||[i.address,i.opcode,i.pipe,i.source_location].some(v=>String(v||'').toLowerCase().includes(q)));if(only.checked&&selectedLine)rows=rows.filter(i=>related.has(i.id));return rows.map(i=>({...i,executed:sourceExecuted(i,core()),_related:related.has(i.id)})).sort((a,b)=>{const av=a[sortKey],bv=b[sortKey];let c;if(typeof av==='number'&&typeof bv==='number')c=av-bv;else c=String(av??'').localeCompare(String(bv??''),undefined,{numeric:true});return c*sortDir})};
|
|
231
|
+
let currentInstructionRows=[],gprPaintFrame=0;const sourceRowHeight=()=>{const v=parseFloat(getComputedStyle(instBody).getPropertyValue('--source-row-h'));return Number.isFinite(v)&&v>0?v:30};
|
|
232
|
+
const paintGpr=(rows=currentInstructionRows)=>{currentInstructionRows=rows;const old=$('.source-gpr-overlay',instBody);if(old)old.remove();const slot=$('.source-gpr-slot',instBody);if(!slot||!rows.length)return;const bodyRect=instBody.getBoundingClientRect(),slotRect=slot.getBoundingClientRect(),left=slotRect.left-bodyRect.left,width=Math.max(40,slotRect.width),rowH=sourceRowHeight(),bodyH=Math.max(1,rows.length*rowH),freq={};rows.forEach(r=>(r.gpr_status||[]).forEach(g=>freq[g.register]=(freq[g.register]||0)+1));const regs=Object.keys(freq).sort((a,b)=>freq[b]-freq[a]||String(a).localeCompare(String(b),undefined,{numeric:true})).slice(0,18),pad=Math.min(10,width*.08),lane=Object.fromEntries(regs.map((r,i)=>[r,pad+i*((width-pad*2)/Math.max(1,regs.length-1))]));const addrRows=rows.map((r,i)=>({v:Number(r.address_value),i})).filter(x=>Number.isFinite(x.v)).sort((a,b)=>a.v-b.v);const rowForTarget=(v,def)=>{const hit=addrRows.find(x=>x.v>=v);return hit?hit.i:def};let svg=`<svg class="source-gpr-overlay" data-relative-gpr="true" style="left:${left}px;width:${width}px" width="${width}" height="${bodyH}" viewBox="0 0 ${width} ${bodyH}">`;rows.forEach((r,ri)=>(r.gpr_status||[]).forEach(g=>{const x=lane[g.register];if(x==null)return;const y=ri*rowH+rowH/2,target=(Number(r.address_value)||0)+(Number(g.survival_time)||0),ti=g.survival_time>0?rowForTarget(target,ri):ri,y2=ti*rowH+rowH/2;if(g.survival_time>0)svg+=`<line class="source-gpr-line" x1="${x}" y1="${y}" x2="${x}" y2="${Math.max(y,y2)}"/>`;const st=Number(g.status)||0;if(st===3)svg+=`<rect class="source-gpr-marker status-3" x="${x-3}" y="${y-3}" width="6" height="6" transform="rotate(45 ${x} ${y})"><title>${esc(g.register)} · status ${st} · survival ${g.survival_time}</title></rect>`;else if(st===1)svg+=`<path class="source-gpr-marker status-1" d="M${x+4},${y-4} L${x-4},${y} L${x+4},${y+4} Z"><title>${esc(g.register)} · status ${st} · survival ${g.survival_time}</title></path>`;else if(st===2)svg+=`<path class="source-gpr-marker status-2" d="M${x-4},${y-4} L${x+4},${y} L${x-4},${y+4} Z"><title>${esc(g.register)} · status ${st} · survival ${g.survival_time}</title></path>`;else svg+=`<circle class="source-gpr-marker status-4" cx="${x}" cy="${y}" r="2.5"><title>${esc(g.register)} · status ${st} · survival ${g.survival_time}</title></circle>`}));svg+='</svg>';instBody.insertAdjacentHTML('beforeend',svg)};
|
|
233
|
+
const requestGprPaint=(rows=currentInstructionRows)=>{currentInstructionRows=rows;if(gprPaintFrame)cancelAnimationFrame(gprPaintFrame);gprPaintFrame=requestAnimationFrame(()=>{gprPaintFrame=0;paintGpr(currentInstructionRows)})};
|
|
234
|
+
const drawInstructions=(scrollTarget=null)=>{const rows=filteredInstructions();currentInstructionRows=rows;$('#sourceShown').textContent=`${rows.length} shown · ${data.instructions.length} total`;instBody.innerHTML=rows.map(i=>`<div class="source-inst-row ${i._related?'related':''} ${i.id===selectedInstruction?'selected':''}" data-id="${esc(i.id)}"><div title="${i.index}">${i.index}</div><div title="${esc(i.address)}">${esc(i.address)}</div><div class="pipe" title="${esc(i.pipe)}">${esc(i.pipe)}</div><div class="op" title="${esc(i.opcode)}">${esc(i.opcode)}</div><div class="num" title="${i.executed?fmt(i.executed):'0'}">${i.executed?fmt(i.executed):'0'}</div><div class="num" title="${fmt(i.gpr_count)}">${fmt(i.gpr_count)}</div><div class="source-gpr-slot"></div><div>${sourceStallBar(i.stall_all,true)}</div><div>${sourceStallBar(i.stall_not_issue,true)}</div></div>`).join('');requestGprPaint(rows);$$('.source-inst-row',instBody).forEach(row=>row.onclick=()=>selectInstruction(row.dataset.id));updateStatus();if(scrollTarget){const row=scrollTarget==='related'?$('.source-inst-row.related',instBody):$(`.source-inst-row[data-id="${scrollTarget}"]`,instBody);scrollRow(instScroll,row)}};
|
|
235
|
+
const stallBreakdown=(label,m)=>{const metric=sourceStallMetric(m),parts=(metric.segments||[]).map((x,i)=>`<span style="color:${sourceStallColor(x.reason,i)}">■</span> ${esc(sourceReasonLabel(x.reason))}: ${fmt(x.count)} (${Number(x.share_percent||0).toFixed(1)}%)`).join(' · ')||'No sampled reasons';return `<div><strong>${esc(label)} ${Number(metric.percent||0).toFixed(2)}%</strong> · ${parts}</div>`};
|
|
236
|
+
const drawDetail=(i)=>{detail.classList.add('visible');const g=(i.gpr_status||[]).map(x=>`${x.register}: status=${x.status}, survival=${x.survival_time}`).join(' · ')||'No GPR status rows',relations=(i.related_lines||[]).map(x=>`${data.files.find(f=>f.id===x.file_id)?.name||x.file_id}:${x.line} [${(x.reasons||[]).join(', ')}]`).join(' · ')||'No source relation';detail.innerHTML=`<button class="source-detail-close" title="Close">×</button><div class="source-detail-grid"><div class="source-detail-item"><div class="label">Address</div><div class="value">${esc(i.address)}</div></div><div class="source-detail-item"><div class="label">Pipe / opcode</div><div class="value">${esc(i.pipe+' / '+i.opcode)}</div></div><div class="source-detail-item"><div class="label">Instructions executed</div><div class="value">${fmt(sourceExecuted(i,core()))}</div></div><div class="source-detail-item"><div class="label">GPR count</div><div class="value">${fmt(i.gpr_count)}</div></div><div class="source-detail-item" style="grid-column:1/-1"><div class="label">Source bindings</div><div class="value">${esc(relations)}</div></div><div class="source-detail-item source-stall-detail"><div class="label">Stall sampling</div><div class="value">${stallBreakdown('All Samples',i.stall_all)}${stallBreakdown('Not Issue',i.stall_not_issue)}</div></div><div class="source-detail-item source-gpr-raw"><div class="label">Raw GPR status</div><div class="value">${esc(g)}</div></div></div>`;$('.source-detail-close',detail).onclick=hideDetail};
|
|
237
|
+
fileSel.onchange=()=>{selectedLine=(getFile()?.lines||[]).find(x=>x.mapped)?.number||1;selectedInstruction=null;hideDetail();drawCode(true);drawInstructions('related')};coreSel.onchange=()=>{drawCode();drawInstructions(selectedInstruction);if(selectedInstruction)drawDetail(instById[selectedInstruction])};pipeSel.onchange=()=>drawInstructions(selectedInstruction||'related');search.oninput=()=>drawInstructions(selectedInstruction||null);only.onchange=()=>drawInstructions(selectedInstruction||'related');$$('[data-sort]',$('.source-inst-head')).forEach(h=>h.onclick=()=>{const k=h.dataset.sort;if(sortKey===k)sortDir*=-1;else{sortKey=k;sortDir=1}drawInstructions(selectedInstruction||'related')});
|
|
238
|
+
if(splitter&&layout){let dragging=false;splitter.addEventListener('pointerdown',e=>{dragging=true;layout.classList.add('resizing');splitter.classList.add('dragging');splitter.setPointerCapture(e.pointerId)});splitter.addEventListener('pointermove',e=>{if(!dragging)return;const rect=layout.getBoundingClientRect(),pct=Math.max(30,Math.min(68,(e.clientX-rect.left)/rect.width*100));layout.style.setProperty('--source-left',pct+'%');requestGprPaint()});const stop=()=>{dragging=false;layout.classList.remove('resizing');splitter.classList.remove('dragging');requestGprPaint()};splitter.addEventListener('pointerup',stop);splitter.addEventListener('pointercancel',stop);if(window.ResizeObserver){const ro=new ResizeObserver(()=>requestGprPaint());ro.observe(layout);ro.observe(instBody)}}
|
|
239
|
+
drawCode(true);drawInstructions('related')
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
function renderStall(data){if(!data?.available)return renderUnavailable(data,'Warp Stall');const max=Math.max(...data.categories.map(x=>Math.abs(x.value)||0),1),bars=card(`<div class="bar-list">${data.categories.map(x=>`<div class="bar-row"><div class="bar-label">${esc(x.name)}</div><div class="bar-track"><div class="bar-fill" style="width:${Math.abs(x.value)/max*100}%"></div></div><div class="bar-val">${fmt(x.value)}${Number.isFinite(num(x.share_percent))?` · ${Number(x.share_percent).toFixed(1)}%`:''}</div></div>`).join('')}</div>`),table=(data.pcs||[]).length?card(`<div class="scroll"><table class="pc-table"><thead><tr><th>PC</th><th>Pipe / Opcode</th><th>Source</th><th>Top Reason</th><th>Stall %</th><th>Samples</th></tr></thead><tbody>${data.pcs.map(x=>`<tr><td>${esc(x.pc)}</td><td>${esc([x.pipe,x.opcode].filter(Boolean).join(' / '))}</td><td>${esc(x.source_location||'')}</td><td>${esc(x.reason)}</td><td>${fmt(x.value)}</td><td>${fmt(x.samples)}</td></tr>`).join('')}</tbody></table></div>`):'';return `<div class="grid2">${bars}${table}</div>`}
|
|
243
|
+
function renderRaw(data){if(!data?.available)return emptyCanvas();const opts=data.tables.map((t,i)=>`<option value="${i}">${esc(t.name)}</option>`).join(''),html=`<div class="card"><div class="raw-toolbar"><select id="rawTableSelect">${opts}</select><input id="rawSearch" placeholder="Search current table"><span class="raw-meta" id="rawMeta"></span></div><div class="scroll"><table class="raw-table"><thead id="rawHead"></thead><tbody id="rawBody"></tbody></table></div></div>`;setTimeout(()=>initRaw(data),0);return html}
|
|
244
|
+
function initRaw(data){const sel=$('#rawTableSelect'),search=$('#rawSearch');if(!sel)return;let sortKey=null,sortDir=1,searchTimer=null;const cell=(r,h,i)=>Array.isArray(r)?r[i]:r[h];const draw=()=>{const t=data.tables[Number(sel.value)];let rows=[...(t.rows||[])];const q=(search.value||'').toLowerCase();if(q)rows=rows.filter(r=>Object.values(r).some(v=>String(v??'').toLowerCase().includes(q)));if(sortKey){const si=t.headers.indexOf(sortKey);rows.sort((a,b)=>{const av=cell(a,sortKey,si)??'',bv=cell(b,sortKey,si)??'',an=num(av),bn=num(bv);return((an!=null&&bn!=null)?an-bn:String(av).localeCompare(String(bv)))*sortDir})}$('#rawHead').innerHTML=`<tr>${t.headers.map(h=>`<th data-key="${esc(h)}">${esc(h)}</th>`).join('')}</tr>`;$('#rawBody').innerHTML=rows.map(r=>`<tr>${t.headers.map((h,i)=>`<td>${esc(cell(r,h,i)??'')}</td>`).join('')}</tr>`).join('');const truncated=Number(t.total_rows)>Number(t.embedded_rows);$('#rawMeta').textContent=`${rows.length} shown · ${t.total_rows} total${truncated?` · first ${t.embedded_rows} embedded`:''}`;$$('th',$('#rawHead')).forEach(th=>th.addEventListener('click',()=>{const key=th.dataset.key;if(sortKey===key)sortDir*=-1;else{sortKey=key;sortDir=1}draw()}))};sel.addEventListener('change',()=>{sortKey=null;search.value='';draw()});search.addEventListener('input',()=>{if(searchTimer)clearTimeout(searchTimer);searchTimer=setTimeout(draw,150)});draw()}
|
|
245
|
+
function renderUnavailable(data,title='Module unavailable'){const d=data?.diagnostic||{},e=Array.isArray(d.evidence)?d.evidence:[];return `<div class="unavailable-card"><h2>${esc(d.title||title)}</h2><p>${esc(d.explanation||'No semantically usable visualization payload was produced for this module.')}</p>${e.length?`<div class="unavailable-evidence">${e.map(x=>`<div>${esc(typeof x==='string'?x:JSON.stringify(x))}</div>`).join('')}</div>`:''}</div>`}
|
|
246
|
+
function renderAvailability(data){const rows=data?.requested_modules||[];return `<div class="unavailable-card"><h2>Requested modules are unavailable</h2><p>${esc(data?.message||'No requested module can be rendered.')}</p><div class="unavailable-evidence">${rows.map(x=>`<div>${esc(LABELS[x.page]||x.page)} · ${esc(x.collector_status||'unknown')} · ${esc(x.reason||'no usable payload')}</div>`).join('')}</div></div>`}
|
|
247
|
+
function renderPage(page,data){if(page==='availability')return renderAvailability(data);if(data?.available===false&&data?.diagnostic)return renderUnavailable(data,LABELS[page]||page);if(page==='details')return renderDetails(data);if(page==='roofline')return renderRoofline(data);if(page==='timeline')return renderTimeline(data,'timeline');if(page==='cache')return renderCache(data);if(page==='onchip-memory')return renderOnChipMemory(data);if(page==='source')return renderSource(data);if(page==='warp-stall')return renderStall(data);if(page==='instruction-timeline')return renderTimeline(data,'instruction');if(page==='raw-data')return renderRaw(data);return emptyCanvas()}
|
|
248
|
+
function activatePage(page){const view=$(`.view[data-page="${page}"]`);if(!view||view.dataset.rendered)return;view.dataset.rendered='1';view.innerHTML=renderPage(page,PAYLOAD.views[page])}
|
|
249
|
+
function renderApp(){const sourceOnly=PAYLOAD.pages.length===1&&PAYLOAD.pages[0]==='source';document.body.classList.toggle('source-immersive',sourceOnly);buildTabs();buildCoverage();const app=$('#app');app.innerHTML=PAYLOAD.pages.map((p,i)=>`<section class="view ${i===0?'active':''}" data-page="${p}"></section>`).join('');activatePage(PAYLOAD.pages[0])}
|
|
250
|
+
loadPayload().then(payload=>{PAYLOAD=payload;renderApp()}).catch(err=>{console.error(err);const app=document.getElementById('app');if(app)app.innerHTML=`<div class="unavailable-card"><h2>Report payload failed to load</h2><p>${String(err&&err.message||err)}</p></div>`});
|
|
251
|
+
</script>
|
|
252
|
+
</body>
|
|
253
|
+
</html>
|