本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix_pull_request Co-authored-by: huangkejie1647<huangkejie3@huawei.com> # message auto-generated for no-merge-commit merge: !1219 merge fix_pull_request into master fix_pull_request Created-by: huangkejie1647 Commit-by: huangkejie1647 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改pr描述模板,方便后续开发 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ✅] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1219 | 7 个月前 | |
Co-authored-by: Lizexin312<lizexin2@huawei.com> # message auto-generated for no-merge-commit merge: !1351 merge lzx_logsoftmax into master LogSoftmaxGrad算子支持Ascend950实现 Created-by: Lizexin312 Commit-by: Lizexin312 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> LogSoftmaxGrad算子支持Ascend950实现 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#910](https://gitcode.com/cann/ops-nn/issues/910) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ttk验证/本地example验证 ## 测试用例 std::vector<int64_t> gradOutputShape = {4, 2}; std::vector<int64_t> outputShape = {4, 2}; std::vector<int64_t> outShape = {4, 2}; void* gradOutputDeviceAddr = nullptr; void* outputDeviceAddr = nullptr; void* outDeviceAddr = nullptr; aclTensor* gradOutput = nullptr; aclTensor* output = nullptr; aclTensor* out = nullptr; std::vector<float> gradOutputHostData = {0, 1, 2, 3, 4, 5, 6, 7}; std::vector<float> outputHostData = {1, 1, 1, 2, 2, 2, 3, 3}; std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; ## 测试结果 result[0] is: -32.619381 result[1] is: -42.492508 result[2] is: -30.619381 result[3] is: -115.224899 result[4] is: -84.6686 result[5] is: -113.224899 result[6] is: -235.026443 result[7] is: -314.368591 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1351 | 6 个月前 | |
change log Co-authored-by: 丛吉钰<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !1925 merge kernel into master change log Created-by: cong-jiyu Commit-by: 丛吉钰 Merged-by: cann-robot Description: ## 描述 修改并行编译时的日志打印 ## 关联的Issue [#1103](https://gitcode.com/cann/ops-nn/issues/1103) ## 测试 本地编译rm -rf build;bash build.sh --pkg --soc=ascend950 -j64 --ops=mat_mul_v3 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 日志变更 See merge request: cann/ops-nn!1925 | 6 个月前 | |
matmul类算子#include "kernel_basic_intf.h"头文件兼容性适配,适配8.5版本及以下CANN包并修复qbmmv3 ascend950 kernel ut 编译报错找不到头文件的问题 Co-authored-by: chen-shuai<chenshuai96@huawei.com> # message auto-generated for no-merge-commit merge: !1803 merge fix_pkg_compatibility into master matmul类算子#include "kernel_basic_intf.h"头文件兼容性适配,适配8.5版本及以下CANN包并修复qbmmv3 ascend950 kernel ut 编译报错找不到头文件的问题 Created-by: chen-shuai Commit-by: chen-shuai Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> #include "kernel_basic_intf.h"在8.5版本CANN包下编译报错,找不到头文件。使用宏让代码兼容低版本CANN包,在低版本CANN包下仍使用#include "kernel_operator.h"头文件修复该问题。 并修改matmul/common/cmct/utils/layout_utils.h头文件路径、修复qbmmv3 ascend950 kernel ut 编译报错找不到头文件。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/985 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ascend910b、ascend950等平台编译出包验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1803 | 6 个月前 | |
noaicpu option is supported Co-authored-by: zihan0007<mazihan1@huawei.com> # message auto-generated for no-merge-commit merge: !1753 merge master into master noaicpu option is supported Created-by: zihan0007 Commit-by: zihan0007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 问题背景:不需要用到毕昇编译器的场景,因为构建时并没有安装毕昇编译器的任何东西,但aicpu因为涉及device侧运行,需要用到毕昇的交叉工具链,所以会报错工具链找不到。 解决方案:用--noaicpu参数选项,在构建aicpu算子的时候进行kernel隔离。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1015](https://gitcode.com/cann/ops-nn/issues/1015) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 线上ci编译验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1753 | 6 个月前 | |
【DX_kernel】【aclnn】cleancode Co-authored-by: y00799046<yuxin5@huawei.com> # message auto-generated for no-merge-commit merge: !1920 merge cleancode into master 【DX_kernel】【aclnn】cleancode Created-by: yuxin5 Commit-by: y00799046 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 卷积反向算子DX的kernel和aclnn通路编程规范缺陷修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/1061 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟+本地自验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1920 | 6 个月前 | |
【DOC】del op_api_list_new Co-authored-by: zhangyuxiang0119<zhangyuxiang21@huawei.com> # message auto-generated for no-merge-commit merge: !1984 merge doc/del/oplist into master 【DOC】del op_api_list_new Created-by: zhangyuxiang0119 Commit-by: zhangyuxiang0119 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 删除多余的aclnn资料 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #1096 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 删除了op_new_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1984 | 6 个月前 | |
fast_kernel_launch_example 文档更新 Co-authored-by: yangyang016<yangyang306@hisilicon.com> # message auto-generated for no-merge-commit merge: !1902 merge fast_kernel_launch_docs into master fast_kernel_launch_example 文档更新 Created-by: yangyang016 Commit-by: yangyang016 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> fast_kernel_launch_example 文档更新 对README文档进行了全面的重构与内容增强。核心修改包括:更新了更具描述性的项目标题,新增了项目简介以突出其技术优势;详细重构了环境部署和安装步骤,明确了操作路径和构建规则;在“快速开始”和“开发指南”章节中,补充了代码示例注释、算子分发机制解释,并细化了新增算子的步骤,增加了编译参数参考链接和提升代码健壮性的设备上下文保护说明。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> https://gitcode.com/cann/ops-nn/blob/master/examples/fast_kernel_launch_example/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1902 | 6 个月前 | |
【DOC】fix invalid link Co-authored-by: zhangyuxiang0119<zhangyuxiang21@huawei.com> # message auto-generated for no-merge-commit merge: !1865 merge doc/fix/link into master 【DOC】fix invalid link Created-by: zhangyuxiang0119 Commit-by: zhangyuxiang0119 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复readme和doc里无效的跳转链接 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1865 | 6 个月前 | |
modified the md files (for readability improvement) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !1794 merge master_md into master modified the md files (for readability improvement) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 modified the md files (for readability improvement) ## 关联的Issue NA ## 测试 NA ## 文档更新 md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1794 | 6 个月前 | |
update EmbeddingHashTableApplyAdamW ReadMe Co-authored-by: 张磊<zhanglei121@huawei.com> # message auto-generated for no-merge-commit merge: !1772 merge master into master update EmbeddingHashTableApplyAdamW ReadMe Created-by: zl_hw Commit-by: 张磊 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1772 | 6 个月前 | |
fix | 6 个月前 | |
change nll_loss_grad attr ignore_index to int64 Co-authored-by: wei-peng-1991<weipeng19@huawei.com> # message auto-generated for no-merge-commit merge: !1997 merge master into master change nll_loss_grad attr ignore_index to int64 Created-by: wei-peng-1991 Commit-by: wei-peng-1991 Merged-by: cann-robot Description: ## 描述 修复NLLLossGrad算子代码中ignore_index参数的数据类型不一致问题,统一改为int64_t ## 关联的Issue 关联Issue [#1105](https://gitcode.com/cann/ops-nn/issues/1105) ## 测试 跑了david冒烟和david st用例 ## 文档更新 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1997 | 6 个月前 | |
fix bmm trans nd nullptr Co-authored-by: 丛吉钰<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !1953 merge fixnullptr into master fix bmm trans nd nullptr Created-by: cong-jiyu Commit-by: 丛吉钰 Merged-by: cann-robot Description: ## 描述 修复错误场景拦截失效。 ## 关联的Issue [#1095](https://gitcode.com/cann/ops-nn/issues/1095) <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 异常场景不会出现coredump ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1953 | 6 个月前 | |
Norm类算子资料补充 Co-authored-by: 镜心<wangyungfei@h-partners.com> # message auto-generated for no-merge-commit merge: !1894 merge norm into master Norm类算子资料补充 Created-by: mirror-center Commit-by: 镜心 Merged-by: cann-robot Description: ## 描述 本次PR对多个算子的API文档进行了全面的重构和优化,旨在解决原有文档结构松散、参数说明不清晰、示例代码格式不规范等问题。主要涉及GatherV2、aclnnEmbeddingRenorm、aclnnLinalgVectorNorm和aclnnNorm算子,通过提升文档的结构化程度、可读性和规范性,为开发者提供更准确、易用的接口使用指导。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1894 | 6 个月前 | |
Modify the aclnn issues Co-authored-by: zhouwenfang<zhouwenfang3@h-partners.com> # message auto-generated for no-merge-commit merge: !1955 merge master into master Modify the aclnn issues Created-by: zhouwenfang Commit-by: zhouwenfang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1955 | 6 个月前 | |
fix | 6 个月前 | |
fix magic numbers usage Co-authored-by: suyueming<suyueming@huawei.com> # message auto-generated for no-merge-commit merge: !1932 merge master into master fix magic numbers usage Created-by: su-yueming Commit-by: suyueming Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改不合理的魔鬼数字 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码优化 See merge request: cann/ops-nn!1932 | 6 个月前 | |
add bidirection_lstm,bidirection_lstmv2 example Co-authored-by: LSYlsy0214<liushiyu25@h-partners.com> # message auto-generated for no-merge-commit merge: !1909 merge master into master add bidirection_lstm,bidirection_lstmv2 example Created-by: LSYlsy0214 Commit-by: LSYlsy0214 Merged-by: cann-robot Description: ## 描述 bidirection_lstm,bidirection_lstmv2缺少example示例 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/1060 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1909 | 6 个月前 | |
change log Co-authored-by: 丛吉钰<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !1925 merge kernel into master change log Created-by: cong-jiyu Commit-by: 丛吉钰 Merged-by: cann-robot Description: ## 描述 修改并行编译时的日志打印 ## 关联的Issue [#1103](https://gitcode.com/cann/ops-nn/issues/1103) ## 测试 本地编译rm -rf build;bash build.sh --pkg --soc=ascend950 -j64 --ops=mat_mul_v3 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 日志变更 See merge request: cann/ops-nn!1925 | 6 个月前 | |
删除ut的冗余代码 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !2003 merge master into master 删除ut的冗余代码 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 op_api ut代码框架存在冗余代码,需要删除 1. empty_adump.cpp未使用,直接删除无影响 2. empty_runtime.cpp为空代码文件,主要防止单算子无相关代码报错,ut目录有同样的文件可以代替,该文件可以删除 ## 关联的Issue [#1108](https://gitcode.com/cann/ops-nn/issues/1108) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!2003 | 6 个月前 | |
modulategrad 示例代码补充 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !1901 merge modulate into master modulategrad 示例代码补充 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 modulateGrad需要新增示例代码 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/503](https://gitcode.com/cann/ops-nn/issues/503) ## 测试 #include <iostream> #include <vector> #include <random> #include <algorithm> #include "acl/acl.h" #include "aclnnop/aclnn_modulate_grad.h" #define CHECK_RET(cond, return_expr) \ do { \ if (!(cond)) { \ return_expr; \ } \ } while (0) #define LOG_PRINT(message, ...) \ do { \ printf(message, ##__VA_ARGS__); \ } while (0) constexpr size_t MEMORY_ALIGNMENT = 32; int64_t GetShapeSize(const std::vector<int64_t>& shape) { int64_t shapeSize = 1; for (auto i : shape) { shapeSize *= i; } return shapeSize; } void* AlignedMalloc(size_t size) { size_t aligned_size = (size + MEMORY_ALIGNMENT - 1) / MEMORY_ALIGNMENT * MEMORY_ALIGNMENT; void* ptr = nullptr; auto ret = aclrtMalloc(&ptr, aligned_size, ACL_MEM_MALLOC_HUGE_FIRST); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Aligned aclrtMalloc failed. ERROR: %d\n", ret); return nullptr); return ptr; } void PrintOutResult(const std::vector<int64_t>& shape, void* deviceAddr, const std::string& name) { auto size = GetShapeSize(shape); std::vector<float> resultData(size, 0); auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(float), deviceAddr,size * sizeof(float), ACL_MEMCPY_DEVICE_TO_HOST); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy %s from device to host failed. ERROR:%d\n", name.c_str(), ret); return ); int print_count = std::min(static_cast<int64_t>(10),size); LOG_PRINT("%s (first %d elements):\n", name.c_str(), print_count); for (int64_t i = 0; i < print_count; i++) { LOG_PRINT("[%ld]: %f\n", i, resultData[i]); } } int Init(int32_t deviceId, aclrtStream* stream) { // 固定写法,资源初始化 auto ret = aclInit(nullptr); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclInit failed. ERROR: %d\n", ret); return ret); ret = aclrtSetDevice(deviceId); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSetDevice failed. ERROR: %d\n", ret); return ret); ret = aclrtCreateStream(stream); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtCreateStream failed. ERROR: %d\n", ret); return ret); return 0; } template <typename T> int CreateInputTensor(const std::vector<T>& hostData, const std::vector<int64_t>& shape, void** deviceAddr, aclDataType dataType, aclTensor** tensor) { auto size = GetShapeSize(shape) * sizeof(T); *deviceAddr = AlignedMalloc(size); CHECK_RET(*deviceAddr != nullptr, LOG_PRINT("AlignedMalloc failed for input tensor\n"); return -1); auto ret = aclrtMemcpy(*deviceAddr, size, hostData.data(), size, ACL_MEMCPY_HOST_TO_DEVICE); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtMemcpy failed. ERROR: %d\n", ret); return ret); *tensor = aclCreateTensor(shape.data(), shape.size(), dataType, nullptr, 0, aclFormat::ACL_FORMAT_ND,shape.data(), shape.size(), *deviceAddr); CHECK_RET(*tensor != nullptr, LOG_PRINT("aclCreateTensor failed\n"); return -1); return 0; } template <typename T> int CreateOutputTensor(const std::vector<int64_t>& shape, void** deviceAddr, aclDataType dataType, aclTensor** tensor) { auto size = GetShapeSize(shape) * sizeof(T); *deviceAddr = AlignedMalloc(size); CHECK_RET(*deviceAddr != nullptr, LOG_PRINT("AlignedMalloc failed for output tensor\n"); return -1); *tensor = aclCreateTensor(shape.data(), shape.size(), dataType, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(),shape.size(), *deviceAddr); CHECK_RET(*tensor != nullptr, LOG_PRINT("aclCreateTensor failed\n"); return -1); return 0; } std::vector<float> GenerateRandomData(int64_t size, float min = -1.0f, float max = 1.0f) { std::vector<float> data(size); std::random_device rd; std::mt19937 gen(rd()); std::uniform_real_distribution<float> dis(min, max); for (int64_t i = 0; i < size; i++) { data[i] = dis(gen); } return data; } int main(){ int32_t deviceId = 1; aclrtStream stream; auto ret = Init(deviceId, &stream); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret); std::vector<int64_t> grad_outputShape = {2,3,4}; std::vector<int64_t> inputShape = {2,3,4}; std::vector<int64_t> scaleShape = {2,4}; std::vector<int64_t> shiftShape = {2,4}; std::vector<int64_t> grad_inputShape = {2,3,4}; std::vector<int64_t> grad_scaleShape = {2,4}; std::vector<int64_t> grad_shiftShape = {2,4}; int64_t grad_outputSize = GetShapeSize(grad_outputShape); int64_t inputSize = GetShapeSize(inputShape); int64_t scaleSize = GetShapeSize(scaleShape); int64_t shiftSize = GetShapeSize(shiftShape); std::vector<float> grad_outputHostData(24,2); std::vector<float> inputHostData(24,2); std::vector<float> scaleHostData(8,2); std::vector<float> shiftHostData(8,2); void* grad_outputDeviceAddr = nullptr; void* inputDeviceAddr = nullptr; void* scaleDeviceAddr = nullptr; void* shiftDeviceAddr = nullptr; void* grad_inputDeviceAddr = nullptr; void* grad_scaleDeviceAddr = nullptr; void* grad_shiftDeviceAddr = nullptr; aclTensor* grad_output = nullptr; aclTensor* input = nullptr; aclTensor* scale = nullptr; aclTensor* shift = nullptr; aclTensor* grad_input = nullptr; aclTensor* grad_scale = nullptr; aclTensor* grad_shift = nullptr; ret = CreateInputTensor(grad_outputHostData, grad_outputShape, &grad_outputDeviceAddr, aclDataType::ACL_FLOAT, &grad_output); CHECK_RET(ret == ACL_SUCCESS, return ret); ret = CreateInputTensor(inputHostData, inputShape, &inputDeviceAddr, aclDataType::ACL_FLOAT, &input); CHECK_RET(ret == ACL_SUCCESS, return ret); ret = CreateInputTensor(scaleHostData, scaleShape, &scaleDeviceAddr, aclDataType::ACL_FLOAT, &scale); CHECK_RET(ret == ACL_SUCCESS, return ret); ret = CreateInputTensor(shiftHostData, shiftShape, &shiftDeviceAddr, aclDataType::ACL_FLOAT, &shift); CHECK_RET(ret == ACL_SUCCESS, return ret); ret = CreateOutputTensor<float>(grad_inputShape, &grad_inputDeviceAddr, aclDataType::ACL_FLOAT, &grad_input); CHECK_RET(ret == ACL_SUCCESS, return ret); ret = CreateOutputTensor<float>(grad_scaleShape, &grad_scaleDeviceAddr, aclDataType::ACL_FLOAT, &grad_scale); CHECK_RET(ret == ACL_SUCCESS, return ret); ret = CreateOutputTensor<float>(grad_shiftShape, &grad_shiftDeviceAddr, aclDataType::ACL_FLOAT, &grad_shift); CHECK_RET(ret == ACL_SUCCESS, return ret); uint64_t workspaceSize = 0; aclOpExecutor* executor; ret = aclnnModulateBackwardGetWorkspaceSize(grad_output, input, scale, shift, grad_input, grad_scale, grad_shift, &workspaceSize, &executor); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnModulateBackwardGetWorkspaceSize failed. ERROR: %d\n", ret); return ret); void* workspaceAddr = nullptr; if (workspaceSize > 0) { workspaceAddr = AlignedMalloc(workspaceSize); CHECK_RET(workspaceAddr != nullptr, LOG_PRINT("allocate workspace failed\n"); return -1); } ret = aclnnModulateBackward(workspaceAddr,workspaceSize, executor, stream); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnModulateBackward failed. ERROR: %d\n", ret); return ret); ret = aclrtSynchronizeStream(stream); CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); PrintOutResult(grad_inputShape, grad_inputDeviceAddr, "grad_input"); PrintOutResult(grad_scaleShape, grad_scaleDeviceAddr, "grad_scale"); PrintOutResult(grad_shiftShape, grad_shiftDeviceAddr, "grad_shift"); aclDestroyTensor(grad_output); aclDestroyTensor(input); aclDestroyTensor(scale); aclDestroyTensor(shift); aclDestroyTensor(grad_input); aclDestroyTensor(grad_scale); aclDestroyTensor(grad_shift); aclrtFree(grad_outputDeviceAddr); aclrtFree(inputDeviceAddr); aclrtFree(scaleDeviceAddr); aclrtFree(shiftDeviceAddr); aclrtFree(grad_inputDeviceAddr); aclrtFree(grad_scaleDeviceAddr); aclrtFree(grad_shiftDeviceAddr); if (workspaceSize > 0) { aclrtFree(workspaceAddr); } aclrtDestroyStream(stream); aclrtResetDevice(deviceId); aclFinalize(); return 0; } ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: See merge request: cann/ops-nn!1901 | 6 个月前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !293 merge license into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!293 | 9 个月前 | |
同步编译工程 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !715 merge master into master 同步编译工程 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 同步编译工程 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!715 | 7 个月前 | |
release CHANGELOG.md Co-authored-by: ZitaoWang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !921 merge changelog into master release CHANGELOG.md Created-by: wangzitao_leo Commit-by: ZitaoWang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. add CHANGELOG.md to describe changes of new released version of CANN. ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue #512 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> CHANGELOG.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!921 | 7 个月前 | |
noaicpu option is supported Co-authored-by: zihan0007<mazihan1@huawei.com> # message auto-generated for no-merge-commit merge: !1753 merge master into master noaicpu option is supported Created-by: zihan0007 Commit-by: zihan0007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 问题背景:不需要用到毕昇编译器的场景,因为构建时并没有安装毕昇编译器的任何东西,但aicpu因为涉及device侧运行,需要用到毕昇的交叉工具链,所以会报错工具链找不到。 解决方案:用--noaicpu参数选项,在构建aicpu算子的时候进行kernel隔离。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1015](https://gitcode.com/cann/ops-nn/issues/1015) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 线上ci编译验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1753 | 6 个月前 | |
adjust quick install md Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !1804 merge master into master adjust quick install md Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 完善环境部署中手动安装CANN和源码下载章节 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 不涉及 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已经过评审 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> quick_install.md QUICKSTART.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1804 | 6 个月前 | |
init | 11 个月前 | |
修改OAT.xml 优化license匹配规则 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !1942 merge master into master 修改OAT.xml 优化license匹配规则 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 修改OAT.xml 优化license匹配规则 ## 关联的Issue [#691](https://gitcode.com/cann/ops-nn/issues/691) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:优化工程 See merge request: cann/ops-nn!1942 | 6 个月前 | |
adjust the version of cann software Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !1873 merge master into master adjust the version of cann software Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改环境部署中cann版本说明 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已经过专家检视 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> README.md quick_install.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1873 | 6 个月前 | |
adjust the version of cann software Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !1873 merge master into master adjust the version of cann software Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改环境部署中cann版本说明 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已经过专家检视 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> README.md quick_install.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1873 | 6 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 6 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 6 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 6 个月前 | |
noaicpu option is supported Co-authored-by: zihan0007<mazihan1@huawei.com> # message auto-generated for no-merge-commit merge: !1753 merge master into master noaicpu option is supported Created-by: zihan0007 Commit-by: zihan0007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 问题背景:不需要用到毕昇编译器的场景,因为构建时并没有安装毕昇编译器的任何东西,但aicpu因为涉及device侧运行,需要用到毕昇的交叉工具链,所以会报错工具链找不到。 解决方案:用--noaicpu参数选项,在构建aicpu算子的时候进行kernel隔离。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1015](https://gitcode.com/cann/ops-nn/issues/1015) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 线上ci编译验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1753 | 6 个月前 | |
细化VC7 classify配置 Co-authored-by: SimonZzz<zhouquan79@huawei.com> # message auto-generated for no-merge-commit merge: !1998 merge fixyamla into master 细化VC7 classify配置 Created-by: SimonZzz Commit-by: SimonZzz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 细化VC7 classify配置 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/1106 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1998 | 6 个月前 | |
install deps Co-authored-by: 丛吉钰<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !1096 merge deps into master install deps Created-by: cong-jiyu Commit-by: 丛吉钰 Merged-by: cann-robot Description: ## 描述 检测构建所需依赖,若缺失依赖则根据构建场景提醒 ## 关联的Issue [#592](https://gitcode.com/cann/ops-nn/issues/592) ## 测试 本地删除依赖并调用build.sh主脚本,成功打印提示  ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1096 | 7 个月前 | |
Support the fusionpass es project Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !907 merge pass_cmake_0121 into master Support the fusionpass es project Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增支持FusionPass编译的工程能力,以及UT测试的功能。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/540 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!907 | 7 个月前 | |
软件包依赖关系修改 Co-authored-by: liubo75<liubo75@huawei.com> # message auto-generated for no-merge-commit merge: !1760 merge master into master 软件包依赖关系修改 Created-by: liubo75 Commit-by: liubo75 Merged-by: cann-robot Description: ## 描述 修复了cann-ops-legacy包版本约束格式不一致的问题,并新增了对metadef_version包的最低版本依赖要求。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1760 | 6 个月前 |
ops-nn
🔥Latest News
- [2026/01] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 开源算子支持Ascend 950PR/Ascend 950DT/KirinX90,可以通过CANN Simulator仿真工具开发调试;优化指南类文档,聚焦算子开发指南,明确最小交付件和关键示例代码,针对Ascend/samples仓算子提供迁移本项目的指导;新支持稀疏4:2量化matmul算子,针对稀疏矩阵使能硬件加速能力。
- [2025/11] 新支持算子index_fill、masked_scatter、scatter、tf_scatter_add、fused_cross_entropy_loss_with_max_sum。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-nn项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-nn是CANN (Compute Architecture for Neural Networks)算子库中提供神经网络计算能力的高阶算子库,包括matmul类、activation类等算子,算子库架构图如下:

📝版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
⚡️快速入门
若您希望从零到一了解并快速体验项目,请访问如下文档。可以先了解项目算子信息,再尝试算子调用、开发、贡献等。
-
算子列表:项目全量算子信息,方便快速查询。
-
QuickStart:基于WebIDE或Docker环境提供极简快速上手指南,包括搭建环境、编译部署、算子调用/开发/调试、贡献等。
说明:无论是WebIDE或Docker环境,默认提供最新商发版本CANN软件包,目前是CANN 8.5.0。若您想手动安装CANN包或体验master分支最新能力等,请参考学习教程中的步骤,完成环境搭建、编译执行、算子开发等操作。
📖学习教程
若您已完成快速入门学习,对本项目有了一定认知,并希望深入了解和体验项目,请访问如下文档。
这些文档提供了多样化场景和更全面的操作指导,方便您应用于各种AI业务场景。
- 环境部署:基础环境搭建指南,提供多种场景下CANN软件包安装方法,例如Docker部署、手动安装等。
- 算子调用:算子源码编译和执行指南,提供多种编译算子包以及运行算子的方法(包括执行算子样例和UT)等。
- 算子开发:基于项目工程开发新算子指南,从零学习创建算子工程、实现Tiling和Kernel核心交付件等。
- 算子调试调优:提供常见的算子调试和调优方法,如DumpTensor、msProf、Simulator等。
除了上述指南,还提供了其他文档介绍,例如算子调用方式和流程、算子基本概念等,全量文档介绍请访问docs。
🔍目录结构
关键目录如下,详细目录介绍参见项目目录。
├── activation # activation类算子
├── cmake # 项目工程编译目录
├── common # 项目公共头文件和公共源码
├── control # control类算子
├── conv # conv类算子
├── docs # 项目文档介绍
├── examples # 端到端算子开发和调用示例
├── experimental # 用户自定义算子存放目录
├── foreach # foreach类算子
├── index # index类算子
├── loss # loss类算子
├── matmul # matmul类算子
│ ├── transpose_batch_mat_mul # transpose_batch_mat_mul算子所有交付件,如Tiling、Kernel等
│ │ ├── docs # 算子说明文档
│ │ ├── examples # 算子使用示例
│ │ ├── op_graph # 算子构图相关目录
│ │ ├── op_host # 算子信息库、Tiling、InferShape相关实现目录
│ │ │ └── op_api # 算子aclnn接口实现目录
│ │ ├── op_kernel # 算子Kernel目录
│ │ ├── CMakeLists.txt # 算子编译配置文件
│ │ └── README.md # 算子介绍文档
│ ├── ...
│ └── CMakeLists.txt # 算子编译配置文件
├── ...
├── rnn # rnn类算子
├── scripts # 脚本目录,包含自定义算子、Kernel构建相关配置文件
├── tests # 测试工程目录
├── vfusion # vfusion类算子
├── CMakeLists.txt
├── README.md
├── build.sh # 项目工程编译脚本
├── install_deps.sh # 安装依赖包脚本
└── requirements.txt # 项目需要的第三方依赖包
💬相关信息
🤝联系我们
本项目功能和文档正在持续更新和完善中,建议您关注最新版本。
-
问题反馈:通过GitCode【Issues】提交问题。
-
社区互动:通过GitCode【讨论】参与交流。
-
技术专栏:通过GitCode【Wiki】获取技术文章,如系列化教程、优秀实践等。
技术专题 样例 算子性能优化 MatMul算子性能优化实践与效果分析 算子性能优化 MatMul算子VCV性能优化实践与效果分析