| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
重构资料目录:c_api 同步接口文档细分为核间同步/核内同步 Co-authored-by: GRJ_XIDUO<guorenjie3@huawei.com> # message auto-generated for no-merge-commit merge: !6116 merge 2026_09_16_spilt_capi_sync into master 重构资料目录:c_api 同步接口文档细分为核间同步/核内同步 Created-by: GRJ_XIDUO Commit-by: GRJ_XIDUO Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 重构:c_api 同步接口文档细分为核间同步/核内同步 ## 关联的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!6116 | 24 天前 | |
c-api add memory vector examples Co-authored-by: lijunjie147<lijunjie147@huawei.com> # message auto-generated for no-merge-commit merge: !5672 merge example into master c-api add memory vector examples Created-by: lijunjie147 Commit-by: lijunjie147 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> c api新增memory矢量计算样例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [x] 🧹 chore: 新增样例 See merge request: cann/asc-devkit!5672 | 27 天前 | |
[Feature] 新增 ELU 算子 C API 样例 Co-authored-by: jingkai-2026<2450453975@qq.com> # message auto-generated for no-merge-commit merge: !4825 merge feat/elu into master [Feature] 新增 ELU 算子 C API 样例 Created-by: jingkai-2026 Commit-by: jingkai-2026 Merged-by: cann-robot Description: ## 描述 CANN 社区任务「ELU 算子开发」:基于 Ascend C **C API** 接口,开发纯 **Vector-Core** 的 ELU(Exponential Linear Unit)激活算子,全程禁止调用 Cube-Core 单元;功能逻辑与官方算子库 ops-nn activation/elu 完全对齐。 在 examples/02_simd_c_api/03_c_api/02_reg_vector_compute/elu/ 下新增 ELU 算子样例(与同目录既有算子文件结构对齐,共 6 个文件): | 文件 | 说明 | | --- | --- | | elu.asc | 算子实现 + Host 调用 + 精度验证(含 44 项内置自测) | | CMakeLists.txt | 编译工程(dav-3510,npu 模式) | | data_utils.h | 输入输出数据文件读写工具 | | scripts/gen_data.py | 测试输入/真值数据生成脚本 | | README.md / README_en.md | 编译运行与精度验证说明(中/英) | 实现要点: 1. **纯 C API + Vector-Core**:全程使用 asc_* 指令(asc_exp/asc_mul_scalar/asc_add_scalar/asc_gt_scalar/asc_select 等),不调用 Cube-Core; 2. **支持 float / float16**:elu_custom / elu_custom_half,同一套计算链(vector_float/b32 掩码 与 vector_half/b16 掩码); 3. **泛化能力**:段式动态 tiling(MAX_BLOCK_LENGTH=8192 + 核数步长循环 + 动态核数),支持任意合法 shape,UB 永不超限; 4. **与官方 elu 对齐**:公式 scale·x / α·scale·(e^(x·inputScale)-1) 与官方 ops-nn/arch35/elu_dag.h 一致;小 x 处采用 expm1 霍纳级数修正(对齐官方"ex-1 多项式拟合"),fp32 阈值 0.01、fp16 阈值 0.1; 5. **精度标准**:按生态算子开源精度标准判定(混合容差 + matched_ratio≥0.99 + max_abs_error 上限);实测 matched_ratio=1; 6. **kernel 调用**:elu_custom<<<numBlocks, 0, stream>>>,与任务书参考样例 c_api_async_add 一致; 7. **版本兼容**:适配 CANN 9.0.0 ~ 9.1.0(asc_get_vf_len() 为 9.1.0 新增,用常量 VECTOR_LENGTH_BYTES=256 等价替代)。 ## 关联的Issue - 本 PR 为社区任务「ELU 算子开发」的代码交付件(关联任务 Issue,请补充链接)。 - 开发中发现的 4 条易用性问题另建 Issue 提交,链接:[#1406](https://gitcode.com/cann/asc-devkit/issues/1406)。 ## 测试 已在 **CANN 9.0.0 / Ascend 950PR 真机**完成验证: - **全量自测** ./demo --selftest:**44 项全部通过**,退出码 0,输出 [Success] All cases verification passed. - **算子泛化**:11 组 shape(1/31/32/1023/1024/2047/2048/8191/16384/100000/1048575)× fp32/fp16,全部 matched_ratio=1 - **特殊值**:NaN/±Inf/±0 - **参数组合**:8 组(含 alpha=0/scale=0/负 alpha/负 input_scale/大系数) - **边界**:小 x(expm1 修正路径)、空 Tensor - **文件模式** ./demo:fp32/fp16 均 matched_ratio=1, max_abs_error=0 - 精度上限:fp32 最大绝对误差 ≤ 9.5e-7(上限 1e-2);fp16 最大绝对误差 ≤ 0.074(上限 0.1),均满足生态算子开源精度标准。 复现命令: bash cd examples/02_simd_c_api/03_c_api/02_reg_vector_compute/elu mkdir -p build && cd build source /usr/local/Ascend/cann/set_env.sh cmake .. && make -j python3 ../scripts/gen_data.py # 生成测试数据(缺 numpy 可用带 numpy 的解释器) ./demo # 文件模式验证 ./demo --selftest # 全量自测(44 项) ## 文档更新 - 新增 README.md / README_en.md:编译运行与精度验证说明(中/英),章节与同目录既有算子工程对齐。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试(44 项内置自测) - [x] 📝 docs: 文档更新(README.md / README_en.md) - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!4825 | 24 天前 | |
fix_sample_occasional_issue Co-authored-by: gcw_atM8lhjZ<chenhangxin@huawei.com> # message auto-generated for no-merge-commit merge: !6157 merge master into master fix_sample_occasional_issue Created-by: gcw_atM8lhjZ Commit-by: gcw_atM8lhjZ Merged-by: cann-robot Description: ## 描述 修复 03_matrix_compute 下 asc_copy_l0c2gm、asc_copy_l0c2l1、asc_copy_l0c2ub 三个 C-API 样例在压测/循环执行时偶现结果错误的问题(在 K 循环增补跨轮 MTE1→MTE2 事件同步,串行化 L1 缓冲复用)。 K 循环每轮复用同一组 L1 缓冲,下一轮 MTE2 写 L1 与上一轮 MTE1 读 L1 未正确串行化,偶发读到被覆盖数据。 同步作用于 L1 写流水(MTE2),放在当前轮消费完、下一轮加载前的临界点,保证下一轮写 L1 严格晚于上一轮读完 L1;使用事件式同步避免打断其余流水线,独立 EVENT_ID1 收发成对平衡。 ## 关联的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!6157 | 24 天前 | |
c-api add memory vector examples Co-authored-by: lijunjie147<lijunjie147@huawei.com> # message auto-generated for no-merge-commit merge: !5672 merge example into master c-api add memory vector examples Created-by: lijunjie147 Commit-by: lijunjie147 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> c api新增memory矢量计算样例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [x] 🧹 chore: 新增样例 See merge request: cann/asc-devkit!5672 | 27 天前 | |
c-api add memory vector examples Co-authored-by: lijunjie147<lijunjie147@huawei.com> # message auto-generated for no-merge-commit merge: !5672 merge example into master c-api add memory vector examples Created-by: lijunjie147 Commit-by: lijunjie147 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> c api新增memory矢量计算样例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [x] 🧹 chore: 新增样例 See merge request: cann/asc-devkit!5672 | 27 天前 |
C_API样例介绍
概述
本样例介绍了Ascend C C_API的使用方法,包括数据搬运、矩阵计算类API等。
样例列表
| 目录名称 | 功能描述 |
|---|---|
| 00_data_movement | 本样例路径包含了与数据搬运相关的多个C API的样例,展示了数据搬运接口的使用。 |
| 01_memory_vector_compute | 本路径下包含Memory矢量计算样例。 |
| 02_reg_vector_compute | 本路径下包含了与矢量数据计算相关的多个API的样例,基于Reg编程接口实现。 |
| 03_matrix_compute | 本样例路径以Mmad等算子为示例,展示了矩阵计算接口的使用。 |