ge-dynamic-shape-diagnose

Diagnose Ascend GE dynamic shape scheduling triggers from ge_compiler log keywords.

Updated Sep 15, 2026
One-click install
npx skills add https://github.com/WangWindow/CANN-BatchMatMulMaxsum --skill ge-dynamic-shape-diagnose-wangwindow
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ge-dynamic-shape-diagnose
Source: https://github.com/WangWindow/CANN-BatchMatMulMaxsum/tree/main/.agents/skills/ge-dynamic-shape-diagnose
Command: npx skills add https://github.com/WangWindow/CANN-BatchMatMulMaxsum --skill ge-dynamic-shape-diagnose-wangwindow

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? When an Ascend model compiled with atc runs slower than expected, the graph may have been marked as an unknown graph and forced into dynamic shape scheduling. This Skill locates the root-cause scenario and root-cause operator behind dynamic scheduling by grepping ge_compiler logs, instead of guessing from model structure. ## Core Features & Use Cases - Three-step diagnosis workflow: Confirm dynamic scheduling occurred, locate the root-cause scenario across GE judgment, GE setting, FE setting, and graph-level categories, then optionally pinpoint the root-cause operator via InferShape logs. - Scenario reference tables: Covers Shape unknown without no-tiling support, HostCpu engine operators, TilingDepend, address refresh, DT_STRING, HCCL operator limits, DVPP, ACLNN, and graph-level causes, each with log keywords and solutions. - Evidence-based reporting: Requires pasting the exact matched log lines and forbids asserting a root cause without log evidence, including an honest fallback when the FE sub-scenario cannot be identified. - Use Case: A user compiles a BERT model and sees marked force unknown node forcibly in ge_compiler.log; the Skill traces the FE keyword DT_STRING and recommends converting the operator to INT32. ## Quick Start Analyze my ge_compiler.log to find why my model was marked as an unknown graph and identify the root-cause scenario and operator.

Frequently Asked Questions about ge-dynamic-shape-diagnose

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find why my Ascend model triggers dynamic shape scheduling?

Grep ge_compiler.log for SetGraphUnknownFlag to confirm dynamic scheduling, then search keywords in order: GE judgment (cannot support no tiling, host engine), GE setting (force unknown as dynamic tilingDependent), and FE setting (marked force unknown node forcibly). The first matched layer gives the root-cause scenario.

What log keywords indicate an unknown graph in ge_compiler logs?

Key markers include SetGraphUnknownFlag, mark graph as unknown, cannot support no tiling, unknown as host engine, force unknown as dynamic tilingDependent, and marked force unknown node forcibly. Graph-level cases show do not need dynamic shape partition.

How do I locate the root-cause operator for dynamic shape?

Enable full logging with ASCEND_SLOG_PRINT_TO_STDOUT=1 and atc --log=info, then grep for before_infer and after_infer records. The first operator whose output shape changes from fixed values to -1 or -2 is the root cause; downstream operators are only cascaded marks.

Why does a DT_STRING operator force dynamic scheduling?

FE marks operators with DT_STRING inputs or outputs as force unknown because the type cannot be statically compiled. The log shows data_type is DT_STRING with _force_unknown_shape set; the fix is converting to a statically compilable type such as INT32.

Can dynamic scheduling be diagnosed without ge_compiler logs?

No. Log evidence is the only valid criterion; model structure or symptoms alone cannot establish a root cause. Collect logs at atc --log=info level or higher before running the keyword searches.

What are the limitations of log-keyword-based dynamic shape diagnosis?

If the FE master switch is hit but no FE sub-scenario keyword matches, the specific scenario cannot be determined and more detailed logs must be collected. Original-model dynamic shapes have no log keyword and require inspecting the model in Netron.