en un clic
op-autoresearch
op-autoresearch contient 39 skills collectées depuis xchang1121, avec une couverture métier par dépôt et des pages de détail sur le site.
Skills dans ce dépôt
AscendC direct-invoke 崩溃/挂起修复索引:Kernel timeout、hang、Segmentation Fault、aic error、buffer 死锁、plog/memcheck 调试。
AscendC direct-invoke 精度失败修复索引:输出全 0/随机值、DataCopy 对齐、EnQue/DeQue 同步、FP16/FP32 精度、Cast RoundMode、DumpTensor 分段定位。
AscendC direct-invoke 工程契约:WA 使用 kernel.py + ascendc_op/,ModelNew 调用 torch.ops.npu.*,adapter 负责复制工程、CMake 构建和 npu-arch patch。适用于 dsl=ascendc 的 autoresearch 任务。
把注册式 AscendC 算子迁移为 direct-invoke 工程的保真原则:kernel 算法和 tiling 公式不乱改,只替换注册框架胶水、入口 ABI、host launch 与 PyTorch extension。
CATLASS TileShape 与 on-chip 缓存容量约束:L1/L0A/L0B/L0C 预算公式、fp16/fp32 Pingpong 双缓冲、512B 对齐与排布对 Tile 选型的影响。调参前必读。
CATLASS Gemm 性能调优:DispatchPolicy、Tile 与分核负载均衡、Swizzle、何时用 padding/Split-K/Preload。面向 AR 修改 catlass_kernel.asc 中的类型别名。
CPU C++ 算子核心概念、标准结构模式、KernelBench 代码规范和内嵌扩展方法
CATLASS 五层 API 与 Gemm 组装范式:Device/Kernel/Block/Tile、GemmType/GemmShape/DispatchPolicy、标准头文件与 Device 调用流程。适用于 autoresearch 任务中修改 catlass_op 内 .asc/.h 的类型别名区。
CATLASS 尾处理:MatmulEpilogue、EVG TreeVisitor、UB workspace;Add/Bias/ReLU 等融合与对应 Kernel 选型。适用于 matmul+逐元素类融合算子。
PyPTO 常见首次生成错误及正确写法
矩阵乘法矩阵乘法 A[M, K] @ B[K, N] = C[M, N]中,大K维度矩阵乘法(K>>M,N)优化:针对M/N较小但K极大(如M=N=256,K=131072)的场景,Split-K切分K维度并行化、Workspace+Reduce替代全局同步,实现显著性能提升
triton-ascend Cube/Vector 亲和写法常见问题修复:纯 matmul 误用亲和、单一 buffer 跨迭代被覆盖(WAW)、bl.alloc shape 必须 constexpr、fixpipe dst 必须是 buffer
Triton Ascend 失败后的调试定位清单和常见错误速查表。仅在验证、编译或运行失败后使用,用于帮助 Conductor 解释报错、定位根因并给出修复建议。生成期硬约束请参考 api-rules、hardware-constraints、memory、grid-config 和对应 guide。
triton-ascend 验证、编译或运行失败后的常见错误修复:UB/CBUF溢出、BiShengIR编译失败、语法限制违反、数值正确性、多维索引分解错误、张量连续性
triton-ascend 大 K 归约精度修复:Kahan 补偿求和替代简单累加,消除 NPU Cube 引擎 FP32 仿真路径与 Triton 顺序累加路径的精度差异
triton-ascend 验证失败诊断:根据 verifier 的 [precision] 行、hard/outlier 分层阈值、逐维错误分布和样例坐标判断精度、mask、索引、边界、NaN/Inf 等根因
Atlas A2 上 Triton vector 一元/二元 `tl.*`:fp32/fp16/bf16 三种 dtype 下各算子端到端 time (ms);并给出"语义等价、精度对齐"前提下应替换的 triton API 与推荐写法。
Atlas A3 上 Triton vector 一元/二元 `tl.*` :fp32/fp16/bf16 三种 dtype 下各算子端到端 time (ms);并给出"语义等价、精度对齐"前提下应替换的 triton API 与推荐写法。例如 fp32 上 `tl.exp2(x)` 比 `tl.exp(x*LN2)` 性能表现得要差,可以选择使用 `tl.exp(x*LN2)`。
Atlas A5 上 Triton vector 一元/二元 `tl.*`:fp32/fp16/bf16 三种 dtype 下各算子端到端 time (ms);并给出"语义等价、精度对齐"前提下应替换的 triton API 与推荐写法。
比较两侧本身多为 `tl.int32`(offset / attn_arg 等),`arith.cmpi` 产出的是 `i1`;多段结果在 **`i1` 张量上做 `&`/`|`** 时, lowering 会在每条逻辑附近插入 **`extui`/`trunci`** 与 `select` 对齐;**每段比较后立刻 `.to(tl.int32)`**,让整条 mask 在 **`i32` 0/1 上 `&`/`|`**,后端更易连续处理 **`vand.i32`/`vor.i32`**。
A5(Ascend950)Flash Attention 的完整 Triton-Ascend 实现示例。Cube/Vector 串行交替:Cube 跑 logits = Q·K^T 与 partial = P·V 两段 matmul + fixpipe;Vector 跑在线 softmax + flash 累加更新;通过 3 个 sync_block 事件(id 0/1/2,PIPE_FIX/V/MTE 配对)协调。可参考此代码结构生成 A5 串行 attention 类算子。
双内核调用模式的 Triton Ascend 实现示例。展示在 forward 中先后调用两个 kernel 的标准写法:中间结果缓冲区分配、两次 kernel 启动。适用于需要分阶段计算的融合算子。
LayerNorm 归约算子的完整 Triton Ascend 实现示例。展示两阶段归约模式(统计量计算 → 归一化输出)、标量累加器、分块遍历等技巧。当生成 reduce/normalize 类算子时可参考此示例的代码结构。
标准矩阵乘法的完整 Triton Ascend 实现示例。展示 2D 分块(tiling)、K 维循环累加、2D mask 处理、Cube Core 利用等关键模式。当生成 matmul 类算子时可参考此示例的代码结构。
A5(Ascend950)MatMul + Vector 后处理融合的完整 Triton-Ascend 实现示例集合。包含两个完整可运行案例:(1) MatMul + ReLU(fp16)单 kernel CV 融合;(2) Vision MLP + GELU backward —— 一个 fused-cv kernel + 三个 plain matmul kernel + 两个 pure-vector kernel 同文件混合形态。
ReLU 逐元素算子的完整 Triton Ascend 实现示例。展示向量化逐元素操作的标准模式:1D 分块遍历、mask 边界处理、交错循环。当生成 elementwise 类算子时可参考此示例的代码结构。
Softmax 归约算子的完整 Triton Ascend 实现示例。展示三阶段归约模式(求 max → 求 sum(exp) → 归一化)、分块累加、标量累加器精度提升等技巧。当生成 reduce 类算子时可参考此示例的代码结构。
MindSpore 框架下 Triton Ascend 内核的集成示例,展示 MindSpore 自定义算子注册、Primitive 定义、tensor 传入传出等标准写法。当目标框架为 mindspore 时应导入此示例作为代码结构参考。
Atlas A5 (Ascend950) 专属 Cube/Vector 协同编程接口。涵盖 Buffer Language (bl.alloc/to_buffer/to_tensor/subview) 和 Ascend Language (al.scope/fixpipe/sync_block_set/sync_block_wait/sub_vec_id/copy) 的完整用法与同步操作。适用于需要在 A5 硬件上进行 Cube 计算后交给 Vector 做后处理(如 bias/relu/softmax)的高性能内核编写场景。
Triton Ascend hard API restrictions and forbidden syntax. MUST-follow rules that apply to every kernel: forbidden control flow (return/break/continue/lambda/while), tensor slice/index restrictions, scalar conversion rules, BLOCK_SIZE upper bound. Violating any of these produces a compile or runtime error on Ascend.
Ascend 硬件约束与编译器限制速查。涵盖 CUBE/VEC 存储层级预算计算方法、bishengIR 编译器已知限制、strided access 性能特征。适用于所有 Triton Ascend 算子生成和调试场景。
Triton Ascend 编程基础,包括核心概念(program_id、block、grid)、内核函数结构、装饰器用法和标准代码模式。适用使用 Triton Ascend、需要了解基本语法结构的任意内核代码生成场景
Grid/Block 配置策略,包括核数选择、并行度调优、二次切分和大 shape 算子处理方案。适用于需要确定 kernel 启动参数、优化多核并行效率、或处理超大规模数据的内核代码生成场景
Ascend NPU 内存访问优化策略,包括 UB(统一缓冲区)利用、数据布局优化、合并访存和预取技巧。适用于内存带宽受限、需要优化数据搬运效率、或处理大规模数据的内核代码性能优化场景
Triton Ascend 性能优化通用策略: BLOCK_SIZE 选择 (1024-2048 for elementwise, must be <65536), grid configuration (use VEC_CORE_NUM / CUBE_CORE_NUM, 2D/3D grid for matmul / conv / reduce, 1D grid + inner loop for elementwise / pointwise), 256B alignment for memory transfers, autotune block-size patterns, fp16 / fp32 precision conversion. Bind via keywords like matmul, elementwise, reduce, block_size, grid, autotune, alignment, fp16, fp32, tile, interleaved-loop, cube-core, vec-core.
适用于 A5(Ascend950)注意力(attention)机制算子的串行优化指南。当算子的核心计算是 Transformer 风格的注意力运算,且目标硬件为 Ascend950 时应选择此指南。涵盖 Cube/Vector 操作、al.fixpipe/bl.alloc 数据流、串行同步机制(sync_block_set/wait)、Flash Attention 四阶段分解、P 矩阵 ND→NZ 格式转换等 A5 专用技巧。本文档给出的是 Cube/Vector 串行交替执行版本,不适用于不含注意力结构的普通矩阵乘法或归约运算。
适用于 A5(Ascend950)Cube/Vector 协同编程的 MatMul + Vector 后处理融合优化指南。当算子的核心计算是矩阵乘法后接逐元素操作(如 bias 加法、ReLU 激活、残差加、量化等)时应选择此指南。本指南采用两段式调度:一个 cube scope 整段循环 + 一个 vector scope 整段循环 + 单 buffer + 一对显式同步事件。覆盖 Cube/Vector 数据流、ROW_SPLIT 拆分、sub_vec_id 索引、显式 sync_block_set/wait 配对、plain matmul kernel 推荐写法、关键约束速查等。不适用于纯 Vector 逐元素运算、也不适用于无后处理的纯 MatMul。
适用于纯逐元素(element-wise)类算子的优化指南。当算子的核心计算是对张量每个元素独立执行相同操作、无跨元素依赖时应选择此指南,典型算子包括:relu, sigmoid, tanh, gelu, selu, leaky_relu, elu, swish, softplus, hardsigmoid, hardtanh, softsign, exp, log, sqrt, pow, add, mul, sub, div, abs, neg, clamp, cast(类型转换), where, fill, copy 等。也适用于涉及标量广播(broadcast)的运算。不适用于需要跨元素归约(如 sum/mean/max)或矩阵乘法的算子。如果算子同时包含逐元素计算和全局归约(如损失函数 MSELoss、HuberLoss、HingeLoss),应选择 elementwise-reduce-fused 指南。
适用于矩阵乘法(matmul)类算子的优化指南。当算子的核心计算涉及二维或更高维的矩阵乘法时应选择此指南,典型算子包括:matmul, mm, bmm, linear, gemm, outer_product, einsum(含矩阵乘), conv(转为矩阵乘实现)等。涵盖 Cube Core 使用、分块(tiling)策略、Swizzle 优化、大 K 维处理等关键技巧。不适用于纯逐元素运算或纯归约运算。对于 attention 机制中的 QK^T 和 score*V 矩阵乘,若算子整体是注意力计算,应优先选择 attention 指南。