What problem does it solve? Writing Ascend C kernels for Ascend NPUs involves many API pitfalls: misaligned DataCopy causing out-of-bounds access, repeatTime overflow past 255, missing EnQue/DeQue synchronization, FP16 precision loss, and banned APIs like GlobalTensor::SetValue. This Skill provides the correct usage patterns, parameter limits, and blacklists so kernel code compiles and runs correctly the first time. ## Core Features & Use Cases - API Category Guides: Detailed references for arithmetic (Adds/Muls), reduction (ReduceMax/ReduceSum, AR/RA patterns), data movement (DataCopy/DataCopyPad), buffer management (TBuf/TQue, Double Buffer), precision conversion (Cast RoundMode), pipeline synchronization (EnQue/DeQue), transpose (TransDataTo5HD + Gather), and host runtime initialization. - Blacklist & Anti-Patterns: Explicitly forbidden APIs (SetValue/GetValue in production, non-aligned DataCopy) and performance anti-patterns (per-element GM access, identity casts, redundant SetFlag/WaitFlag) with recommended replacements. - Constraint Reference: Hard limits such as repeatTime ≤ 255, Compare 256-byte alignment, DataCopyPad blockCount ≤ 4095, UB 32-byte alignment, and Reduce dst 8-byte alignment, each with fix strategies. - Use Case: While writing a Softmax kernel, you hit wrong results with cols=5. The Skill tells you to use DataCopyPad for both CopyIn and CopyOut, use rLengthAlign for UB row offsets but rLength for Reduce counts, and replace Duplicate+Div with Muls(1/sum). ## Quick Start Ask the assistant to check the correct usage and restrictions of an Ascend C API, for example how to handle non-aligned data movement or why a Reduce call returns wrong results.