What problem does it solve? Writing high-performance AscendC kernels for Ascend NPUs requires exploring many optimization strategies, and a single attempt rarely finds the best implementation. This Skill automates multi-round evolutionary optimization by spawning parallel kernel variants with different strategies, evaluating each on real NPU hardware, and selecting the fastest correct implementation. ## Core Features & Use Cases - Two Starting Modes: Begin from a natural-language operator description (generating op description, PyTorch reference, functional API, and CMake project) or from an existing baseline AscendC kernel whose interface is preserved while internals are optimized. - Parallel Evolution Rounds: Launches multiple cake-partial subagents in the same message per round, each applying strategy patterns (double buffering, adaptive tiling, FP32 intermediate computation, etc.) drawn from a strategy index distilled from 43 production operators. - Automated Evaluation and Selection: Compiles, installs, and benchmarks every variant via the eval_op.sh pipeline, classifies results into good/medium/poor tiers by speedup, feeds top implementations back as inspiration for the next round, and stops when the target speedup or max rounds is reached. - Use Case: Given a BatchMatmulMaxSum operator spec, run 2 rounds with 3 parallel variants each to evolve a fused Cube+Vector kernel that beats the baseline by the target speedup, with full per-round reports saved under the output directory. ## Quick Start Ask the assistant to evolve an optimized AscendC kernel for your operator, providing either a natural-language operator description or the path to an existing baseline kernel project, plus the desired max rounds, parallel count, and target speedup.