| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix_deprecated_declaration_error Co-authored-by: gcw_atM8lhjZ<chenhangxin@huawei.com> # message auto-generated for no-merge-commit merge: !5892 merge master into master fix_deprecated_declaration_error Created-by: gcw_atM8lhjZ Commit-by: gcw_atM8lhjZ Merged-by: cann-robot Description: ## 描述 asc_get_store_atomic_config 在 2201 上未废弃,删除公开声明及 2201 实现(memory_base_impl/scalar_atomic_intf_impl.h)中误加的 ASC_DEPRECATED 注解,解决 deprecated 声明编译错误;3510 架构废弃标记保留不变。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5892 | 1 个月前 | |
refactor: 按公开接口头平铺 C API 实现并简化调用层 Co-authored-by: lihuaichao<lihuaichao1@huawei.com> # message auto-generated for no-merge-commit merge: !5773 merge capi_impl_refactor into master refactor: 按公开接口头平铺 C API 实现并简化调用层 Created-by: lihuaichao Commit-by: lihuaichao Merged-by: cann-robot Description: ## 描述 C API 原实现使用多层聚合头,公开头会引入无关实现。本变更按实际声明接口的公开头平铺实现,并消除无意义的私有函数转发层。 - 将原 instr_impl 目录重组为 90 个实现头:memory_base_impl 下 26 个、reg_base_impl 公共部分 45 个、npu_arch_3510 专用部分 19 个。共享工具实现保留为 utils_impl.h。 - 将 asc_copy_l0c2ub、asc_copy_gm2ub_align、asc_copy_ub2gm_align、asc_copy_l0c2gm、asc_copy_l0c2l1 的131个公共实现重载移动到3510专用头;保留已有24个废弃重载,公共头按架构宏包含对应专用头。 - 公开头只直接包含同名 *_intf_impl.h。reg_base_impl 公共头通过 #if defined(__NPU_ARCH__) && (__NPU_ARCH__ == 3510) 包含同名专用头,专用头不反向包含公共接口实现头;为三个 composite 接口增加公共分发入口。 - 架构专用头统一在公共头顶部包含;去掉 cache_ctrl、spr 公共函数外围的3510限制。asc_set_atomic_none 直接调用 set_atomic_none,消除对公共头后续定义的依赖。 - reg_addr_reg 的公共接口和3510旧接口直接调用 vag_*,保留AIV保护、非AIV默认返回和废弃标记;移除12个宏生成的_impl转发重载,消除顶部include的声明顺序依赖。 - memory_base_impl 和 reg_base_impl 移除重复的 *_impl 私有转发层,基础接口直接实现底层指令调用,保留必要的参数及返回值适配,以及实际承担同步分发职责的辅助函数。公开声明、重载和原有架构支持范围保持不变。 - composite 接口直接组合底层指令,删除对非 sync 接口实现头的冗余依赖;utils_impl.h 已实现的同步和 mask 辅助操作复用现有工具函数,保留原有条件执行语义。 - 为 sync composite 接口补齐与对应基础操作一致的 AIC/AIV 保护,计算和同步一起受保护,避免在非目标核执行同步。 - 清理 composite 中的34组冗余作用域和多余空行,合并4处重复临时变量并保留地址更新语义。storeunalign composite 恢复 asc_get_vf_len 查询及所需 sys_var.h 依赖,零偏移参数直接使用0。 - 90 个实现头沿用原有 #warning、保护顺序和 UNDEF_ASCENDC_C_API_INCLUDE_COMPILER_INTERNAL_HEADERS_ASCENDC 清理标记,按新路径调整防重复包含宏和警告路径。 - 按实际依赖删除冗余 defs.h 和 utils_impl.h 引用,保留宏及工具函数所需依赖;清理仅有接口名的注释和 49 个空 __asc_aicore 命名空间块,保留有实际内容的命名空间及算法、参数和约束说明。新增或更名的实现头使用 2026 年版权信息。 - 同步最新 master,解决旧 vector_compute_impl.h 的修改/删除冲突,将上游三个 asc_sub_relu_sync 重载的同步修复迁移到新的 memory_base_impl/vector_compute_composite_intf_impl.h。 - 更新目录文档和已有测试引用;classify_rule.yaml 中旧路径的调整保持在本 PR 中。 - 清理22个实现头中的330行冗余、悬空或重复分类注释及多余空行;删除memory_base_impl/vector_datamove_intf_impl.h中已无使用点的两组默认值宏及其重复定义、清理代码,保留硬件位域、使用约束和废弃替代说明。 - 删除两个vector_permute_sel实现头中未调用的ASC_TRANSTO5HD_B8_CALL宏,移除reg_permute_sel对storeunalign实现头的冗余包含,合并两个leakyrelu_sync重载的重复mask恢复,清理两条不准确的storeunalign分类注释。 - 合并master提交4511da2b149ba2bc29d1143a5e21742777199592,解决14个旧聚合头修改/删除冲突,将主线1,414处废弃标记调整迁移到扁平实现;保留接口和底层实现,旧instr_impl目录不恢复。 - sys_var.h先包含defs.h再包含架构实现,确保废弃标记宏在实现使用前定义,支持2201/3510独立包含该公开头。 - 同步master 2abedf248的回退变更:memory/reg的utils统一引用恢复后的impl/utils/sys_macros.h,保留主线恢复的两个兼容入口头。 ## 关联的Issue 无。 ## 测试 接口迁移后已完成公开入口及实现头语法编译、接口对比。本次格式修复使用与CI一致的clang-format 18.1.8,调整两处vadds调用的参数换行,无非空白字符变更;UT、安装目录和重复包含结果来自此前验证。 - 对比主线提交 83f55b37a8ad61662b97a61ce2646f6c660b64df:74个公开头、90个新实现头与659个旧实现头核对,2201/3510公开声明和公开实现新增、删除均为0;122个架构/公开头组合中6,178条原有接口引用关系保持可达。 - 2201/3510 host、单头模式及 device 公开头编译:174 项通过。 - 90项实现头依赖语法编译全部通过(先提供公开入口的基础定义,3510专用头通过公共头引入,不要求裸impl独立包含)。宏展开核对仅剩8个必要同步分发helper。 - 此前87项公开入口重复包含和临时宏清理检查通过。 - 此前四组C API CPU/mock UT共5,057项通过,覆盖2201/3510的AIC/AIV;本次未重跑。 - 此前全新安装目录下5项入口编译通过,无源码C API头回退。 - 本次对150个相关代码文件执行clang-format 18.1.8,格式修复后dry-run和pre-commit clang-format均通过。空白、EOF、YAML、大文件、冲突标记、私钥、拼写和OAT hook通过;无适用文件的JSON、ruff检查跳过。 - 本地完整pre-commit的Markdown检查因已有文档链接 http://optipng.sourceforge.net/ 网络不可达未通过;未修改该无关文档或检查配置,远端检查结果需以新提交CI为准。 - 最近的注释和无用宏清理已通过22个文件的clang-format 18.1.8及git diff --check;逐文件剔除注释、空白和指定无用宏后与修改前一致,未改动函数实现;本轮未重跑编译或UT。 - 合并后全量对照master 4511da2b1及原目录6ee902416:公开声明/实现无新增或缺失,原有6,178条入口匹配关系保留;90个实现头语法检查通过。四组CPU/mock UT重新构建后5,057项全部通过。 - sys_var.h包含顺序修复后,重新执行全部174项公开入口语法检查,174项全部通过,之前6项sys_var独立包含失败已消除;clang-format 18.1.8和git diff --check通过。本次仅调整包含顺序,未重复运行UT。 - 再次同步master 2abedf248后,含恢复的兼容入口在内共178项公开入口语法检查全部通过;90个实现头的包含路径和保护宏静态检查通过,相关文件clang-format检查通过。 - 未运行真实 NPU 测试。上述检查不将原有跨架构的声明/实现差异判定为新增缺陷,也不删除这些接口。 ## 文档更新 更新中英文 C API 贡献指南、目录结构说明以及已有 C API UT 目录映射,说明公共入口、架构专用实现与必要辅助函数的组织方式。 ## 类型标签 - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5773 | 1 个月前 | |
fix repeat code 1 Co-authored-by: p30079636<panjiacheng1@h-partners.com> # message auto-generated for no-merge-commit merge: !6764 merge r_co_1 into master fix repeat code 1 Created-by: pan-jiacheng1 Commit-by: p30079636 Merged-by: cann-robot Description: ## 描述 asc_transto5hd_b8_sync因接口废弃与asc_transto5hd_b8有重复的代码实现,将新接口包装至asc_transto5hd_b8_sync函数体以减少重复代码 ## 关联的Issue NA ## 测试 COMPILE ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6764 | 3 天前 | |
feat: 9201架构新增类型转换C API接口(half2int8/half2int4x2/bfloat162exmy及asc_cast/asc_cast_merge) Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> # message auto-generated for no-merge-commit merge: !6189 merge feat/9201-reg-convert into master feat: 9201架构新增类型转换C API接口(half2int8/half2int4x2/bfloat162exmy及asc_cast/asc_cast_merge) Created-by: zhangfeifan0709 Commit-by: zhangfeifan0709 Merged-by: cann-robot Description: ## 描述 ### 变更概述 本PR为 **9201 架构(a6)** 新增 reg_compute 类型转换 C API 接口及配套指令级 UT,共引入 **190 个转换接口重载(172 void + 18 return)与 1 个类型别名 vector_fp8_e6m2_t**,提供「专用命名」与「泛型命名(asc_cast/asc_cast_merge)」两套语义等价的接口;全部新增声明统一纳入 ASC_DEVKIT_VERSION_NUM >= 90200000 版本宏门控,并已 rebase 至最新 master 解决合并冲突。 ### 新增接口明细 #### 1. 专用命名接口(104 个重载,类型与舍入/饱和模式编入函数名) **half → int8 合并写入(20 重载)** - asc_half2int8_{rd,rn,rna,ru,rz}{,_sat}_merge(MODE_MERGING,mask=false 处保留 dst 原值) - 舍入 {RD,RN,RNA,RU,RZ} × 饱和 {无后缀, _sat} × 位置 {EVEN,ODD},底层指令 vcvt **half → int4x2 合并写入(40 重载)** - asc_half2int4x2_{rd,rn,rna,ru,rz}{,_sat}_merge - 舍入 ×5 × 饱和 ×2 × 位置 {DISPERSE_FIRST/SECOND/THIRD/FOURTH_QUARTER},底层指令 vcvt_f162s4(PART_P0~P3) **bfloat16 → FP8 系列(44 重载)** | 转换方向 | 接口名 | 形态 | 重载数 | 底层指令 | |---|---|---|---|---| | bf16→e4m3 | asc_bfloat162e4m3_rn{,_sat} | void+return × EVEN/ODD | 8 | vcvt | | bf16→e4m3 | asc_bfloat162e4m3_rn{,_sat}_merge | void × EVEN/ODD | 4 | vcvt | | bf16→e5m2 | asc_bfloat162e5m2_rn{,_sat} | void+return × EVEN/ODD | 8 | vcvt | | bf16→e5m2 | asc_bfloat162e5m2_rn{,_sat}_merge | void × EVEN/ODD | 4 | vcvt | | bf16→e6m2 | asc_bfloat162e6m2_rn | void+return × EVEN/ODD | 4 | vcvt_bf162e6m2(无饱和参数) | | bf16→e8m0 | asc_bfloat162e8m0_{ru,rz}{,_sat} | void+return × EVEN/ODD | 16 | vcvt_bf162e8m0 | 其中 e6m2 为 9201 新增目标类型,配套在 include/c_api/defs/type.h 新增类型别名 vector_fp8_e6m2_t = vector_f8e6m2。 #### 2. 泛型命名接口(86 个重载,舍入/饱和/位置通过模板参数区分) 统一签名形态: cpp __simd_callee__ inline void asc_cast[_merge]( vector_<dst>& dst, vector_<src> src, vector_bool mask, std::integral_constant<asc_cast_round_mode, ...> round_mode, std::integral_constant<asc_cast_saturation_mode, ...> saturation_mode, // e6m2 无此项 std::integral_constant<asc_position(_quarter)_mode, ...> dst_pos); **asc_cast_merge(68 重载,全新接口族,通用层此前无任何 merge 版 cast)** | 转换方向 | 重载数 | 参数空间 | 底层指令 | |---|---|---|---| | half→int4x2 | 40 | 舍入{RD,RN,RNA,RU,RZ} × 饱和{NO_SAT,SAT} × 位置{4×QUARTER} | vcvt_f162s4 | | half→int8 | 20 | 舍入×5 × 饱和×2 × 位置{EVEN,ODD} | vcvt | | bf16→e4m3 | 4 | RN × 饱和×2 × 位置{EVEN,ODD} | vcvt | | bf16→e5m2 | 4 | RN × 饱和×2 × 位置{EVEN,ODD} | vcvt | **asc_cast(18 重载,既有接口族新增 9201 专属类型组合)** | 转换方向 | 重载数 | 参数空间 | 底层指令 | |---|---|---|---| | bf16→e4m3 | 4 | RN × 饱和×2 × EVEN/ODD | vcvt | | bf16→e5m2 | 4 | RN × 饱和×2 × EVEN/ODD | vcvt | | bf16→e6m2 | 2 | RN(无饱和参数)× EVEN/ODD | vcvt_bf162e6m2 | | bf16→e8m0 | 8 | {RU,RZ} × 饱和×2 × EVEN/ODD | vcvt_bf162e8m0 | 两套命名接口已程序化核验:86 个 void 重载严格一一对应,每个配对发出的底层 vcvt* 指令(含全部参数)逐字符一致;cast 族不提供返回值形态,是用户视角的唯一差异。舍入模式 → 指令参数映射:RD→ROUND_F、RN→ROUND_R、RNA→ROUND_A、RU→ROUND_C、RZ→ROUND_Z;饱和 → RS_ENABLE/RS_DISABLE;位置 → PART_EVEN/PART_ODD、PART_P0~P3。 ### 版本宏门控与冲突解决 - include/c_api/reg_compute/reg_convert.h 中 190 个新增声明整体置于 #if (ASC_DEVKIT_VERSION_NUM >= 90200000) 门控块,vector_fp8_e6m2_t 别名同步纳入门控(include/c_api/defs/type.h),避免影响 9.2.0 之前版本的编译兼容性 - 分支已 rebase 至最新 master 并解决 reg_convert.h 的合并冲突(声明区块重排,接口集合不变) ### 配套改动 | 文件 | 变动 | |---|---| | impl/c_api/reg_base_impl/npu_arch_9201/reg_convert_intf_impl.h | 新建(1901 行),190 个重载的完整实现,仅 9201 架构 | | impl/c_api/reg_base_impl/reg_convert_intf_impl.h | 新增 __NPU_ARCH__ == 9201 impl 分发包含;5 处过时注释清理 | | include/c_api/asc_simd.h、include/c_api/asc_reg_vector.h | 入口条件编译 3510 扩展为 3510 \|\| 9201,修复 9201 下 reg_compute 接口链不可达 | | tests/api/c_api/stub/cce_stub.h | 补齐 Fp8e6m2T/vector_f8e6m2 类型与 vcvt(f8e4m3/e5m2←bf16)、vcvt_bf162e6m2、vcvt_bf162e8m0 stub(仅 UT 环境) | ### 设计决策 1. **merging 接口仅提供 void 形态**:单返回值重载中 dst 为函数内新定义的 vector,merging 模式下目标位置外的值无意义,无业务场景 2. **merging 后缀命名 _merge**:语义明确,区别于 MODE_ZEROING 常规写入(mask=false 处写 0) 3. **双套命名并存**:专用命名直观易查,泛型命名适配模板/泛型调用场景,二者指令级等价 ## 关联的Issue 无 ## 测试 新增 tests/api/c_api/npu_arch_9201/utils/test_vcvt_instr_utils.h(指令级 UT 框架宏)与 8 个测试文件,mockcpp 指令级 mock,**190 个用例与 190 个新重载 1:1 对应**: | 测试文件 | 用例 | 覆盖 | |---|---|---| | test_asc_half2int4x2.cpp | 40 | 10 API × 4 quarter 位置 | | test_asc_half2int8.cpp | 20 | 10 API × EVEN/ODD | | test_asc_bfloat162e4m3.cpp | 12 | rn/rn_sat(void+return)+ merge | | test_asc_bfloat162e5m2.cpp | 12 | 同上 | | test_asc_bfloat162e6m2.cpp | 4 | rn × EVEN/ODD(void+return) | | test_asc_bfloat162e8m0.cpp | 16 | ru/rz × sat × EVEN/ODD | | test_asc_cast.cpp | 18 | 泛型 asc_cast 全部重载 | | test_asc_cast_merge.cpp | 68 | 泛型 asc_cast_merge 全部重载 | 测试结果: - [x] 9201(ascend960dt_AIV)UT 190/190 通过 - [x] 3510(ascend950pr_9599_AIV)回归通过(版本宏门控下该架构无行为变化) - [x] 2201(ascend910B1_AIV)回归通过 - [x] 全部改动文件 clang-format 合规(线上 pre-commit 格式检查已对齐) ## 文档更新 无独立文档更新,接口以头文件声明为准。 ## 类型标签 - [x] ✨ feat: 新功能 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!6189 | 12 天前 | |
bugfix:修复bfloat162e1m2x2及bfloat162e2m1x2传参问题 Co-authored-by: yiming0671<zhangyiming69@huawei.com> # message auto-generated for no-merge-commit merge: !6724 merge master into master bugfix:修复bfloat162e1m2x2及bfloat162e2m1x2传参问题 Created-by: yiming0671 Commit-by: yiming0671 Merged-by: cann-robot Description: ## 描述 1、修复bfloat162e1m2x2及bfloat162e2m1x2传参问题。 2、对_merge接口需求进行澄清,去除多余接口。 3、废弃接口置于文件末尾。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6724 | 8 天前 | |
功能:新增 9201 架构 reg 矢量计算接口及 UT Co-authored-by: zhangjiru<zhangjiru1@huawei.com> # message auto-generated for no-merge-commit merge: !6225 merge feat/capi_9201_vec_compute into master 功能:新增 9201 架构 reg 矢量计算接口及 UT Created-by: leozjr Commit-by: zhangjiru Merged-by: cann-robot Description: ## 描述 新增 9201(ascend960dt)架构 reg 寄存器矢量计算接口及对应 UT,并对公共头文件架构分派进行适配。 **接口实现** - 新增 impl/c_api/reg_base_impl/npu_arch_9201/ 下 4 个架构私有实现文件: - reg_fused_intf_impl.h:新增 asc_fma/asc_fms/asc_fnma/asc_fnms(返回值形式),映射 vfma/vfnms/vfms/vfnma - reg_logic_intf_impl.h:新增无符号位移接口 asc_shiftleft/asc_shiftright/asc_shiftleft_scalar/asc_shiftright_scalar(9201 为无符号 shift 类型) - reg_reduce_intf_impl.h:新增 asc_datablock_reduce_max/min/sum_stride、asc_pair_reduce_sum_stride、asc_reduce_max/min/sum_last_elem,映射 vcg*v2/vcpaddv2/vc*v2 - reg_permute_sel_intf_impl.h:新增 asc_intlv_half_low/high、asc_deintlv_even/odd(含 b8/b16/b32 谓词变体),映射 vintlvv2/vdintlvv2 - 所有新接口均提供 dst-ref 与 return-by-value 两种形式(fused 系列仅返回值形式) **架构分派适配** - signed shift 接口迁移至 npu_arch_3510/reg_logic_intf_impl.h(3510 独有有符号类型) - 公共 impl 头(reg_fused/reg_logic/reg_permute_sel)增加 #elif __NPU_ARCH__ == 9201 分派,reg_reduce 增加 #if __NPU_ARCH__ == 9201 - include/c_api 各 compute 头守卫扩展为 (3510 || 9201),asc_simd.h / asc_reg_vector.h 放行 9201 **公共类型补充** - include/c_api/defs/type.h 新增 vector_fp8_e6m2_t、vector_uint4x2_t、vector_hifloat4x2_t **UT** - 新增 tests/api/c_api/npu_arch_9201/vector_compute/ 下 9 个测试文件,覆盖上述全部新接口 - tests/api/c_api/stub/cce_stub.h 新增 9201 v2 指令 stub 及 fp8_e6m2/hif4x2 host 类型 ## 关联的Issue 不涉及 ## 测试 - 本地编译并运行 UT: - ascendc_ut_c_api_ascend960dt_AIV(9201):184 个测试全部通过 - ascendc_ut_c_api_ascend950pr_9599_AIV(3510):3324 个测试全部通过(回归无影响) ## 文档更新 不涉及 ## 类型标签 - [x] ✨ feat: 新功能 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!6225 | 11 天前 | |
refactor: 按公开接口头平铺 C API 实现并简化调用层 Co-authored-by: lihuaichao<lihuaichao1@huawei.com> # message auto-generated for no-merge-commit merge: !5773 merge capi_impl_refactor into master refactor: 按公开接口头平铺 C API 实现并简化调用层 Created-by: lihuaichao Commit-by: lihuaichao Merged-by: cann-robot Description: ## 描述 C API 原实现使用多层聚合头,公开头会引入无关实现。本变更按实际声明接口的公开头平铺实现,并消除无意义的私有函数转发层。 - 将原 instr_impl 目录重组为 90 个实现头:memory_base_impl 下 26 个、reg_base_impl 公共部分 45 个、npu_arch_3510 专用部分 19 个。共享工具实现保留为 utils_impl.h。 - 将 asc_copy_l0c2ub、asc_copy_gm2ub_align、asc_copy_ub2gm_align、asc_copy_l0c2gm、asc_copy_l0c2l1 的131个公共实现重载移动到3510专用头;保留已有24个废弃重载,公共头按架构宏包含对应专用头。 - 公开头只直接包含同名 *_intf_impl.h。reg_base_impl 公共头通过 #if defined(__NPU_ARCH__) && (__NPU_ARCH__ == 3510) 包含同名专用头,专用头不反向包含公共接口实现头;为三个 composite 接口增加公共分发入口。 - 架构专用头统一在公共头顶部包含;去掉 cache_ctrl、spr 公共函数外围的3510限制。asc_set_atomic_none 直接调用 set_atomic_none,消除对公共头后续定义的依赖。 - reg_addr_reg 的公共接口和3510旧接口直接调用 vag_*,保留AIV保护、非AIV默认返回和废弃标记;移除12个宏生成的_impl转发重载,消除顶部include的声明顺序依赖。 - memory_base_impl 和 reg_base_impl 移除重复的 *_impl 私有转发层,基础接口直接实现底层指令调用,保留必要的参数及返回值适配,以及实际承担同步分发职责的辅助函数。公开声明、重载和原有架构支持范围保持不变。 - composite 接口直接组合底层指令,删除对非 sync 接口实现头的冗余依赖;utils_impl.h 已实现的同步和 mask 辅助操作复用现有工具函数,保留原有条件执行语义。 - 为 sync composite 接口补齐与对应基础操作一致的 AIC/AIV 保护,计算和同步一起受保护,避免在非目标核执行同步。 - 清理 composite 中的34组冗余作用域和多余空行,合并4处重复临时变量并保留地址更新语义。storeunalign composite 恢复 asc_get_vf_len 查询及所需 sys_var.h 依赖,零偏移参数直接使用0。 - 90 个实现头沿用原有 #warning、保护顺序和 UNDEF_ASCENDC_C_API_INCLUDE_COMPILER_INTERNAL_HEADERS_ASCENDC 清理标记,按新路径调整防重复包含宏和警告路径。 - 按实际依赖删除冗余 defs.h 和 utils_impl.h 引用,保留宏及工具函数所需依赖;清理仅有接口名的注释和 49 个空 __asc_aicore 命名空间块,保留有实际内容的命名空间及算法、参数和约束说明。新增或更名的实现头使用 2026 年版权信息。 - 同步最新 master,解决旧 vector_compute_impl.h 的修改/删除冲突,将上游三个 asc_sub_relu_sync 重载的同步修复迁移到新的 memory_base_impl/vector_compute_composite_intf_impl.h。 - 更新目录文档和已有测试引用;classify_rule.yaml 中旧路径的调整保持在本 PR 中。 - 清理22个实现头中的330行冗余、悬空或重复分类注释及多余空行;删除memory_base_impl/vector_datamove_intf_impl.h中已无使用点的两组默认值宏及其重复定义、清理代码,保留硬件位域、使用约束和废弃替代说明。 - 删除两个vector_permute_sel实现头中未调用的ASC_TRANSTO5HD_B8_CALL宏,移除reg_permute_sel对storeunalign实现头的冗余包含,合并两个leakyrelu_sync重载的重复mask恢复,清理两条不准确的storeunalign分类注释。 - 合并master提交4511da2b149ba2bc29d1143a5e21742777199592,解决14个旧聚合头修改/删除冲突,将主线1,414处废弃标记调整迁移到扁平实现;保留接口和底层实现,旧instr_impl目录不恢复。 - sys_var.h先包含defs.h再包含架构实现,确保废弃标记宏在实现使用前定义,支持2201/3510独立包含该公开头。 - 同步master 2abedf248的回退变更:memory/reg的utils统一引用恢复后的impl/utils/sys_macros.h,保留主线恢复的两个兼容入口头。 ## 关联的Issue 无。 ## 测试 接口迁移后已完成公开入口及实现头语法编译、接口对比。本次格式修复使用与CI一致的clang-format 18.1.8,调整两处vadds调用的参数换行,无非空白字符变更;UT、安装目录和重复包含结果来自此前验证。 - 对比主线提交 83f55b37a8ad61662b97a61ce2646f6c660b64df:74个公开头、90个新实现头与659个旧实现头核对,2201/3510公开声明和公开实现新增、删除均为0;122个架构/公开头组合中6,178条原有接口引用关系保持可达。 - 2201/3510 host、单头模式及 device 公开头编译:174 项通过。 - 90项实现头依赖语法编译全部通过(先提供公开入口的基础定义,3510专用头通过公共头引入,不要求裸impl独立包含)。宏展开核对仅剩8个必要同步分发helper。 - 此前87项公开入口重复包含和临时宏清理检查通过。 - 此前四组C API CPU/mock UT共5,057项通过,覆盖2201/3510的AIC/AIV;本次未重跑。 - 此前全新安装目录下5项入口编译通过,无源码C API头回退。 - 本次对150个相关代码文件执行clang-format 18.1.8,格式修复后dry-run和pre-commit clang-format均通过。空白、EOF、YAML、大文件、冲突标记、私钥、拼写和OAT hook通过;无适用文件的JSON、ruff检查跳过。 - 本地完整pre-commit的Markdown检查因已有文档链接 http://optipng.sourceforge.net/ 网络不可达未通过;未修改该无关文档或检查配置,远端检查结果需以新提交CI为准。 - 最近的注释和无用宏清理已通过22个文件的clang-format 18.1.8及git diff --check;逐文件剔除注释、空白和指定无用宏后与修改前一致,未改动函数实现;本轮未重跑编译或UT。 - 合并后全量对照master 4511da2b1及原目录6ee902416:公开声明/实现无新增或缺失,原有6,178条入口匹配关系保留;90个实现头语法检查通过。四组CPU/mock UT重新构建后5,057项全部通过。 - sys_var.h包含顺序修复后,重新执行全部174项公开入口语法检查,174项全部通过,之前6项sys_var独立包含失败已消除;clang-format 18.1.8和git diff --check通过。本次仅调整包含顺序,未重复运行UT。 - 再次同步master 2abedf248后,含恢复的兼容入口在内共178项公开入口语法检查全部通过;90个实现头的包含路径和保护宏静态检查通过,相关文件clang-format检查通过。 - 未运行真实 NPU 测试。上述检查不将原有跨架构的声明/实现差异判定为新增缺陷,也不删除这些接口。 ## 文档更新 更新中英文 C API 贡献指南、目录结构说明以及已有 C API UT 目录映射,说明公共入口、架构专用实现与必要辅助函数的组织方式。 ## 类型标签 - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5773 | 1 个月前 | |
增加warning和宏保护 Co-authored-by: JC1126<jiangchao69@h-partners.com> # message auto-generated for no-merge-commit merge: !5453 merge jc_082806 into master 增加warning和宏保护 Created-by: JC1126 Commit-by: JC1126 Merged-by: cann-robot Description: ## 描述 增加warning和宏保护 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5453 | 1 个月前 | |
bugfix:修复bfloat162e1m2x2及bfloat162e2m1x2传参问题 Co-authored-by: yiming0671<zhangyiming69@huawei.com> # message auto-generated for no-merge-commit merge: !6724 merge master into master bugfix:修复bfloat162e1m2x2及bfloat162e2m1x2传参问题 Created-by: yiming0671 Commit-by: yiming0671 Merged-by: cann-robot Description: ## 描述 1、修复bfloat162e1m2x2及bfloat162e2m1x2传参问题。 2、对_merge接口需求进行澄清,去除多余接口。 3、废弃接口置于文件末尾。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6724 | 8 天前 | |
refactor: 按公开接口头平铺 C API 实现并简化调用层 Co-authored-by: lihuaichao<lihuaichao1@huawei.com> # message auto-generated for no-merge-commit merge: !5773 merge capi_impl_refactor into master refactor: 按公开接口头平铺 C API 实现并简化调用层 Created-by: lihuaichao Commit-by: lihuaichao Merged-by: cann-robot Description: ## 描述 C API 原实现使用多层聚合头,公开头会引入无关实现。本变更按实际声明接口的公开头平铺实现,并消除无意义的私有函数转发层。 - 将原 instr_impl 目录重组为 90 个实现头:memory_base_impl 下 26 个、reg_base_impl 公共部分 45 个、npu_arch_3510 专用部分 19 个。共享工具实现保留为 utils_impl.h。 - 将 asc_copy_l0c2ub、asc_copy_gm2ub_align、asc_copy_ub2gm_align、asc_copy_l0c2gm、asc_copy_l0c2l1 的131个公共实现重载移动到3510专用头;保留已有24个废弃重载,公共头按架构宏包含对应专用头。 - 公开头只直接包含同名 *_intf_impl.h。reg_base_impl 公共头通过 #if defined(__NPU_ARCH__) && (__NPU_ARCH__ == 3510) 包含同名专用头,专用头不反向包含公共接口实现头;为三个 composite 接口增加公共分发入口。 - 架构专用头统一在公共头顶部包含;去掉 cache_ctrl、spr 公共函数外围的3510限制。asc_set_atomic_none 直接调用 set_atomic_none,消除对公共头后续定义的依赖。 - reg_addr_reg 的公共接口和3510旧接口直接调用 vag_*,保留AIV保护、非AIV默认返回和废弃标记;移除12个宏生成的_impl转发重载,消除顶部include的声明顺序依赖。 - memory_base_impl 和 reg_base_impl 移除重复的 *_impl 私有转发层,基础接口直接实现底层指令调用,保留必要的参数及返回值适配,以及实际承担同步分发职责的辅助函数。公开声明、重载和原有架构支持范围保持不变。 - composite 接口直接组合底层指令,删除对非 sync 接口实现头的冗余依赖;utils_impl.h 已实现的同步和 mask 辅助操作复用现有工具函数,保留原有条件执行语义。 - 为 sync composite 接口补齐与对应基础操作一致的 AIC/AIV 保护,计算和同步一起受保护,避免在非目标核执行同步。 - 清理 composite 中的34组冗余作用域和多余空行,合并4处重复临时变量并保留地址更新语义。storeunalign composite 恢复 asc_get_vf_len 查询及所需 sys_var.h 依赖,零偏移参数直接使用0。 - 90 个实现头沿用原有 #warning、保护顺序和 UNDEF_ASCENDC_C_API_INCLUDE_COMPILER_INTERNAL_HEADERS_ASCENDC 清理标记,按新路径调整防重复包含宏和警告路径。 - 按实际依赖删除冗余 defs.h 和 utils_impl.h 引用,保留宏及工具函数所需依赖;清理仅有接口名的注释和 49 个空 __asc_aicore 命名空间块,保留有实际内容的命名空间及算法、参数和约束说明。新增或更名的实现头使用 2026 年版权信息。 - 同步最新 master,解决旧 vector_compute_impl.h 的修改/删除冲突,将上游三个 asc_sub_relu_sync 重载的同步修复迁移到新的 memory_base_impl/vector_compute_composite_intf_impl.h。 - 更新目录文档和已有测试引用;classify_rule.yaml 中旧路径的调整保持在本 PR 中。 - 清理22个实现头中的330行冗余、悬空或重复分类注释及多余空行;删除memory_base_impl/vector_datamove_intf_impl.h中已无使用点的两组默认值宏及其重复定义、清理代码,保留硬件位域、使用约束和废弃替代说明。 - 删除两个vector_permute_sel实现头中未调用的ASC_TRANSTO5HD_B8_CALL宏,移除reg_permute_sel对storeunalign实现头的冗余包含,合并两个leakyrelu_sync重载的重复mask恢复,清理两条不准确的storeunalign分类注释。 - 合并master提交4511da2b149ba2bc29d1143a5e21742777199592,解决14个旧聚合头修改/删除冲突,将主线1,414处废弃标记调整迁移到扁平实现;保留接口和底层实现,旧instr_impl目录不恢复。 - sys_var.h先包含defs.h再包含架构实现,确保废弃标记宏在实现使用前定义,支持2201/3510独立包含该公开头。 - 同步master 2abedf248的回退变更:memory/reg的utils统一引用恢复后的impl/utils/sys_macros.h,保留主线恢复的两个兼容入口头。 ## 关联的Issue 无。 ## 测试 接口迁移后已完成公开入口及实现头语法编译、接口对比。本次格式修复使用与CI一致的clang-format 18.1.8,调整两处vadds调用的参数换行,无非空白字符变更;UT、安装目录和重复包含结果来自此前验证。 - 对比主线提交 83f55b37a8ad61662b97a61ce2646f6c660b64df:74个公开头、90个新实现头与659个旧实现头核对,2201/3510公开声明和公开实现新增、删除均为0;122个架构/公开头组合中6,178条原有接口引用关系保持可达。 - 2201/3510 host、单头模式及 device 公开头编译:174 项通过。 - 90项实现头依赖语法编译全部通过(先提供公开入口的基础定义,3510专用头通过公共头引入,不要求裸impl独立包含)。宏展开核对仅剩8个必要同步分发helper。 - 此前87项公开入口重复包含和临时宏清理检查通过。 - 此前四组C API CPU/mock UT共5,057项通过,覆盖2201/3510的AIC/AIV;本次未重跑。 - 此前全新安装目录下5项入口编译通过,无源码C API头回退。 - 本次对150个相关代码文件执行clang-format 18.1.8,格式修复后dry-run和pre-commit clang-format均通过。空白、EOF、YAML、大文件、冲突标记、私钥、拼写和OAT hook通过;无适用文件的JSON、ruff检查跳过。 - 本地完整pre-commit的Markdown检查因已有文档链接 http://optipng.sourceforge.net/ 网络不可达未通过;未修改该无关文档或检查配置,远端检查结果需以新提交CI为准。 - 最近的注释和无用宏清理已通过22个文件的clang-format 18.1.8及git diff --check;逐文件剔除注释、空白和指定无用宏后与修改前一致,未改动函数实现;本轮未重跑编译或UT。 - 合并后全量对照master 4511da2b1及原目录6ee902416:公开声明/实现无新增或缺失,原有6,178条入口匹配关系保留;90个实现头语法检查通过。四组CPU/mock UT重新构建后5,057项全部通过。 - sys_var.h包含顺序修复后,重新执行全部174项公开入口语法检查,174项全部通过,之前6项sys_var独立包含失败已消除;clang-format 18.1.8和git diff --check通过。本次仅调整包含顺序,未重复运行UT。 - 再次同步master 2abedf248后,含恢复的兼容入口在内共178项公开入口语法检查全部通过;90个实现头的包含路径和保护宏静态检查通过,相关文件clang-format检查通过。 - 未运行真实 NPU 测试。上述检查不将原有跨架构的声明/实现差异判定为新增缺陷,也不删除这些接口。 ## 文档更新 更新中英文 C API 贡献指南、目录结构说明以及已有 C API UT 目录映射,说明公共入口、架构专用实现与必要辅助函数的组织方式。 ## 类型标签 - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5773 | 1 个月前 | |
同步ascend960相关代码 Co-authored-by: Ekoxier<husizhe@huawei.com> Co-authored-by: hyolee<lihongbo14@huawei.com> Co-authored-by: maohaodi<maohaodi@huawei.com> Co-authored-by: xumengxuan<xumengxuan2@huawei.com> Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> Co-authored-by: zhangjiru<zhangjiru1@huawei.com> # message auto-generated for no-merge-commit merge: !6755 merge adapt_121 into master 同步ascend960相关代码 Created-by: maohaodi Commit-by: maohaodi;Ekoxier;zhangjiru;xumengxuan;hyolee;zhangfeifan0709 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 同步ascend960相关代码,包括basic_api, c_api, tensor_api等,不含adv_api ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6755 | 8 天前 | |
同步ascend960相关代码 Co-authored-by: Ekoxier<husizhe@huawei.com> Co-authored-by: hyolee<lihongbo14@huawei.com> Co-authored-by: maohaodi<maohaodi@huawei.com> Co-authored-by: xumengxuan<xumengxuan2@huawei.com> Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> Co-authored-by: zhangjiru<zhangjiru1@huawei.com> # message auto-generated for no-merge-commit merge: !6755 merge adapt_121 into master 同步ascend960相关代码 Created-by: maohaodi Commit-by: maohaodi;Ekoxier;zhangjiru;xumengxuan;hyolee;zhangfeifan0709 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 同步ascend960相关代码,包括basic_api, c_api, tensor_api等,不含adv_api ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6755 | 8 天前 | |
同步ascend960相关代码 Co-authored-by: Ekoxier<husizhe@huawei.com> Co-authored-by: hyolee<lihongbo14@huawei.com> Co-authored-by: maohaodi<maohaodi@huawei.com> Co-authored-by: xumengxuan<xumengxuan2@huawei.com> Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> Co-authored-by: zhangjiru<zhangjiru1@huawei.com> # message auto-generated for no-merge-commit merge: !6755 merge adapt_121 into master 同步ascend960相关代码 Created-by: maohaodi Commit-by: maohaodi;Ekoxier;zhangjiru;xumengxuan;hyolee;zhangfeifan0709 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 同步ascend960相关代码,包括basic_api, c_api, tensor_api等,不含adv_api ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6755 | 8 天前 | |
feat: 补充2201 Cube C API接口 Co-authored-by: zhangjiru<zhangjiru1@huawei.com> # message auto-generated for no-merge-commit merge: !5736 merge feat/a2a3-matrix-load-api-upstream into master feat: 补充2201 Cube C API接口 Created-by: leozjr Commit-by: zhangjiru Merged-by: cann-robot Description: ## 描述 补齐 Atlas A2 训练/推理系列产品支持的 2201 Cube C API 实现。 - 新增 asc_disable_hf32、asc_set_l0c_copy_config 和 asc_set_l0c_copy_lrelu_alpha(float)。 - 为 asc_set_l13d_rpt、asc_set_l13d_fmatrix、asc_set_l13d_fmatrix_b 补充参数化 overload。 - 新增 asc_set_gm2l1_padding 和 asc_set_l12l0a_3d_padding 的 2201 实现及类型化 overload。 - 改名接口使用独立的 *_impl.h 文件并由对应架构聚合头显式包含。 - asc_set_l0c_copy_lrelu_alpha 仅提供 float 形式,不迁移旧 half& 形式。 ## 关联的Issue ## 测试 - cmake --build build --target ascendc_ut_c_api_ascend910B1_AIC -j8 - 354 个 2201 AIC C API 测试通过。 - 新增接口聚焦 UT:10 个测试、7 个测试套件全部通过。 - git diff --check 通过。 ## 文档更新 无。 ## 类型标签 - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5736 | 1 个月前 | |
c_api_vector Co-authored-by: xumengxuan<xumengxuan2@huawei.com> # message auto-generated for no-merge-commit merge: !6320 merge c_api_vector into master c_api_vector Created-by: xumengxuan Commit-by: xumengxuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ### 主要改动 - **新增 9201 架构 merge 接口实现: **在 reg_arith_intf_impl.h 中为 asc_add_merge、asc_max_merge、asc_min_merge 提供多种数据类型的重载实现,内部在 ASC_IS_AIV 下以 MODE_MERGING 模式调用底层 vadd/vmax/vmin。 - **扩展架构条件与接口声明: **reg_arith.h 中架构判断由 \_\_NPU_ARCH\_\_ == 3510 改为 3510 || 9201,并新增 asc_add_merge、asc_max_merge、asc_min_merge 的接口声明;reg_arith_intf_impl.h 中新增对 9201 专用实现头文件的按架构条件包含。 - **新增 merge 接口单元测试: **新增 test_asc_add_merge.cpp、test_asc_max_merge.cpp、test_asc_min_merge.cpp,通过宏 TEST_VECTOR_COMPUTE_BINARY_MERGE_INSTR 覆盖多种数据类型,并校验底层调用传入 MODE_MERGING。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6320 | 11 天前 | |
增加warning和宏保护 Co-authored-by: JC1126<jiangchao69@h-partners.com> # message auto-generated for no-merge-commit merge: !5453 merge jc_082806 into master 增加warning和宏保护 Created-by: JC1126 Commit-by: JC1126 Merged-by: cann-robot Description: ## 描述 增加warning和宏保护 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5453 | 1 个月前 | |
增加warning和宏保护 Co-authored-by: JC1126<jiangchao69@h-partners.com> # message auto-generated for no-merge-commit merge: !5453 merge jc_082806 into master 增加warning和宏保护 Created-by: JC1126 Commit-by: JC1126 Merged-by: cann-robot Description: ## 描述 增加warning和宏保护 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5453 | 1 个月前 | |
feat: 9201架构新增类型转换C API接口(half2int8/half2int4x2/bfloat162exmy及asc_cast/asc_cast_merge) Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> # message auto-generated for no-merge-commit merge: !6189 merge feat/9201-reg-convert into master feat: 9201架构新增类型转换C API接口(half2int8/half2int4x2/bfloat162exmy及asc_cast/asc_cast_merge) Created-by: zhangfeifan0709 Commit-by: zhangfeifan0709 Merged-by: cann-robot Description: ## 描述 ### 变更概述 本PR为 **9201 架构(a6)** 新增 reg_compute 类型转换 C API 接口及配套指令级 UT,共引入 **190 个转换接口重载(172 void + 18 return)与 1 个类型别名 vector_fp8_e6m2_t**,提供「专用命名」与「泛型命名(asc_cast/asc_cast_merge)」两套语义等价的接口;全部新增声明统一纳入 ASC_DEVKIT_VERSION_NUM >= 90200000 版本宏门控,并已 rebase 至最新 master 解决合并冲突。 ### 新增接口明细 #### 1. 专用命名接口(104 个重载,类型与舍入/饱和模式编入函数名) **half → int8 合并写入(20 重载)** - asc_half2int8_{rd,rn,rna,ru,rz}{,_sat}_merge(MODE_MERGING,mask=false 处保留 dst 原值) - 舍入 {RD,RN,RNA,RU,RZ} × 饱和 {无后缀, _sat} × 位置 {EVEN,ODD},底层指令 vcvt **half → int4x2 合并写入(40 重载)** - asc_half2int4x2_{rd,rn,rna,ru,rz}{,_sat}_merge - 舍入 ×5 × 饱和 ×2 × 位置 {DISPERSE_FIRST/SECOND/THIRD/FOURTH_QUARTER},底层指令 vcvt_f162s4(PART_P0~P3) **bfloat16 → FP8 系列(44 重载)** | 转换方向 | 接口名 | 形态 | 重载数 | 底层指令 | |---|---|---|---|---| | bf16→e4m3 | asc_bfloat162e4m3_rn{,_sat} | void+return × EVEN/ODD | 8 | vcvt | | bf16→e4m3 | asc_bfloat162e4m3_rn{,_sat}_merge | void × EVEN/ODD | 4 | vcvt | | bf16→e5m2 | asc_bfloat162e5m2_rn{,_sat} | void+return × EVEN/ODD | 8 | vcvt | | bf16→e5m2 | asc_bfloat162e5m2_rn{,_sat}_merge | void × EVEN/ODD | 4 | vcvt | | bf16→e6m2 | asc_bfloat162e6m2_rn | void+return × EVEN/ODD | 4 | vcvt_bf162e6m2(无饱和参数) | | bf16→e8m0 | asc_bfloat162e8m0_{ru,rz}{,_sat} | void+return × EVEN/ODD | 16 | vcvt_bf162e8m0 | 其中 e6m2 为 9201 新增目标类型,配套在 include/c_api/defs/type.h 新增类型别名 vector_fp8_e6m2_t = vector_f8e6m2。 #### 2. 泛型命名接口(86 个重载,舍入/饱和/位置通过模板参数区分) 统一签名形态: cpp __simd_callee__ inline void asc_cast[_merge]( vector_<dst>& dst, vector_<src> src, vector_bool mask, std::integral_constant<asc_cast_round_mode, ...> round_mode, std::integral_constant<asc_cast_saturation_mode, ...> saturation_mode, // e6m2 无此项 std::integral_constant<asc_position(_quarter)_mode, ...> dst_pos); **asc_cast_merge(68 重载,全新接口族,通用层此前无任何 merge 版 cast)** | 转换方向 | 重载数 | 参数空间 | 底层指令 | |---|---|---|---| | half→int4x2 | 40 | 舍入{RD,RN,RNA,RU,RZ} × 饱和{NO_SAT,SAT} × 位置{4×QUARTER} | vcvt_f162s4 | | half→int8 | 20 | 舍入×5 × 饱和×2 × 位置{EVEN,ODD} | vcvt | | bf16→e4m3 | 4 | RN × 饱和×2 × 位置{EVEN,ODD} | vcvt | | bf16→e5m2 | 4 | RN × 饱和×2 × 位置{EVEN,ODD} | vcvt | **asc_cast(18 重载,既有接口族新增 9201 专属类型组合)** | 转换方向 | 重载数 | 参数空间 | 底层指令 | |---|---|---|---| | bf16→e4m3 | 4 | RN × 饱和×2 × EVEN/ODD | vcvt | | bf16→e5m2 | 4 | RN × 饱和×2 × EVEN/ODD | vcvt | | bf16→e6m2 | 2 | RN(无饱和参数)× EVEN/ODD | vcvt_bf162e6m2 | | bf16→e8m0 | 8 | {RU,RZ} × 饱和×2 × EVEN/ODD | vcvt_bf162e8m0 | 两套命名接口已程序化核验:86 个 void 重载严格一一对应,每个配对发出的底层 vcvt* 指令(含全部参数)逐字符一致;cast 族不提供返回值形态,是用户视角的唯一差异。舍入模式 → 指令参数映射:RD→ROUND_F、RN→ROUND_R、RNA→ROUND_A、RU→ROUND_C、RZ→ROUND_Z;饱和 → RS_ENABLE/RS_DISABLE;位置 → PART_EVEN/PART_ODD、PART_P0~P3。 ### 版本宏门控与冲突解决 - include/c_api/reg_compute/reg_convert.h 中 190 个新增声明整体置于 #if (ASC_DEVKIT_VERSION_NUM >= 90200000) 门控块,vector_fp8_e6m2_t 别名同步纳入门控(include/c_api/defs/type.h),避免影响 9.2.0 之前版本的编译兼容性 - 分支已 rebase 至最新 master 并解决 reg_convert.h 的合并冲突(声明区块重排,接口集合不变) ### 配套改动 | 文件 | 变动 | |---|---| | impl/c_api/reg_base_impl/npu_arch_9201/reg_convert_intf_impl.h | 新建(1901 行),190 个重载的完整实现,仅 9201 架构 | | impl/c_api/reg_base_impl/reg_convert_intf_impl.h | 新增 __NPU_ARCH__ == 9201 impl 分发包含;5 处过时注释清理 | | include/c_api/asc_simd.h、include/c_api/asc_reg_vector.h | 入口条件编译 3510 扩展为 3510 \|\| 9201,修复 9201 下 reg_compute 接口链不可达 | | tests/api/c_api/stub/cce_stub.h | 补齐 Fp8e6m2T/vector_f8e6m2 类型与 vcvt(f8e4m3/e5m2←bf16)、vcvt_bf162e6m2、vcvt_bf162e8m0 stub(仅 UT 环境) | ### 设计决策 1. **merging 接口仅提供 void 形态**:单返回值重载中 dst 为函数内新定义的 vector,merging 模式下目标位置外的值无意义,无业务场景 2. **merging 后缀命名 _merge**:语义明确,区别于 MODE_ZEROING 常规写入(mask=false 处写 0) 3. **双套命名并存**:专用命名直观易查,泛型命名适配模板/泛型调用场景,二者指令级等价 ## 关联的Issue 无 ## 测试 新增 tests/api/c_api/npu_arch_9201/utils/test_vcvt_instr_utils.h(指令级 UT 框架宏)与 8 个测试文件,mockcpp 指令级 mock,**190 个用例与 190 个新重载 1:1 对应**: | 测试文件 | 用例 | 覆盖 | |---|---|---| | test_asc_half2int4x2.cpp | 40 | 10 API × 4 quarter 位置 | | test_asc_half2int8.cpp | 20 | 10 API × EVEN/ODD | | test_asc_bfloat162e4m3.cpp | 12 | rn/rn_sat(void+return)+ merge | | test_asc_bfloat162e5m2.cpp | 12 | 同上 | | test_asc_bfloat162e6m2.cpp | 4 | rn × EVEN/ODD(void+return) | | test_asc_bfloat162e8m0.cpp | 16 | ru/rz × sat × EVEN/ODD | | test_asc_cast.cpp | 18 | 泛型 asc_cast 全部重载 | | test_asc_cast_merge.cpp | 68 | 泛型 asc_cast_merge 全部重载 | 测试结果: - [x] 9201(ascend960dt_AIV)UT 190/190 通过 - [x] 3510(ascend950pr_9599_AIV)回归通过(版本宏门控下该架构无行为变化) - [x] 2201(ascend910B1_AIV)回归通过 - [x] 全部改动文件 clang-format 合规(线上 pre-commit 格式检查已对齐) ## 文档更新 无独立文档更新,接口以头文件声明为准。 ## 类型标签 - [x] ✨ feat: 新功能 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!6189 | 12 天前 | |
feat: 9201架构新增类型转换C API接口(half2int8/half2int4x2/bfloat162exmy及asc_cast/asc_cast_merge) Co-authored-by: zhangfeifan0709<zhangfeifan7@huawei.com> # message auto-generated for no-merge-commit merge: !6189 merge feat/9201-reg-convert into master feat: 9201架构新增类型转换C API接口(half2int8/half2int4x2/bfloat162exmy及asc_cast/asc_cast_merge) Created-by: zhangfeifan0709 Commit-by: zhangfeifan0709 Merged-by: cann-robot Description: ## 描述 ### 变更概述 本PR为 **9201 架构(a6)** 新增 reg_compute 类型转换 C API 接口及配套指令级 UT,共引入 **190 个转换接口重载(172 void + 18 return)与 1 个类型别名 vector_fp8_e6m2_t**,提供「专用命名」与「泛型命名(asc_cast/asc_cast_merge)」两套语义等价的接口;全部新增声明统一纳入 ASC_DEVKIT_VERSION_NUM >= 90200000 版本宏门控,并已 rebase 至最新 master 解决合并冲突。 ### 新增接口明细 #### 1. 专用命名接口(104 个重载,类型与舍入/饱和模式编入函数名) **half → int8 合并写入(20 重载)** - asc_half2int8_{rd,rn,rna,ru,rz}{,_sat}_merge(MODE_MERGING,mask=false 处保留 dst 原值) - 舍入 {RD,RN,RNA,RU,RZ} × 饱和 {无后缀, _sat} × 位置 {EVEN,ODD},底层指令 vcvt **half → int4x2 合并写入(40 重载)** - asc_half2int4x2_{rd,rn,rna,ru,rz}{,_sat}_merge - 舍入 ×5 × 饱和 ×2 × 位置 {DISPERSE_FIRST/SECOND/THIRD/FOURTH_QUARTER},底层指令 vcvt_f162s4(PART_P0~P3) **bfloat16 → FP8 系列(44 重载)** | 转换方向 | 接口名 | 形态 | 重载数 | 底层指令 | |---|---|---|---|---| | bf16→e4m3 | asc_bfloat162e4m3_rn{,_sat} | void+return × EVEN/ODD | 8 | vcvt | | bf16→e4m3 | asc_bfloat162e4m3_rn{,_sat}_merge | void × EVEN/ODD | 4 | vcvt | | bf16→e5m2 | asc_bfloat162e5m2_rn{,_sat} | void+return × EVEN/ODD | 8 | vcvt | | bf16→e5m2 | asc_bfloat162e5m2_rn{,_sat}_merge | void × EVEN/ODD | 4 | vcvt | | bf16→e6m2 | asc_bfloat162e6m2_rn | void+return × EVEN/ODD | 4 | vcvt_bf162e6m2(无饱和参数) | | bf16→e8m0 | asc_bfloat162e8m0_{ru,rz}{,_sat} | void+return × EVEN/ODD | 16 | vcvt_bf162e8m0 | 其中 e6m2 为 9201 新增目标类型,配套在 include/c_api/defs/type.h 新增类型别名 vector_fp8_e6m2_t = vector_f8e6m2。 #### 2. 泛型命名接口(86 个重载,舍入/饱和/位置通过模板参数区分) 统一签名形态: cpp __simd_callee__ inline void asc_cast[_merge]( vector_<dst>& dst, vector_<src> src, vector_bool mask, std::integral_constant<asc_cast_round_mode, ...> round_mode, std::integral_constant<asc_cast_saturation_mode, ...> saturation_mode, // e6m2 无此项 std::integral_constant<asc_position(_quarter)_mode, ...> dst_pos); **asc_cast_merge(68 重载,全新接口族,通用层此前无任何 merge 版 cast)** | 转换方向 | 重载数 | 参数空间 | 底层指令 | |---|---|---|---| | half→int4x2 | 40 | 舍入{RD,RN,RNA,RU,RZ} × 饱和{NO_SAT,SAT} × 位置{4×QUARTER} | vcvt_f162s4 | | half→int8 | 20 | 舍入×5 × 饱和×2 × 位置{EVEN,ODD} | vcvt | | bf16→e4m3 | 4 | RN × 饱和×2 × 位置{EVEN,ODD} | vcvt | | bf16→e5m2 | 4 | RN × 饱和×2 × 位置{EVEN,ODD} | vcvt | **asc_cast(18 重载,既有接口族新增 9201 专属类型组合)** | 转换方向 | 重载数 | 参数空间 | 底层指令 | |---|---|---|---| | bf16→e4m3 | 4 | RN × 饱和×2 × EVEN/ODD | vcvt | | bf16→e5m2 | 4 | RN × 饱和×2 × EVEN/ODD | vcvt | | bf16→e6m2 | 2 | RN(无饱和参数)× EVEN/ODD | vcvt_bf162e6m2 | | bf16→e8m0 | 8 | {RU,RZ} × 饱和×2 × EVEN/ODD | vcvt_bf162e8m0 | 两套命名接口已程序化核验:86 个 void 重载严格一一对应,每个配对发出的底层 vcvt* 指令(含全部参数)逐字符一致;cast 族不提供返回值形态,是用户视角的唯一差异。舍入模式 → 指令参数映射:RD→ROUND_F、RN→ROUND_R、RNA→ROUND_A、RU→ROUND_C、RZ→ROUND_Z;饱和 → RS_ENABLE/RS_DISABLE;位置 → PART_EVEN/PART_ODD、PART_P0~P3。 ### 版本宏门控与冲突解决 - include/c_api/reg_compute/reg_convert.h 中 190 个新增声明整体置于 #if (ASC_DEVKIT_VERSION_NUM >= 90200000) 门控块,vector_fp8_e6m2_t 别名同步纳入门控(include/c_api/defs/type.h),避免影响 9.2.0 之前版本的编译兼容性 - 分支已 rebase 至最新 master 并解决 reg_convert.h 的合并冲突(声明区块重排,接口集合不变) ### 配套改动 | 文件 | 变动 | |---|---| | impl/c_api/reg_base_impl/npu_arch_9201/reg_convert_intf_impl.h | 新建(1901 行),190 个重载的完整实现,仅 9201 架构 | | impl/c_api/reg_base_impl/reg_convert_intf_impl.h | 新增 __NPU_ARCH__ == 9201 impl 分发包含;5 处过时注释清理 | | include/c_api/asc_simd.h、include/c_api/asc_reg_vector.h | 入口条件编译 3510 扩展为 3510 \|\| 9201,修复 9201 下 reg_compute 接口链不可达 | | tests/api/c_api/stub/cce_stub.h | 补齐 Fp8e6m2T/vector_f8e6m2 类型与 vcvt(f8e4m3/e5m2←bf16)、vcvt_bf162e6m2、vcvt_bf162e8m0 stub(仅 UT 环境) | ### 设计决策 1. **merging 接口仅提供 void 形态**:单返回值重载中 dst 为函数内新定义的 vector,merging 模式下目标位置外的值无意义,无业务场景 2. **merging 后缀命名 _merge**:语义明确,区别于 MODE_ZEROING 常规写入(mask=false 处写 0) 3. **双套命名并存**:专用命名直观易查,泛型命名适配模板/泛型调用场景,二者指令级等价 ## 关联的Issue 无 ## 测试 新增 tests/api/c_api/npu_arch_9201/utils/test_vcvt_instr_utils.h(指令级 UT 框架宏)与 8 个测试文件,mockcpp 指令级 mock,**190 个用例与 190 个新重载 1:1 对应**: | 测试文件 | 用例 | 覆盖 | |---|---|---| | test_asc_half2int4x2.cpp | 40 | 10 API × 4 quarter 位置 | | test_asc_half2int8.cpp | 20 | 10 API × EVEN/ODD | | test_asc_bfloat162e4m3.cpp | 12 | rn/rn_sat(void+return)+ merge | | test_asc_bfloat162e5m2.cpp | 12 | 同上 | | test_asc_bfloat162e6m2.cpp | 4 | rn × EVEN/ODD(void+return) | | test_asc_bfloat162e8m0.cpp | 16 | ru/rz × sat × EVEN/ODD | | test_asc_cast.cpp | 18 | 泛型 asc_cast 全部重载 | | test_asc_cast_merge.cpp | 68 | 泛型 asc_cast_merge 全部重载 | 测试结果: - [x] 9201(ascend960dt_AIV)UT 190/190 通过 - [x] 3510(ascend950pr_9599_AIV)回归通过(版本宏门控下该架构无行为变化) - [x] 2201(ascend910B1_AIV)回归通过 - [x] 全部改动文件 clang-format 合规(线上 pre-commit 格式检查已对齐) ## 文档更新 无独立文档更新,接口以头文件声明为准。 ## 类型标签 - [x] ✨ feat: 新功能 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!6189 | 12 天前 | |
增加warning和宏保护 Co-authored-by: JC1126<jiangchao69@h-partners.com> # message auto-generated for no-merge-commit merge: !5453 merge jc_082806 into master 增加warning和宏保护 Created-by: JC1126 Commit-by: JC1126 Merged-by: cann-robot Description: ## 描述 增加warning和宏保护 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5453 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 3 天前 | ||
| 12 天前 | ||
| 8 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 1 个月前 |