
【免费下载链接】ops-sparse本项目是CANN提供的高性能稀疏矩阵计算的算子库专注于优化稀疏矩阵的计算效率。项目地址: https://gitcode.com/cann/ops-sparsename: sparse-ascendc-coding-rules description: | ops-sparse Ascend C 编码规范 MR 安全编码规则速查索引。非开发期常驻上下文作为代码提交前的自查工具按需读取。 触发时机① 2.x.2 联调前 ② 2.x.3 验收前 ③ 3.1/4.2 代码检视前 ④ reviewer 检视 MR 代码时。 详细规则内容位于 references/ 目录由调用方按需加载相关文档。Sparse Ascend C 编码规范本规则为自查清单不加载为开发期常驻上下文。仅在以下节点由 agent 按需调用调用时机适用角色调用方式2.x.1.A 算子初稿完成后developer加载本 skill按references/checklist.md自查一次2.x.2 联调前developer同上2.x.3 测试验收前developer同上 加载references/mr-rules-essential.md做 MR 合规审查CP2.x 打点前developer同上3.1 / 4.2 代码检视前reviewer加载本 skill对照references/mr-rules-essential.mdreferences/mr-rules-general.md做检视references 索引AscendC 编码规则R1-R10每条规则独立成一个 reference 文件包含错误/正确示例编号规则referenceR1禁止逐元素操作references/R1-禁止逐元素操作.mdR2动态获取 CoreNum禁止硬编码references/R2-动态获取CoreNum.mdR3TPipe 禁止作为成员变量references/R3-TPipe禁止成员变量.mdR4TilingData 禁止使用数组做核间分配references/R4-TilingData禁止数组.mdR5-R10圈复杂度/嵌套深度/函数行数/除零防御/许可证头/extern 引用references/ascendc-r5-r10.mdMR 安全编码规则按严重等级分组方便 reviewer 按优先级检视reference包含内容适用场景references/mr-rules-essential.md严重/致命级规则G.PRE.05、G.INC.、G.FUU.09/10/12/13/15、G.MEM.04、G.STD.、OAT 等 ~18 条MR 提交前必查references/mr-rules-general.md一般/建议级规则G.EXP.、G.CTL.03、G.AST.03、G.FUU.11/14、CQ.、CIP.01 等 ~17 条代码检视深度审查检查流程与修复指南reference内容适用场景references/checklist.md8 步检查流程文件级 → 头文件 → 函数级 → 表达式 → 安全函数 → 内存 → 标准库 → 冗余告警提交前系统自查references/fix-guide.md14 种常见违规的修复方法对照表发现违规后查修复方案使用示例场景 1developer 自查在 2.x.1.A 完成后调用本 skill 执行自检1. 加载 references/checklist.md按 8 步流程逐条检查代码 2. 发现 R6 嵌套深度超标 → 加载 references/ascendc-r5-r10.md 查看修复方法 3. 发现 G.FUU.09 使用了 realloc → 加载 references/mr-rules-essential.md 确认级别与修复方案 4. 修复完成后再次执行 checklist.md 直至通过场景 2reviewer 检视在 3.1 / 4.2 检视前加载1. references/mr-rules-essential.md 对照严重/致命规则做检视必须零违规 2. references/mr-rules-general.md 做深度审查建议修复 3. references/ascendc-r5-r10.md 检查代码质量指标圈复杂度/嵌套深度/行数注意本 skill 的 SKILL.md 仅作为索引与触发说明。Agent 在执行自查/检视时应直接读取相应的 references 文件获取完整规则不要在开发过程中常驻本 skill 的全部内容。代码风格命名规范类别风格示例目录名算子名snake_casespmv、spmm、sp_geam文件名snake_case{op_name}_host.cpp、{op_name}_kernel.hC 类名PascalCaseSpmmCsrMat、SpmvKernel函数/方法名PascalCase / camelCaseValidateSpMVParams、ComputeMaxRowLength常量kPascalCasekAlignBytes、kBufferCount宏UPPER_SNAKE_CASECHECK_RET、GM_ADDRTiling 结构体PascalCase TilingData 后缀SpmvTilingData、SpmmTilingData头文件保护#ifndef SPMV_TILING_DATA_H_ #define SPMV_TILING_DATA_H_ // ... #endif // SPMV_TILING_DATA_H_include 顺序// 1. C 标准库 #include cstdint #include cmath // 2. C 标准库 #include memory #include vector // 3. ACL/CANN 头文件 #include acl/acl.h #include log/log.h // 4. 算子本地头文件 #include cann_ops_sparse.h #include {op_name}.h #include {op_name}_tiling_data.h #include {op_name}_kernel.hOAT 量化指标指标阈值说明圈复杂度≤ 20每个函数函数深度≤ 5嵌套层级NBNC (Non-Blank Non-Comment lines)≤ 50有效代码行除零风险0不允许无保护的除法extern 引用告警0所有 extern 声明必须在头文件中OAT 自检 Checklist开发交付时必须附上各函数的圈复杂度函数深度有效代码行数除零校验说明extern 引用检查稀疏算子特有约束描述符操作按 API 体系通用规则两种 API 体系适用所有new操作必须使用std::nothrownullptr 检查必须在所有公开 API 入口处完成Generic API使用 SpMatDescr/DnVecDescr/DnMatDescrconst 描述符的const_cast必须在ToMatInner/ToVecInner/ToDnMatInner等统一函数中完成禁止在业务代码中直接 cast描述符的 Create 必须完整初始化所有字段format、rows、cols、nnz、ptrs、idxs、values、baseType、ptrType、IdxType、valueTypeDestroy 必须安全处理 nullptrLegacy API使用扁平参数 可选 MatDescrMatDescr若接口使用必须 Create/Destroy 配对MatDescr 的 getteraclsparseGetMatType/aclsparseGetMatIndexBase等在 Host 侧调用禁止自行存储冗余字段同一算子的多精度版本S/D 函数需按精度前缀分别命名禁止共享实现避免精度丢失扁平数据指针校验 nullptr每个指针独立校验不能批量索引运算行偏移数组长度为rows 1必须校验一致性nnz 必须与值数组/列索引数组的实际长度匹配索引基址0-based/1-based处理逻辑必须显式标注数据指针Device 指针使用GM_ADDRuint8_t *传递Host 指针使用const void *alpha/beta 标量仅 Generic 使用不允许在 Kernel 侧直接访问 Host 内存License Header所有源文件必须包含标准 License Header/** * ---------------------------------------------------------------------------------------------------------- * Copyright (c) 2026 Huawei Technologies Co., Ltd. * This program is free software, you can redistribute it and/or modify it under the terms and conditions of * CANN Open Software License Agreement Version 2.0 (the License). * Please refer to the License for details. You may not use this file except in compliance with the License. * THIS SOFTWARE IS PROVIDED ON AN AS IS BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. * See LICENSE in the root of the software repository for the full text of the License. * ---------------------------------------------------------------------------------------------------------- */【免费下载链接】ops-sparse本项目是CANN提供的高性能稀疏矩阵计算的算子库专注于优化稀疏矩阵的计算效率。项目地址: https://gitcode.com/cann/ops-sparse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考