/label add good-first-issue


/label add triage-review


认领这个任务


认领这个任务


认领这个任务


认领这个任务
欢迎认领任务,请参考https://gitcode.com/Ascend/MindSpeed-Ops/issues/3 社区任务池明确该任务的:
- 完成的截止日期
- 开发进展反馈
- 微信答疑群
- 任务交付注意事项
等信息。如果您同时认领了多项任务,但无法都能进行投入,可以在部分任务中回复退出.
麻烦您加入到对应微信群,群备注名修改为"社区任务+您的gitcode账号", 后续有相关消息和问题都可以在微信群咨询答疑。 等您加入到微信群后,我这边会在社区任务池里面登记任务责任人。






认领该任务


mamba3_siso_fwd_kernel:Triton 算子 NPU 迁移实践与交付
交付 MR:Ascend/MindSpeed-Ops !194 — head b6098f764358c9734f5acae34e74b14c052d1c76,base master;当前 open,等待评审与合入。该 MR 携带本轮最新复现的源码与证据;此前的 !83 为较早 head,不含本轮精度修复。
交付内容(10 个文件)
- 生产源码:
mindspeed_ops/api/triton/mamba3_siso_fwd_kernel.py、mindspeed_ops/arch32/triton/mamba3/{mamba3_siso_fwd_impl.py, mamba3_siso_fwd_kernels.py, mamba3_utils.py} - 仓内 UT:
tests/unit_tests/triton/{test_mamba3_siso_fwd_kernel.py, mamba3_siso_fwd_kernel_reference.py} - ATK:
tests/atk_tests/triton/mamba3_siso_fwd_kernel/{mamba3_siso_fwd_kernel.yaml, generate_mamba3_siso_fwd_kernel.py, triton_mamba3_siso_fwd_kernel.py} - 文档:
docs/triton/mamba3_siso_fwd_kernel.md
1. 算子介绍
mamba3_siso_fwd_kernel 实现 Mamba3 SISO dense、non-varlen forward 的主输出路径:对 Q/K 加 bias 并做 rotary 变换,由 adt 构造 chunk 内衰减,完成 QK-V 因果累积与跨 chunk 状态递推,并叠加可选 D skip 与 Z SiLU gating。
接口(详见 MR 内文档):
mamba3_siso_fwd_kernel(q, k, v, adt, dt, trap, q_bias, k_bias, angles,
d=None, z=None, chunk_size=64) -> out # out: [B, S, H, V]
输入:q/k: [B,S,Hq,K]、v: [B,S,H,V]、adt/dt/trap: [B,H,S]、q_bias/k_bias: [H,K]、angles: [B,S,H,A](A <= K/2 且偶数)、d: [H]、z: [B,S,H,V];Q/K/V/Z 支持 fp16 与 bf16,数值参数为 fp32;chunk_size ∈ {32, 64};要求 H % Hq == 0。
生产 dispatch(只依赖运行时 shape/dtype/属性,无 fallback):
| 条件 | 生产路径 | 目的 |
|---|---|---|
单 chunk、K <= 64、float16 |
mamba3_siso_fwd_single_chunk_kernel |
一个 kernel 内完成 rotary、衰减、因果 QK-V、skip/gating 与写回 |
| 其它合法 dense arch32 输入 | mamba3_siso_fwd_kernel + INLINE_PREPROCESS |
预处理与主 recurrence 合并进一次主 launch,覆盖 multi-chunk、GQA、bf16 与大 head dim |
arch35 未提供实现,调用时明确抛 NotImplementedError,不会切到 Torch/CPU/供应商整算子或其它后端。
2. 迁移要点(对比原 Triton 实现)
原 Triton 实现把 forward 拆为 scale / preprocess / q_rotary / k_rotary_scale / 主 recurrence 等阶段。本 PR 保留相同数学语义,并做以下 Ascend 适配与优化:
- 将 CUDA/PTX 近似指令替换为 Triton JIT 内可编译的 sin/cos 多项式。
- 对 single-chunk 常见路径新增全融合 kernel,减少中间张量与 launch。
- 通用 dense 路径启用
INLINE_PREPROCESS,避免原 split 路径的多次预处理 launch。 - 将 QK 点积改为显式逐行 reduction,降低矩阵乘 ones 带来的片上资源压力。
- descriptor allocator 使用普通加速器内存分配,不依赖 NVIDIA TMA 的 alignment 约束;输入契约使用显式异常,不依赖可被优化模式移除的
assert。
原 split Triton 实现仅作为迁移来源,不复制进提交目录;生产 API 不导入测试代码。
3. 测试方法
环境:CANN 9.0.0 + Triton-Ascend;设备:本机物理 NPU 1(npu-smi 报告 Ascend910)。
# 仓内 UT
pip install -e .
pytest -q tests/unit_tests/triton/test_mamba3_siso_fwd_kernel.py
# ATK(26.9.24):生成用例后分别跑 accuracy / performance_device / memory_device
4. 结果(绑定 head b6098f76...)
- UT:
15 passed, 1 warning。覆盖 fp16/bf16 × 多组 shape/chunk_size、非连续输入、非法chunk_size(非 int / bool / 非 32|64)、未请求 final states 不物化、allocator 对齐。精度基线是 UT-only 的 Torch 参考实现分别在 CPU 与 NPU 上执行(同一数学参考的两个设备实例,不是两个独立参考)。 - ATK
accuracy:20/20 通过(Total Task: 20, success 20, failed 0,acc_pass_result: Pass);判据为仓库 ATK 标准single_bm(type: high_precision,fp16 误差阈值2^-11、bf162^-8)。 - ATK
performance_device:20/20 通过(device 性能通过率100.0%,平均device性能比 59.3918,device性能是否达标: Pass)。该比值为 ATK 报告列npu_0_Device性能 / triton_0_Device性能,即基线(ATKnpubackend 上的 Torch 参考实现)设备耗时 ÷ 候选(tritonbackend)设备耗时,单位x,为 20 例算术平均。 - ATK
memory_device:20/20 通过(is_device_memory_pass: Pass)。 - 性能口径说明:ATK 性能基线是 NPU 上的 Torch 参考实现。任务书要求的“对比原 triton 算子提升 20%”若指上游 Triton 源码在 NPU 上的实现,本算子的本地 NPU-相对 active-window 实测为 geomean
12.40x、最小6.04x、20/20 ≥1.2x;若指 CUDA 上的原 Triton 计时,则需 GPU 侧基准,请确认期望口径。
5. 已知边界
- 仅交付
arch32;arch35明确报不支持。 - 公开 API 不覆盖 varlen、初始状态、state-return 与 backward 路径。
- ATK 精度门全部通过。当输出量级接近 0(约
1e-9)时结果由 fp32 舍入主导,属该数值区间的固有精度地板;ATK 未对该区间单独设门,如需覆盖请确认判据。 - 生成的 ATK 结果、日志、缓存与 profiler 目录不进入 MR diff。


mamba3_siso_fwd_kernel:Triton 算子 NPU 迁移实践与交付(issue 提交)
交付 MR:Ascend/MindSpeed-Ops !196 — head d261a24c0631bb85bc426da4905175c226e122eb,base master;当前 open,等待评审与合入。
交付内容:生产源码(mindspeed_ops/api/triton/、mindspeed_ops/arch32/triton/)+ 仓内 UT(tests/unit_tests/triton/)+ ATK 三件套(tests/atk_tests/triton/)+ 文档(docs/triton/mamba3_siso_fwd_kernel.md)。
验收证据(四项)
已在远端 head d261a24c0631bb85bc426da4905175c226e122eb(本 MR 当前 head,与复验工作树逐字节一致)上逐项复验,证据如下。
(1)ATK 通过截图

ATK 26.9.24,物理 NPU 1(Ascend910_9382),20 例:
| 检查 | 结果 |
|---|---|
| accuracy | 20/20 success,failed 0,acc_pass_result: Pass |
| performance_device | 20/20 success,device 通过率 100.0%,平均 device 性能比 59.3918x,is_device_perf_pass: Pass |
| memory_device | 20/20 success,内存通过率 100.0%,is_device_memory_pass: Pass |
ATK 三项(accuracy / performance_device / memory_device)在本 head 上全部通过;ATK 不在合并流水线门禁内(流水线只跑仓库原生 UT),此处作为附加验收证据。
(2)UT 通过截图

仓库原生 tests/unit_tests/triton/test_mamba3_siso_fwd_kernel.py:15 passed, 1 warning in 12.92s(物理 NPU 1,torch_npu 先于 triton 导入;即仓库 CI stage3 的合并门禁)。
(3)NPU 与 GPU 性能对比达标数据
口径:同一评测记录、同一窗口背靠背;任务书“相对原 Triton 算子提升 20%”的判据分母是 NPU 侧 triton_ascend_reference。
- 窗口:候选
eval_20260929_024106,参考刷新eval_20260929_024106 (same record, back-to-back)(warmup 3 / repeat 5)。 - geomean(原 triton(NPU) / 候选) = 12.4032,min = 6.0442,≥1.2 覆盖 20/20。
- 与 GPU(H100
triton_cuda_reference) 的绝对对照:geomean(候选 / H100) = 2.3461(候选比 H100 慢约 2.3×,为 NPU/H100 硬件代差,不是任务书判据)。
| case | 候选 NPU (us) | 原 triton (NPU, us) | 比值(原/候选) | ≥1.2 | H100 triton (us) | 候选/H100 |
|---|---|---|---|---|---|---|
| 1 | 13.26 | 558.29 | 42.1033 | yes | 8.51 | 1.5582 |
| 2 | 28.46 | 569.79 | 20.0207 | yes | 12.74 | 2.2339 |
| 3 | 33.92 | 1309.15 | 38.5952 | yes | 11.33 | 2.9938 |
| 4 | 31.44 | 597.13 | 18.9927 | yes | 15.94 | 1.9724 |
| 5 | 60.04 | 604.33 | 10.0655 | yes | 21.73 | 2.7630 |
| 6 | 84.06 | 620.83 | 7.3856 | yes | 40.22 | 2.0900 |
| 7 | 63.16 | 647.57 | 10.2528 | yes | 27.39 | 2.3060 |
| 8 | 116.88 | 706.45 | 6.0442 | yes | 49.92 | 2.3413 |
| 9 | 31.50 | 660.73 | 20.9756 | yes | 17.12 | 1.8400 |
| 10 | 47.88 | 684.55 | 14.2972 | yes | 22.24 | 2.1529 |
| 11 | 63.32 | 634.45 | 10.0197 | yes | 31.39 | 2.0172 |
| 12 | 50.62 | 593.37 | 11.7220 | yes | 22.05 | 2.2957 |
| 13 | 78.00 | 653.07 | 8.3727 | yes | 22.91 | 3.4046 |
| 14 | 45.80 | 651.33 | 14.2212 | yes | 12.35 | 3.7085 |
| 15 | 109.86 | 808.84 | 7.3625 | yes | 48.99 | 2.2425 |
| 16 | 109.38 | 804.86 | 7.3584 | yes | 40.03 | 2.7325 |
| 17 | 64.80 | 671.43 | 10.3616 | yes | 42.08 | 1.5399 |
| 18 | 109.86 | 759.83 | 6.9163 | yes | 41.34 | 2.6575 |
| 19 | 46.34 | 768.21 | 16.5777 | yes | 14.91 | 3.1080 |
| 20 | 87.70 | 847.38 | 9.6623 | yes | 39.74 | 2.2068 |
(4)精度对齐
以 fp64 CPU golden(torch) 为共同高精度基准(独立于 NPU 与 GPU 两条执行路径):
- NPU 候选(本 MR 算子):19/20 通过;唯一未过为 case 16 的单个 bf16 元素(
normal_mismatch_count=0,该 case 的max_diff= 1.9073486e-6;20 例中 NPU 侧最大max_diff为 3.0517578e-5,出现在通过用例 case 12),判定为 framework fp32 累积地板(见 steward 判定文档,非候选缺陷、未放宽容差)。 - GPU(H100) triton 参考:
max_diff最大 1.2207031e-4(case 9)、mere=0、normal_mismatch_count=0,20/20 仅被 special-domain(相消)判据标记(special_domain_fail),无正常值失配。 - 结论:NPU triton 与 GPU triton 相对同一 fp64 golden 的绝对误差同量级(NPU ≤3.05e-5、GPU ≤1.22e-4);两侧都只被 special-domain 判据标记,
normal_mismatch_count=0。 - 逐 case 相对该 golden 的
max_diff/mere/判定(下表):NPU 候选与 GPU triton 对同一高精度基准的误差同量级。 - 另:ATK
accuracy(NPU 候选 vs 独立 NPU torch 小算子参考)20/20 Pass。
| case | NPU 候选 max_diff | NPU mere | GPU(H100) triton max_diff | GPU mere | NPU 判定 | GPU 判定 |
|---|---|---|---|---|---|---|
| 1 | 0.0 | 0.000e+00 | 3.814697265625e-06 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 2 | 0.0 | 0.000e+00 | 7.62939453125e-06 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 3 | 3.814697265625e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 4 | 2.384185791015625e-07 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 5 | 7.62939453125e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 6 | 7.62939453125e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 7 | 7.62939453125e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 8 | 7.62939453125e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 9 | 0.0 | 0.000e+00 | 0.0001220703125 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 10 | 9.5367431640625e-07 | 0.000e+00 | 0.0001220703125 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 11 | 0.0 | 0.000e+00 | 0.0001220703125 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 12 | 3.0517578125e-05 | 0.000e+00 | 0.0001220703125 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 13 | 3.814697265625e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 14 | 1.9073486328125e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 15 | 1.52587890625e-05 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 16 | 1.9073486328125e-06 | 0.000e+00 | 0.0001220703125 | 0.000e+00 | special_domain_fail | special_domain_fail |
| 17 | 3.814697265625e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 18 | 3.814697265625e-06 | 0.000e+00 | 0.0001220703125 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 19 | 1.1920928955078125e-07 | 0.000e+00 | 7.62939453125e-06 | 0.000e+00 | domain_aware_pass | special_domain_fail |
| 20 | 3.814697265625e-06 | 0.000e+00 | 1.52587890625e-05 | 0.000e+00 | domain_aware_pass | special_domain_fail |
证据:截图存放在提交者 fork 的独立 evidence/pr196-mamba3-siso-fwd-atk 分支(commit e690ca58705140d963343d772bf914e0fb260e8b),不属于本 PR 的源码分支与交付文件 diff;ATK/UT 生成物与日志未提交到算子目录。
实践文档(PR 内 docs/triton/mamba3_siso_fwd_kernel.md 全文)
mamba3_siso_fwd_kernel 算子
概述
mamba3_siso_fwd_kernel 实现 Mamba3 SISO dense、non-varlen forward 的主输出路径。
算子对 Q/K 应用 bias 和 rotary 变换,根据 adt 构造 chunk 内衰减,完成
QK-V 因果累积与跨 chunk 状态递推,并可叠加 D skip 和 Z SiLU gating。
当前实现面向 arch32 NPU,使用 Triton-Ascend kernel。arch35 暂未提供
实现,调用时会明确抛出 NotImplementedError,不会切换到 Torch、CPU、
供应商整算子或其它后端。
模型接口
def mamba3_siso_fwd_kernel(
q: torch.Tensor,
k: torch.Tensor,
v: torch.Tensor,
adt: torch.Tensor,
dt: torch.Tensor,
trap: torch.Tensor,
q_bias: torch.Tensor,
k_bias: torch.Tensor,
angles: torch.Tensor,
d: torch.Tensor | None = None,
z: torch.Tensor | None = None,
chunk_size: int = 64,
) -> torch.Tensor:
"""Return the dense Mamba3 SISO forward output."""
输入说明
记 B 为 batch size,S 为 sequence length,Hq 为 Q/K head 数,H 为
输出 head 数,K 和 V 为两个 head dimension。H 必须能被 Hq 整除。
| 参数 | 类型 | 描述 | 本 PR 验证的数据类型 |
|---|---|---|---|
q |
torch.Tensor |
shape [B, S, Hq, K] |
float16、bfloat16 |
k |
torch.Tensor |
shape 与 q 相同 |
与 q 相同 |
v |
torch.Tensor |
shape [B, S, H, V] |
float16、bfloat16 |
adt |
torch.Tensor |
对数衰减,shape [B, H, S] |
float32 |
dt |
torch.Tensor |
时间步参数,shape [B, H, S] |
float32 |
trap |
torch.Tensor |
gate 参数,shape [B, H, S] |
float32 |
q_bias |
torch.Tensor |
Q bias,shape [H, K] |
与 q 相同 |
k_bias |
torch.Tensor |
K bias,shape [H, K] |
与 k 相同 |
angles |
torch.Tensor |
rotary angle,shape [B, S, H, A],A <= K/2 且为偶数 |
float32 |
d |
Optional[torch.Tensor] |
可选 skip 权重,shape [H] |
float32 |
z |
Optional[torch.Tensor] |
可选 SiLU gating,shape [B, S, H, V] |
与 v 相同 |
chunk_size |
int |
序列分块大小 | 32、64 |
公开 API 通过仓内 input_guard 整理连续布局。生产 wrapper 显式检查 shape
代数、head 整除关系、rotary dimension 和 chunk_size;非法输入直接报错。
输出说明
| 输出 | shape | 描述 | 数据类型 |
|---|---|---|---|
out |
[B, S, H, V] |
Mamba3 SISO dense forward 主输出 | 与 v 相同 |
实现原理
计算分为以下逻辑阶段:
- 对 Q/K 加 bias,使用
angles完成 rotary 变换。 - 由
dt和sigmoid(trap)计算gamma、相邻 token scale 和 QK skip 项。 - 在每个 chunk 内构造严格因果 QK score,并乘以
adt推导的衰减。 - 用上一 chunk 的状态贡献、chunk 内 QK-V 贡献和可选
Dskip 生成输出。 - 若传入
z,在同一生产路径中执行 SiLU gating;随后更新跨 chunk 状态。
生产调度只依赖运行时 shape、dtype、chunk_size 和是否启用可选输入:
| 条件 | 生产路径 | 目的 |
|---|---|---|
单 chunk、K <= 64、float16 |
mamba3_siso_fwd_single_chunk_kernel |
在一个 kernel 内完成 rotary、衰减、因果 QK-V、skip/gating 和输出写回 |
| 其它合法 dense arch32 输入 | mamba3_siso_fwd_kernel + INLINE_PREPROCESS |
将预处理和主 recurrence 合并到一次主 launch,覆盖 multi-chunk、GQA、bf16 和较大 head dimension |
当 K=128 且请求 chunk_size=64 时,wrapper 使用内部 32-token kernel tile
控制片上资源;该 tile 是实现细节,不改变公开输出 shape 或序列语义。所有
tail load/store 都按实际 S、K、V mask。
迁移要点
原始迁移实现将 forward 拆为以下 Triton 阶段:
mamba3_siso_fwd_scale_kernel生成 scale/gamma;mamba3_siso_fwd_preprocess_kernel生成 Q/K/QK 中间量;mamba3_siso_fwd_q_rotary_kernel和
mamba3_siso_fwd_k_rotary_scale_kernel分别处理 Q/K rotary;mamba3_siso_fwd_kernel完成主 recurrence。
本 PR 的 candidate 保留相同数学语义,并做以下 Ascend 适配与优化:
- 将 CUDA/PTX 近似指令替换为 Triton JIT 内可编译的 sin/cos 多项式。
- 对 single-chunk 常见路径新增全融合 kernel,减少中间张量和 launch。
- 对通用 dense 路径启用
INLINE_PREPROCESS,避免原 split 路径的多次预处理 launch。 - 将 QK 点积改为显式逐行 reduction,降低矩阵乘 ones 带来的片上资源压力。
- descriptor allocator 使用普通加速器内存分配,不依赖 NVIDIA TMA 的 alignment
约束;输入契约使用显式异常,不依赖可被优化模式移除的assert。
原 split Triton 实现作为迁移来源,不复制到提交目录;生产 API 不导入测试代码。
使用示例
import torch
from mindspeed_ops.api.triton.mamba3_siso_fwd_kernel import mamba3_siso_fwd_kernel
B, S, Hq, H, K, V = 1, 128, 2, 4, 64, 96
q = torch.randn((B, S, Hq, K), device="npu", dtype=torch.float16)
k = torch.randn_like(q)
v = torch.randn((B, S, H, V), device="npu", dtype=torch.float16)
adt = -torch.rand((B, H, S), device="npu", dtype=torch.float32) * 0.08
dt = torch.randn((B, H, S), device="npu", dtype=torch.float32) * 0.05
trap = torch.randn((B, H, S), device="npu", dtype=torch.float32)
q_bias = torch.randn((H, K), device="npu", dtype=torch.float16) * 0.05
k_bias = torch.randn_like(q_bias)
angles = torch.rand((B, S, H, K // 2), device="npu", dtype=torch.float32) * 0.25
d = torch.rand((H,), device="npu", dtype=torch.float32) * 0.2
z = torch.randn((B, S, H, V), device="npu", dtype=torch.float16)
out = mamba3_siso_fwd_kernel(
q, k, v, adt, dt, trap, q_bias, k_bias, angles, d, z, chunk_size=64
)
print(out.shape)
适用场景
适用于 Mamba3 SISO dense、non-varlen、无初始状态、只返回主输出的 forward
路径,支持不同 batch、sequence、head、head dimension 以及序列尾 chunk。
注意事项
- 当前生产交付仅支持
arch32;arch35明确报不支持。 - 当前公开 API 不覆盖 varlen、初始状态、state-return 或 backward 路径。
chunk_size仅支持32和64,H必须能被Hq整除。- UT/ATK 中的 Torch 和原 Triton 实现只用于测试;生产路径不导入测试代码,
不存在 Torch、CPU、供应商整算子、reference 或其它后端 fallback。


说明:上一条 192669818(作者 chongweiliu)是同一实践文档在 lcw 面的投递,其引用的 MR !194 已关闭、由 !196 取代;本条 192754987 是按账本账号的正式提交(MR !196、head d261a24c…),含四项验收证据与完整文档,请以本条为准。


说明:上一条
192669818(作者chongweiliu)是同一实践文档在 lcw 面的投递,其引用的 MR !194 已关闭、由 !196 取代;本条192754987是按账本账号的正式提交(MR !196、headd261a24c…),含四项验收证据与完整文档,请以本条为准。
开发者你好,请在issue中及时更新相关pr链接,并及时在任务广场中提交任务进展。


任务描述
基于state-spaces/mamba开源仓库的triton源码,迁移优化triton算子在NPU上跑通及性能优化。
本期任务的具体信息如下:
(1)算子名称:mamba3_siso_fwd_kernel
(2)state-spaces/mamba开放仓库的算子源码链接:
https://github.com/state-spaces/mamba/blob/main/mamba_ssm/ops/triton/mamba3/mamba3_siso_fwd.py
(3) 迁移指导文档:https://gitcode.com/Ascend/triton-ascend/blob/main/docs/zh/programming_guide.md
参考 skill 地址:https://gitcode.com/Ascend/agent-skills/tree/master/skills/simple-vector-triton-gpu-to-npu
(4) 开发平台:Atlas 800T A2或者A3
验收标准
一、任务交付件
本期任务为基于state-spaces/mamba开放仓库代码进行功能扩展,请合入开发代码。主要开发点如下:
(1) triton算子针对NPU的适配修改优化后的代码
(2) 针对该triton算子的测试用例UT
二、验收标准:
1)精度/性能要求
精度:
对比GPU相同输入算子精度误差小于0.1%
若无GPU标杆,与CPU小算子对齐,精度误差小于0.1%
性能:
补充说明:具体性能对比数据呈现,按 CV类算子达到0.7x竞品, VV类算子达到0.9x竞品
以下以竞品A100为例说明计算具体的性能对比要求:
910B2 VS A100
计算式子:以CV类算子的Cube算力bound场景为例:1.13 * 0.7 =0.8
2)实践文档:
triton算子介绍1篇
3)任务完成标准
本次任务完成标准为:
精度/性能(根据实际要求)达标,PR完成合入,实践文档提交到仓库issue。
PR 合入
本地完成测试验证后,向MindSpeed-Ops的master分支发起PR。
对接人
LinSHua
欢迎加入社区,感谢您对社区的贡献 🎉!