ops-transformer_8242:基于 CANN 的 transformer 类大模型进阶算子库项目

本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。

分支11Tags7
文件最后提交记录最后更新时间
添加 sub_pipline_support.yaml 工作流配置 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !5072 merge master into master 添加 sub_pipline_support.yaml 工作流配置 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 添加 sub_pipline_support.yaml 工作流配置 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2314 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!507221 天前
通过gitmodules引入third_party/catlass Co-authored-by: longjihui<longjihui@huawei.com> # message auto-generated for no-merge-commit merge: !1765 merge master into master 通过gitmodules引入third_party/catlass Created-by: longjihui Commit-by: longjihui Merged-by: cann-robot Description: ## 描述 新增.gitmodules文件,引入第三方库catlass,分支为v1.3.1-notla ## 关联的Issue 不涉及 ## 测试 仅引入三方仓,使用方式暂不确定,无需测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:新引入三方仓catlass See merge request: cann/ops-transformer!17651 个月前
GatherPaKvCache支持非连续 Co-authored-by: BIGWHITETEETH<jingruiyang@huawei.com> # message auto-generated for no-merge-commit merge: !5502 merge master into master GatherPaKvCache支持非连续 Created-by: BIGWHITETEETH Commit-by: BIGWHITETEETH Merged-by: cann-robot Description: ## 描述 支持keyCache/valueCache的blockNum、blockSize、N三根轴非连续,以及key/value输出的B、S轴非连续。NZ格式支持D轴前面维度非连续。 ## 关联的Issue [2786](https://gitcode.com/cann/ops-transformer/issues/2786) ## 测试 已经过冒烟和自测 ## 文档更新 更新了aclnnGatherPaKvCache.md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!55023 天前
解除对ascend环境下面的op_common的依赖 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !2216 merge test_ut_task into master 解除对ascend环境下面的op_common的依赖 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!22166 天前
补充动态图fallback符号索引逻辑 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !6094 merge fix into master 补充动态图fallback符号索引逻辑 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 描述 补充GE动态图 fallback回调时寻找符号逻辑,之前遗漏了libopapi_transformer.so ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2760 # 代码检视报告 **项目名称**:ops-transformer PR#6094 检视报告 **检视模块**:common/include/fallback/fallback.h(完整绝对路径:/mnt/workspace/gitCode/gitcode_lijd/ops-transformer/common/include/fallback/fallback.h) **检视人**:Turing Team (AI Code Review) **检视日期**:2026-05-29 **检视模式**:PR 检视(变更范围仅覆盖 diff 部分) **代码侧别**:Host 侧(Tiling 侧) ## 🔍 检视概览 | 统计项 | 数值 | | ---- | ---- | | 检视条款总数 | 11 条 | | 通过条款 | 8 条 | | 需关注条款 | 2 条 | | 发现问题条款 | 0 条 | | 预存在问题(非PR引入) | 2 条 | **核心结论**:本次 PR 变更(补充动态图 fallback 符号索引逻辑)代码质量良好,新增代码严格遵循已有代码模式,空指针保护充分,LOG API 参数匹配正确。存在 2 处"需关注"级别问题(均为预存在模式的延续,非本次 PR 引入):dlopen 资源未显式释放、搜索链路无 dlclose 调用。此外发现 1 处预存在 bug(GetAclnnArrdByApiName 函数中 static 变量在循环内误用导致只搜索第一个库),建议单独修复。 ## 🔶 需关注问题详情 ### 问题ID:ISSUE-001 | 严重级别:MEDIUM(需关注) #### 🔬 假设检验过程 **代码段**:GetOpApiFuncAddr() 函数 — dlopen 资源管理 **假设**:H0: 该代码段的内存/资源管理是安全的 | 证据序号 | 证据类型 | 规范ID | 证据描述 | 分值增量 | 累计自信值 | |---------|---------|--------|---------|---------|-----------| | 1 | 规范违反 | 1.2/5.2 | dlopen 获取的 3 个 handler(custOpApi、opApi、transformerOpApi)均未调用 dlclose 释放 | +40% | 40% | | 2 | 上下文防御缺失 | 1.2/5.2 | 全文件无任何 dlclose 调用,新增代码同样无释放逻辑 | +30% | 70% | **结论**:自信值 **70%** > 60%,**推翻原假设H0**,该代码段存在资源管理风险。 --- **关联规范条款**:SEC-1.2(保证内存安全)、SEC-5.2(资源泄露防护) **代码路径**:common/include/fallback/fallback.h:122,130,138(新增行 138-146) **问题类型**:资源泄露(dlopen 无 dlclose) **问题描述**:GetOpApiFuncAddr() 函数中通过 dlopen 获取的 3 个动态库句柄(custOpApiHandler、opApiHandler、transformerOpApiHandler)均以 static 变量存储,但从未调用 dlclose 释放。虽然这些库需要持续可用直到进程结束(动态图 fallback 场景),且进程退出时 OS 会回收资源,但缺少显式释放路径不符合 SEC-5.2 "资源申请和释放必须匹配" 的要求。本次 PR 新增的 transformerOpApiHandler 沿用了相同的模式。 **风险等级评估**: - 当前场景(进程级生命周期、无 dlclose 需求):风险可控,MED 级别 - 未来若需要支持库的热加载/卸载:风险升级,需补充 dlclose 逻辑 **是否为本次 PR 引入**:❌ 否,为预存在问题延续 #### 修改建议 **当前代码**(新增部分): ```cpp static auto transformerOpApiHandler = GetOpApiLibHandler(GetTransformerOpApiLibName()); if (transformerOpApiHandler != nullptr) { auto funcAddr = GetOpApiFuncAddrInLib(transformerOpApiHandler, GetTransformerOpApiLibName(), apiName); if (funcAddr != nullptr) { return funcAddr; } } ``` **建议方案**(可选,非紧急): 1. 短期:保持现状,在代码注释中说明设计意图(进程级生命周期,无需 dlclose) 2. 长期:如需支持库卸载,可引入 RAII 管理类封装 dlopen/dlclose **修改说明**:当前设计在动态图 fallback 场景下是合理的(库需持续可用),建议添加注释说明设计意图,而非立即修改。若未来需要库热加载功能,则需要补充 dlclose 和 handler 生命周期管理。 --- ### 问题ID:ISSUE-002 | 严重级别:MEDIUM(需关注)— 预存在 bug #### 🔬 假设检验过程 **代码段**:GetAclnnArrdByApiName() 函数(行105-119) **假设**:H0: 该代码段能正确搜索所有 aclnn 库 | 证据序号 | 证据类型 | 规范ID | 证据描述 | 分值增量 | 累计自信值 | |---------|---------|--------|---------|---------|-----------| | 1 | 规范违反 | TOPK-3 | static auto libHandler 在 for 循环内部声明,只初始化一次(首次迭代),后续迭代复用首次值 | +40% | 40% | | 2 | 函数调用链风险 | TOPK-3 | libHandler 始终为 libaclnn_ops_infer.so 的 handler,6个库中只有第一个被实际搜索 | +25% | 65% | **结论**:自信值 **65%** > 60%,**推翻原假设H0**,该代码段存在逻辑 bug。 --- **关联规范条款**:TOPK-3(生命周期内使用局部变量指针,避免野指针) **代码路径**:common/include/fallback/fallback.h:109 **问题类型**:static 变量在循环内误用导致逻辑错误 **问题描述**:GetAclnnArrdByApiName() 函数在 for 循环内部使用 static auto libHandler = GetOpApiLibHandler(libName.c_str()),由于 static 局部变量只初始化一次,libHandler 在首次迭代时绑定 libaclnn_ops_infer.so 的 handler,后续迭代中 libName 变化但 libHandler 不变,导致只搜索了第一个库。这不是本次 PR 引入的问题,但与新增的 fallback 搜索逻辑相关,可能影响 fallback 链路的完整性。 **是否为本次 PR 引入**:❌ 否,为预存在 bug #### 修改建议 **当前代码**: ```cpp inline void* GetAclnnArrdByApiName(const char *apiName) { vector<std:: string> libs = {"libaclnn_ops_infer.so", "libaclnn_ops_train.so", "libaclnn_math.so", "libaclnn_rand.so", "libaclnn_sparse.so", "libaclnn_fft.so"}; for (const auto &libName : libs) { static auto libHandler = GetOpApiLibHandler(libName.c_str()); // BUG: static 只初始化一次 if (libHandler != nullptr) { auto funcAddr = GetOpApiFuncAddrInLib(libHandler, libName.c_str(), apiName); if (funcAddr != nullptr) { return funcAddr; } } } ``` **修改后代码**: ```cpp inline void* GetAclnnArrdByApiName(const char *apiName) { vector<std::string> libs = {"libaclnn_ops_infer.so", "libaclnn_ops_train.so", "libaclnn_math.so", "libaclnn_rand.so", "libaclnn_sparse.so", "libaclnn_fft.so"}; for (const auto &libName : libs) { auto libHandler = GetOpApiLibHandler(libName.c_str()); // 移除 static,每次迭代重新获取 if (libHandler != nullptr) { auto funcAddr = GetOpApiFuncAddrInLib(libHandler, libName.c_str(), apiName); if (funcAddr != nullptr) { return funcAddr; } } } ``` **修改说明**:移除循环内的 static 关键字,确保每次迭代都能正确获取对应库的 handler。如果需要缓存 handler 避免重复 dlopen,应使用数组或 map 存储,而非在循环内使用 static。 --- ## ✅ 通过条款汇总 | 条款编号 | 条款标题 | 检视结论 | 关键证据 | |---------|---------|---------|---------| | SEC-3.5 | 指针使用前判空 | PASS | transformerOpApiHandlerfuncAddr 在使用前均判空 | | SEC-5.1 | 资源申请后判断是否成功 | PASS | dlopen/dlsym 返回值在 GetOpApiLibHandler/GetOpApiFuncAddrInLib 内部及调用处均判空 | | SEC-10.5 | 接口变更考虑兼容性 | PASS | 新增搜索层在已有搜索失败后执行,不阻断已有成功路径;为有意功能增强 | | SEC-11.2 | LOG API参数数量与占位符匹配 | PASS | 新日志 5个 %s 对应 5个 const char* 参数,完全匹配;修复了原代码 GetOpApiLibName() 重复调用bug | | SEC-11.3 | LOG API参数类型与格式化说明符匹配 | PASS | 所有参数均为 const char* 类型,对应 %s 说明符 | | TOPK-1 | 必须校验函数返回值 | PASS | GetTransformerOpApiLibName()GetOpApiLibHandler()GetOpApiFuncAddrInLib() 返回值均在使用前校验 | | TOPK-12 | 宏定义中临时变量命名 | PASS | 本次 PR 未新增宏内临时变量,仅修改日志格式字符串 | | TOPK-13 | dlopen管理的so禁用thread_local | PASS | 使用 static 而非 thread_local,符合要求;当前无 dlclose 操作,竞态不存在 | ## 📋 检视维度专项总结 ### 1. 安全编码维度 - **内存泄漏**:dlopen handler 无 dlclose(MED,预存在延续,进程级场景可接受) - **空指针风险**:充分保护,所有指针使用前判空(PASS) - **资源管理**:dlopen/dlsym 返回值均校验,但缺少释放路径(MED,预存在延续) ### 2. API使用维度 - **dlopen/dlsym 使用**:API 参数正确,RTLD_LAZY 模式合理(PASS) - **dlopen 错误处理**:失败时记录 dlerror() 日志并返回 nullptr(PASS) ### 3. 性能优化维度 - **static 变量初始化顺序**:transformerOpApiHandlercustOpApiHandleropApiHandler 之后初始化,符合搜索优先级(cust > op > transformer > aclnn) - **库加载顺序**:新增 transformer 库在 opApi 之后搜索,合理——自定义库优先,通用库次之,transformer 专用库第三 - **潜在性能影响**:新增 dlopen 调用仅在首次访问时执行(static 初始化),后续调用直接使用缓存的 handler,无性能损失 ### 4. 代码规范维度 - **命名规范**:GetTransformerOpApiLibNameGetOpApiLibName/GetCustOpApiLibName 命名风格一致(PASS) - **日志格式一致性**:新日志格式与已有格式一致,修复了原日志的参数重复 bug(PASS) - **代码风格一致性**:新增代码块的缩进、花括号风格与已有 opApiHandler 搜索块完全一致(PASS) ### 5. 逻辑正确性维度 - **搜索顺序**:custOpApi → opApi → transformerOpApi → aclnn,优先级合理(PASS) - **fallback 链路完整性**:新增 transformer 层在已有搜索失败后执行,不阻断已有路径(PASS) - **遗漏场景**:GetOpApiFuncAddr 函数覆盖了所有库搜索场景;EXEC_OPAPI_CMD 宏中的日志更新包含了新增库名(PASS) - **⚠️ 预存在 bug**:GetAclnnArrdByApiNamestatic auto libHandler 在循环内误用,导致 aclnn fallback 只搜索第一个库(MED,非本次 PR 引入,建议单独修复) ### 6. 风险点维度 - **死循环**:不存在(PASS) - **竞态条件**:static 初始化线程安全(C++11 magic statics),无 dlclose 操作所以无 handler 失效竞态(PASS) - **符号冲突**:搜索顺序确保优先级,custOpApi 中找到的符号不会被 transformer 库覆盖(PASS) - **dlopen 线程安全**:dlopen 本身是线程安全的(POSIX 规定),static 初始化也是线程安全的(PASS) ## 报告生成时间 2026-05-29 ## 报告状态 已完成检视,2处需关注问题(均为预存在延续),1处预存在bug建议单独修复 See merge request: cann/ops-transformer!60944 天前
新增 inplace_fused_causal_conv1d Co-authored-by: wkyan<yanwenkai@huawei.com> # message auto-generated for no-merge-commit merge: !5928 merge 0525_FCC into master 新增 inplace_fused_causal_conv1d Created-by: xiapengcheng5 Commit-by: wkyan Merged-by: cann-robot Description: ## 描述 新增 inplace_fused_causal_conv1d ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2712 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59285 天前
解除对ascend环境下面的op_common的依赖 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !2216 merge test_ut_task into master 解除对ascend环境下面的op_common的依赖 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!22166 天前
性能优化calsparsesize外放使非稀疏KV也可以在2个V核多次搬运 Co-authored-by: weixin_60515901<changlei24@huawei.com> # message auto-generated for no-merge-commit merge: !5934 merge master into master 性能优化calsparsesize外放使非稀疏KV也可以在2个V核多次搬运 Created-by: changlei24 Commit-by: changlei24;weixin_60515901 Merged-by: cann-robot Description: ## 描述 1、性能优化:calsparsesize外放使非稀疏KV也可以在2个V核多次搬运 2、删除函数冗余变量 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59343 天前
fix: aclrtMemcpy host to host for schedule_context, 修正示例代码内存拷贝类型错误 Co-authored-by: Developer user<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !5918 merge master into master fix: aclrtMemcpy host to host for schedule_context, 修正示例代码内存拷贝类型错误 Created-by: jialimin1 Commit-by: Developer user Merged-by: cann-robot Description: ## 描述 1、修改aclrtMemcpy host to host for schedule_context, 修正示例代码内存拷贝类型错误 2、修改日志打印内容 ## 关联的Issue Issue #2640 Issue #2641 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 ``` 编译包验证: [2026-05-26 03:18:07] ./uninstall.sh [2026-05-26 03:18:07] ./upgrade.sh [2026-05-26 03:18:07] CRC: 1888598674 [2026-05-26 03:18:07] SHA256: e5e52d301ebc0a74b5f34866bf194936a5fc441b6658e781ba1bc761fd8fbde1 [2026-05-26 03:18:07] Skipping md5sum at user request [2026-05-26 03:18:07] [2026-05-26 03:18:07] Self-extractable archive "cann-ops-transformer-custom_linux-x86_64.run" successfully created. 样例验证: [2026-05-26 03:21:42] Start compile and run example file: ../ffn/ffn_worker_scheduler/examples/test_aclnn_inplace_ffn_worker_scheduler.cpp [2026-05-26 03:21:49] Init ffn success, token_info_buf_size=192,token_data_buf_size= 1024. [2026-05-26 03:21:49] layer_ids_buf_size = 8. [2026-05-26 03:21:49] session_ids_buf_size = 8. [2026-05-26 03:21:49] micro_batch_ids_buf_size = 8. [2026-05-26 03:21:49] expert_ids_buf_size = 80. [2026-05-26 03:21:49] layer_ids[0] is: 55 [2026-05-26 03:21:49] layer_ids[1] is: 55 [2026-05-26 03:21:49] session_ids[0] is: 0 [2026-05-26 03:21:49] session_ids[1] is: 1 [2026-05-26 03:21:49] micro_batch_ids[0] is: 0 [2026-05-26 03:21:49] micro_batch_ids[1] is: 0 [2026-05-26 03:21:49] expert_ids[0] is: 0 [2026-05-26 03:21:49] expert_ids[1] is: 1 [2026-05-26 03:21:49] expert_ids[2] is: 2 [2026-05-26 03:21:49] expert_ids[3] is: 3 [2026-05-26 03:21:49] expert_ids[4] is: 4 [2026-05-26 03:21:49] expert_ids[5] is: 5 [2026-05-26 03:21:49] expert_ids[6] is: 6 [2026-05-26 03:21:49] expert_ids[7] is: 7 [2026-05-26 03:21:49] expert_ids[8] is: 8 [2026-05-26 03:21:49] expert_ids[9] is: 9 [2026-05-26 03:21:49] expert_ids[10] is: 0 [2026-05-26 03:21:49] expert_ids[11] is: 1 [2026-05-26 03:21:49] expert_ids[12] is: 2 [2026-05-26 03:21:49] expert_ids[13] is: 3 [2026-05-26 03:21:49] expert_ids[14] is: 4 [2026-05-26 03:21:49] expert_ids[15] is: 5 [2026-05-26 03:21:49] expert_ids[16] is: 6 [2026-05-26 03:21:49] expert_ids[17] is: 7 [2026-05-26 03:21:49] expert_ids[18] is: 8 [2026-05-26 03:21:49] expert_ids[19] is: 9 [2026-05-26 03:21:50] run test_aclnn_ffn_worker_scheduler, execute samples success [2026-05-26 03:21:50] Example completed successfully ``` <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 不涉及 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x]? Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59187 天前
gmm 重复安装头文件修改 Co-authored-by: chenglongyu<chenglongyu@huawei.com> # message auto-generated for no-merge-commit merge: !5770 merge refactor_gmm_infra_naming into master gmm 重复安装头文件修改 Created-by: chenglongyu Commit-by: chenglongyu Merged-by: cann-robot Description: ## 描述 grouped_matmul算子的op_kernel目录下维护的gmm_infra目录存在安装头文件重复的问题。在头文件加上算子名前缀做区分。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2680 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!57703 天前
fix error offset in alltoallmm. Co-authored-by: qq_43844249<fanglin17@huawei.com> # message auto-generated for no-merge-commit merge: !6131 merge fix-bug-alltoallmm into master fix error offset in alltoallmm. Created-by: qq_43844249 Commit-by: qq_43844249 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> # 代码检视报告 ## 检视概要 | 统计项 | 数值 | | ------ | ---- | | **分支名称** | fix-bug-alltoallmm | | **提交哈希** | c6adcb86feb3a585f7ec0090cc1ded7f85d2f197 | | **提交信息** | fix error offset. | | **变更文件** | 1 个 | | **变更行数** | 1 行(+1, -1) | | **检视条款** | 17 条(TOPK 5 条 + CPP-SECURE 12 条) | | **发现问题** | 0 个(变更部分通过检视) | | **潜在风险** | 2 个(需人工确认) | **核心结论**:本次提交修复了 ProcessTail 函数中 x1ScaleOffset 计算错误,从使用 tileM 改为使用 tailM,修复逻辑正确。代码整体符合安全编码规范,TOPK 问题清单中未发现明显违规。 --- ## TOPK 问题清单检视结果 ### TOPK-3: 生命周期内使用局部变量指针,避免野指针 [适用: All] **检视结果**:✅ 通过 **分析**:代码中无局部变量指针返回问题,所有指针均在作用域内有效使用。 --- ### TOPK-6: 必须考虑nan/inf/+0/-0等特殊值和边界值处理 [适用: All] **检视结果**:✅ 通过 **分析**:本次变更代码主要为地址偏移计算(整数乘法),不涉及浮点运算或特殊值处理场景。 --- ### TOPK-8: gm内存偏移或大小必须用int64表示 [适用: All] **检视结果**:✅ 通过 **分析**:变更代码(第 269 行)使用 uint64_t 进行偏移计算: ```cpp pipeLineContext_.computationContext->additionalData.x1ScaleOffset = static_cast<uint64_t>(mc2Tiling_.tailM) * tempScaleKBytes; ``` 符合规范要求,防止大地址空间溢出。 --- ### TOPK-10: 可整数计算时不允许转浮点数计算 [适用: All] **检视结果**:✅ 通过 **分析**:代码中全部使用整数类型进行偏移计算,无不必要的浮点转换。 --- ### TOPK-12: 宏定义中临时变量命名不能和外部变量冲突 [适用: All] **检视结果**:✅ 通过 **分析**:代码中无宏定义,不存在此风险。 --- ## C++ 安全编码规范检视结果 ### CPP-SECURE-2.1: 有符号整数运算不溢出 [适用: All] **检视结果**:✅ 通过 **分析**:代码中使用 uint64_t 进行乘法运算(第 235-236 行、第 255-256 行),防止溢出: ```cpp uint64_t tailMMultiRankK = static_cast<uint64_t>(mc2Tiling_.tailM) * rankForComm_; uint64_t tileCntMultitileMMultiRankK = static_cast<uint64_t>(mc2Tiling_.tileCnt) * static_cast<uint64_t>(mc2Tiling_.tileM) * rankForComm_; ``` --- ### CPP-SECURE-2.3: 除法/余数运算除零保护 [适用: All] **检视结果**:✅ 通过 **分析**:CeilDiv 函数(第 21-27 行)有除零保护: ```cpp template <typename T1, typename T2> __aicore__ inline T1 CeilDiv(T1 a, T2 b) { if (b == 0) { return 0; } return (a + b - 1) / b; } ``` --- ### CPP-SECURE-3.5: 指针使用前判空 [适用: All] **检视结果**:✅ 通过 **分析**:Process 函数(第 114-122 行)有指针判空保护: ```cpp if (pipeLine_ == nullptr || tilingData_ == nullptr) { return; } if (mc2Tiling_.rankDim == 0) { return; } ``` --- ### 其他条款检视结果 | 规范编号 | 规范名称 | 检视结果 | 说明 | | -------- | -------- | -------- | ---- | | 1.1 | 保证静态类型安全 | ✅ 通过 | 使用正确的类型转换 | | 1.2 | 保证内存安全 | ✅ 通过 | 无内存越界访问 | | 1.3 | 禁止使用未定义行为 | ✅ 通过 | 无 UB 操作 | | 2.2 | 无符号整数运算不回绕 | ✅ 通过 | 使用 uint64_t 防止回绕 | | 3.1 | 禁止使用未初始化的变量 | ✅ 通过 | 成员变量在 Init 中初始化 | | 3.3 | 数组索引校验 | ✅ 通过 | 无数组索引访问 | | 4.1 | 外部输入合法性校验 | ✅ 通过 | TilingData 已校验 | | 4.2 | 内存操作长度校验 | ✅ 通过 | 偏移量计算安全 | | 10.10 | 敏感信息使用后清零 | ✅ 通过 | 无敏感信息处理 | --- ## 变更代码正确性分析 ### 变更内容 **修改前**: ```cpp pipeLineContext_.computationContext->additionalData.x1ScaleOffset = static_cast<uint64_t>(mc2Tiling_.tileM) * tempScaleKBytes; ``` **修改后**: ```cpp pipeLineContext_.computationContext->additionalData.x1ScaleOffset = static_cast<uint64_t>(mc2Tiling_.tailM) * tempScaleKBytes; ``` ### 修复逻辑分析 **ProcessTile 函数(主块处理)**:使用 tileM 计算 x1ScaleOffset(第 217-223 行) **ProcessTail 函数(尾块处理)**:应使用 tailM 计算 x1ScaleOffset **修复原因**: - tileM 表示主块的 M 维度大小 - tailM 表示尾块的 M 维度大小 - ProcessTail 处理尾块,应使用尾块的参数计算偏移 **修复正确性**:✅ 修复逻辑正确 --- ## 潜在风险提示(需人工确认) ### 风险1:x1Scale 起始地址计算一致性 **位置**:第 266-267 行 ```cpp pipeLineContext_.computationContext->additionalData.x1Scale = transX1ScaleGM1_ + mc2Tiling_.tileCnt * mc2Tiling_.tileM * tempScaleKBytes; ``` **风险描述**: 此处使用 tileCnt * tileM 计算 x1Scale 的起始偏移(表示所有主块的总大小),而 x1ScaleOffset 使用 tailM(表示尾块的大小)。需确认: 1. transX1ScaleGM1_ 的数据布局是否为主块数据连续排列,尾块数据紧随其后? 2. 如果尾块数据布局与主块不同,x1Scale 的起始地址计算是否需要调整? **严重级别**:Suggestion(建议) **建议**:人工确认 transX1ScaleGM1_ 的内存布局设计,确保 ProcessTail 的地址计算与实际数据布局一致。 --- ### 风险2:cGM 输出地址计算一致性 **位置**:第 261 行 ```cpp pipeLineContext_.computationContext->baseData.cGM = y_ + static_cast<uint64_t>(mc2Tiling_.tileCnt) * mc2Tiling_.tileM * mc2Tiling_.rankN * sizeof(DTYPE_Y); ``` **风险描述**: 此处使用 tileCnt * tileM 计算输出矩阵 Y 的起始偏移,需确认: 1. 输出矩阵 Y 的布局是否为主块数据在前,尾块数据在后? 2. 与 x1Scale 的地址计算是否保持一致的布局逻辑? **严重级别**:Suggestion(建议) **建议**:人工确认 Y 矩阵的内存布局,确保 ProcessTail 的地址计算正确。 --- ## 总结与建议 ### 整体评价 本次提交是一个正确的 bug 修复,解决了 ProcessTail 函数中 x1ScaleOffset 计算使用错误参数(tileM 应为 tailM)的问题。代码整体符合 TOPK 问题清单和 C++ 安全编码规范,未发现严重安全风险。 ### 改进建议 1. **代码审查建议**: - 人工确认 transX1ScaleGM1_ 和 Y 矩阵的内存布局设计,确保 ProcessTail 的所有地址计算与实际数据布局一致 - 建议在代码注释中说明数据布局设计,提高可维护性 2. **后续测试建议**: - 增加边界值测试用例(如 tailM 较小、tileCnt 较大等场景) - 验证修复后的算子输出精度和功能正确性 ### 核间同步说明 根据用户提供的信息,调用的 process 代码已经保证了同步,不需要添加 AscendC::SyncAll() 等同步机制。因此 TOPK-11(通信算子融合需核间同步)不适用本次检视。 --- **报告生成时间**:2026-05-30 **报告状态**:已完成检视,建议人工确认潜在风险 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!61313 天前
MhcPostBackward matmul修改 Co-authored-by: qinqiuyue<qinqiuyue@huawei.com> # message auto-generated for no-merge-commit merge: !5931 merge mhc_5_22 into master MhcPostBackward matmul修改 Created-by: gcw_2XKemcvz Commit-by: qinqiuyue Merged-by: cann-robot Description: ## 描述 修改MhcPostBackward Matmul部分kernel实现 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2727 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59315 天前
permute相关算子补充aclnn新增校验的相关ut Co-authored-by: JimmyLam2<linjingmin2@huawei.com> # message auto-generated for no-merge-commit merge: !6158 merge master2 into master permute相关算子补充aclnn新增校验的相关ut Created-by: JimmyLam2 Commit-by: JimmyLam2 Merged-by: cann-robot Description: ## 描述 补充MoeTokenPermute、MoeTokenPermuteGrad、MoeTokenUnpermute、MoeTokenUnpermuteGrad 补充aclnn接口校验UT ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2796 ## 测试 compile的UT已pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!61583 天前
fix: 修正文档中 transformer 拼写错误问题 Co-authored-by: baidu_41609401<1294651225@qq.com> # message auto-generated for no-merge-commit merge: !5950 merge master into master fix: 修正文档中 transformer 拼写错误问题 Created-by: baidu_41609401 Commit-by: baidu_41609401 Merged-by: cann-robot Description: ## 描述 更新文档中transformer的拼写错误 | 文档 | 行数 | 修改前 | 修改后 | |--|--|--|--| | posembedding/norm_rope_concat/docs/aclnnNormRopeConcat.md | 18 | transfomer | transformer | | posembedding/norm_rope_concat/README.md | 16 | transfomer | transformer | | posembedding/norm_rope_concat_grad/docs/aclnnNormRopeConcatBackward.md | 16 | transfomer | transformer | | posembedding/norm_rope_concat_grad/README.md | 16 | transfomer | transformer | | docs/zh/op_api_list.md | 157 | transfomer | transformer | | docs/zh/op_api_list.md | 158 | transfomer | transformer | | docs/zh/install/dir_structure.md | 14 | transfomer | transformer | ## 文档更新 更新的文档如下: posembedding/norm_rope_concat/docs/aclnnNormRopeConcat.md posembedding/norm_rope_concat/README.md posembedding/norm_rope_concat_grad/docs/aclnnNormRopeConcatBackward.md posembedding/norm_rope_concat_grad/README.md docs/zh/op_api_list.md docs/zh/install/dir_structure.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59506 天前
添加aclnn头文件弃用警告功能 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !5474 merge master into master 添加aclnn头文件弃用警告功能 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 在算子构建安装流程中,为 Level2 目录下的头文件自动添加 #warning 废弃告警,提示用户迁移到 include/aclnnop 路径下的同名头文件。 改动原因 Level2 头文件计划废弃,需要在编译时通过 #warning 提前通知用户切换到新的头文件路径,避免后续版本移除时出现编译失败。 改动方法 新增脚本 scripts/util/add_deprecation_warning.py:解析头文件,定位最后一个 #include 行,在其后插入 #warning "This file is scheduled to be deprecated. Please use the file with the same name under include/aclnnop in the CANN package installation path instead." 修改 cmake/opbuild.cmake:在 Level2 头文件安装完成后,通过 install(CODE ...) 调用上述 Python 脚本,对已安装的头文件执行告警注入 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2516 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!547414 天前
refactor: remove dead S1 outer split code in flash_attn arch35 tiling and add UT Co-authored-by: PerrySkywalerk<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !5947 merge fix_fa_ut into master refactor: remove dead S1 outer split code in flash_attn arch35 tiling and add UT Created-by: PerrySkywalker Commit-by: PerrySkywalerk Merged-by: cann-robot Description: ## 描述 清理 flash_attn arch35 tiling 中未使用的 S1 外切分代码,新增 arch35 tiling UT 用例提升测试覆盖率。 ## 改动 - 移除 flash_attn_tiling.cpp/.h 中未使用的 GetWinLeftsRightUp、FixParamWithRowInvalid、CheckS1OutSplit、SplitOutSeq 方法 - 移除未使用的成员变量 enableS1OutSplit - 简化 SplitPolicy,移除死代码 S1 outer split 分支 - 新增 arch35 tiling UT 用例(PA_BBND 正常场景、dtype 不一致、headnum 非法、layout 非法、format 非法等 13 条) - 在 test_config.yaml 中启用 flash_attn UT ## 关联的Issue #2693 ## 测试 - UT 新增用例覆盖 arch35 tiling 校验路径 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!59475 天前
megamoe torch_extension接口修改入参weight_type默认值 Co-authored-by: weixin_49300047<lijianhua56@huawei.com> # message auto-generated for no-merge-commit merge: !5894 merge fix_torch into master megamoe torch_extension接口修改入参weight_type默认值 Created-by: weixin_49300047 Commit-by: weixin_49300047 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改接口入参的默认值,保证当用户不传参的情况下,weight_type默认为None ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2664 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!58944 天前
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5685 个月前
增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !3578 merge master_precommit into master 增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!35781 个月前
通过gitmodules引入third_party/catlass Co-authored-by: longjihui<longjihui@huawei.com> # message auto-generated for no-merge-commit merge: !1765 merge master into master 通过gitmodules引入third_party/catlass Created-by: longjihui Commit-by: longjihui Merged-by: cann-robot Description: ## 描述 新增.gitmodules文件,引入第三方库catlass,分支为v1.3.1-notla ## 关联的Issue 不涉及 ## 测试 仅引入三方仓,使用方式暂不确定,无需测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:新引入三方仓catlass See merge request: cann/ops-transformer!17651 个月前
增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !3578 merge master_precommit into master 增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!35781 个月前
Transformer 更新Latest News Co-authored-by: lidongsheng<lidongsheng43@huawei.com> # message auto-generated for no-merge-commit merge: !771 merge docs into master Transformer 更新Latest News Created-by: qq_46353993 Commit-by: lidongsheng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!7714 个月前
gtest add scope Co-authored-by: sunhao<sunhao104@huawei.com> # message auto-generated for no-merge-commit merge: !5819 merge shape_err_msg_0523 into master gtest add scope Created-by: Bugslover Commit-by: sunhao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> gtest构建时 add scope ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#2617](https://gitcode.com/cann/ops-transformer/issues/2617) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!581910 天前
docs: 补充生态算子精度标准引用 Co-authored-by: chaotang233<tangchao47@hisilicon.com> # message auto-generated for no-merge-commit merge: !5006 merge master into master docs: 补充生态算子精度标准引用 Created-by: chaotang233 Commit-by: chaotang233 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 增加精度标准的索引,确保仓可以引用到精度标准 会议纪要:https://etherpad-cann.meeting.osinfra.cn/p/TSC ![纪要.png](https://raw.gitcode.com/user-images/assets/7673863/56e07fe6-5e88-44fe-8e4d-ba00b38e15ba/纪要.png '纪要.png') ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->CONTRIBUTING.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!500625 天前
init 7 个月前
规范化OAT.xml中许可证声明形式 Co-authored-by: chenyx2012<975102023@qq.com> # message auto-generated for no-merge-commit merge: !3571 merge master into master 规范化OAT.xml中许可证声明形式 Created-by: chenyx_2012 Commit-by: chenyx2012 Merged-by: cann-robot Description: ## 描述 规范化OAT.xml中许可证声明形式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!35712 个月前
新增本地编译FAQ&&新增ascend950算子列表&&quick_op_invocation整改 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !5187 merge master into master 新增本地编译FAQ&&新增ascend950算子列表&&quick_op_invocation整改 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 新增本地编译FAQ&&新增ascend950算子列表&&quick_op_invocation整改 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2350 https://gitcode.com/cann/ops-transformer/issues/1683 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!518718 天前
doc Tools工具扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !3432 merge master into master doc Tools工具扫描问题修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools工具扫描问题修改 See merge request: cann/ops-transformer!34322 个月前
支持按模板参数编译算子kernel、支持编译入参调试异常与调优参数 Co-authored-by: lidongsheng<lidongsheng43@huawei.com> Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2170 merge 910_lds into master 支持按模板参数编译算子kernel、支持编译入参调试异常与调优参数 Created-by: qq_46353993 Commit-by: 吴剑飞;lidongsheng Merged-by: cann-robot Description: ## 描述 本次修改支持用户通过build.sh的编译入口传入模板参数--kernel_template_input后按tilingkey编译、传入--bisheng_flags进行调试异常 ## 关联的Issue [支持按模板参数指定编译kernel](https://gitcode.com/cann/ops-transformer/issues/1036) [支持编译入参新增调试异常和调优参数](https://gitcode.com/cann/ops-transformer/issues/1044) ## 测试 二级冒烟、指定模板参数编译并执行测试用例 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!21702 个月前
更新protobuf版本 Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !522 merge prof into master 更新protobuf版本 Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新protobuf版本 ## 关联的Issue 关联Issue [#316](https://gitcode.com/cann/ops-transformer/issues/316) <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5225 个月前
fix(build): add default ops filter for opkernel UT when ascend_op_name is empty Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !6140 merge fix/remove-redundant-sed-process-soc-input into master fix(build): add default ops filter for opkernel UT when ascend_op_name is empty Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 执行 bash build.sh -u --opkernel 时,若未通过 --ops 指定算子,会全量编译所有 op_kernel UT,其中部分算子存在编译报错阻塞整体构建。需要在 ascend_op_name 为空时设置默认算子列表,避免全量构建失败。 ## 改动 - 在 set_ut_mode() 函数中新增判断:当 OP_KERNEL_UT=TRUEascend_op_name 为空时,打印警告提示并设置默认算子列表 recurrent_gated_delta_rule,chunk_gated_delta_rule - 当用户已通过 --ops 指定算子时(ascend_op_name 不为空),不会覆盖用户的选择 - 不传 --ops 时的原有全量行为被替换为安全的默认值,避免直接全量构建报错 ## 关联的Issue #2782 ## 测试 - bash build.sh -u --opkernel:编译与测试通过,29 tests PASSED - bash build.sh -u --opkernel_test:编译与测试通过,29 tests PASSED - bash build.sh -u --opkernel --ops="xxx":用户指定 --ops 时不受影响,ascend_op_name 不会被覆盖 ## 类型标签 - [ ] 🐛 Bug 修复 - [x] 📦 构建/CI - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!61403 天前
修复GMMFR算子统计不到UT覆盖率的问题 Co-authored-by: zhangzhizhuo<zhangzhizhuo1@huawei.com> # message auto-generated for no-merge-commit merge: !4938 merge fixgmmfrut into master 修复GMMFR算子统计不到UT覆盖率的问题 Created-by: zhangzhizhuo Commit-by: zhangzhizhuo Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 改动原因:目前算子UT覆盖率统计,统计不到GMMFinalizerouting算子,修改配置文件以统计到覆盖率 方法:修改相关配置文件。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联issue [#2400](https://gitcode.com/cann/ops-transformer/issues/2400) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> na ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新example的命名。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!49384 天前
移除gawk依赖,使用shell内置命令替代 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !4704 merge master into master 移除gawk依赖,使用shell内置命令替代 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 移除gawk依赖,使用shell内置命令替代 资料描述错误修改 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2119 https://gitcode.com/cann/ops-transformer/issues/2049 https://gitcode.com/cann/ops-transformer/issues/2149 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!470426 天前
前置依赖资料修改&&build.sh --help提示&&requirement.txt明确依赖版本 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !4532 merge master into master 前置依赖资料修改&&build.sh --help提示&&requirement.txt明确依赖版本 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 1、手动安装,最小化环境依赖不清晰 资料调整 2、SOC 参数错误应更新 build.sh 支持列表并完善文档说明 3、requirement.txt Python 依赖冲突应显式声明版本约束与缺失依赖 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2018 https://gitcode.com/cann/ops-transformer/issues/2017 https://gitcode.com/cann/ops-transformer/issues/2016 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!45321 个月前
chore: upgrade ops-transformer version to 9.1.0 and update opbase tag Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !5895 merge chore/version-upgrade-9.1.0 into master chore: upgrade ops-transformer version to 9.1.0 and update opbase tag Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 ops-transformer 版本升级至 9.1.0,同步更新 opbase 依赖 tag,移除不再需要的 asc-tools 构建依赖。 ## 改动 - version.cmake: 版本号从 9.0.0 升级至 9.1.0 - version.cmake: 移除 asc-tools >=8.5 构建依赖 - cmake/third_party/opbase.cmake: opbase tag ID 从 6604d3c 更新为 ee5334d ## 关联的Issue #2662 https://gitcode.com/cann/ops-transformer/issues/2599 ## 测试 - bash build.sh --pkg --jit 编译打包通过 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:版本升级 See merge request: cann/ops-transformer!58957 天前
check_compile_version Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2085 merge check_version into master check_compile_version Created-by: hid81635372 Commit-by: 吴剑飞 Merged-by: cann-robot Description: ## 描述 工程上支持在编译时对子包版本进行校验 ## 关联的Issue https://gitcode.com/cann/ops-transformer/pull/2085 ## 测试 功能上可以在子包版本低于构建依赖时进行告警,RDV已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 工程能力增加编译时版本校验功能 See merge request: cann/ops-transformer!20852 个月前

ops-transformer

🔥Latest News

🚀概述

ops-transformer是CANN (Compute Architecture for Neural Networks)算子库中提供transformer类大模型计算的进阶算子库,包括attention类、moe类、mc2类等,覆盖各类attention、MoE计算、通算融合等场景,算子库在架构图中的位置如下。

架构图

📌版本配套

本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明 。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。

🛠️环境准备

环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。

⬇️源码下载

环境准备好后,下载与CANN版本配套的分支源码,命令如下,${tag_version}替换为分支标签名。

说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新商发版CANN对应的源码 。

git clone -b ${tag_version} https://gitcode.com/cann/ops-transformer.git

📖学习教程

  • 快速入门:从零开始快速体验项目核心基础能力,涵盖源码编译、算子调用、开发与调试等操作。
  • 进阶教程:如需深入了解项目编译部署、算子调用、开发、调试调优等能力,请查阅文档中心获取详细指引。

💬相关信息


PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。

  • 问题反馈:通过GitCode【Issues】提交问题。
  • 社区互动:通过GitCode【讨论】参与交流。
  • 技术专栏:通过GitCode【Wiki】获取技术文章,如系列化教程、优秀实践等。

项目介绍

本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

C++88.95%
C4.39%
Python4.17%
CMake2.12%
Shell0.37%