news 2026/5/9 12:58:09

CANN/ops-tensor张量算子库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ops-tensor张量算子库

ops-tensor

【免费下载链接】ops-tensorops-tensor 是 CANN (Compute Architecture for Neural Networks)算子库中提供张量类计算的基础算子库,采用模块化设计,支持灵活的算子开发和管理。项目地址: https://gitcode.com/cann/ops-tensor

🔥 最新动态

  • [2026/04] 新增tensor_apiBlazeBasicLinearAlgebraOptimizedEngine)公共模块,分别为算子开发提供张量结构抽象与高性能线性代数加速能力。
  • [2026/03] 完成项目基础架构搭建,支持 Add 算子实现和测试,支持一键编译、测试和打包。
  • [2026/03] 建立完整的测试框架,支持单元测试、超时控制和自动化测试统计。
  • [2026/03] 实现标准化的打包流程,生成 .run 安装包,支持 install/uninstall/upgrade 完整生命周期管理。

🚀 概述

ops-tensor 是 CANN (Compute Architecture for Neural Networks)算子库中提供张量类计算的基础算子库,采用模块化设计,支持灵活的算子开发和管理。

主要特性

  • 模块化设计- 支持动态添加算子模块,每个算子独立开发、编译和测试
  • 公共模块-tensor_api提供张量结构抽象,Blaze提供高性能线性代数加速能力,作为算子开发的统一基础
  • 标准 CMake 构建- 跨平台编译支持,统一的构建流程
  • 完整测试体系- 基于自定义测试框架,支持自动化测试和超时控制
  • 便捷打包- 一键生成 .run 安装包,支持 install/uninstall/upgrade
  • 版本管理- 安装信息记录和版本追踪,支持升级管理
  • 轻量高效- 简洁的架构设计,避免过度工程化

📝 版本配套

当前仓库已验证通过的 CANN Toolkit 如下:

CANN 版本发布时间分支
CANN 9.0.0-beta.22026/03/30master

请根据实际 CPU 架构,从上述链接目录中自行选择对应的.run安装包。

toolkit 安装包文件名格式如下:

  • Ascend-cann-toolkit_${cann_version}_linux-aarch64.run
  • Ascend-cann-toolkit_${cann_version}_linux-x86_64.run
  1. 安装社区版 CANN Toolkit

    # 确保安装包具有可执行权限 chmod +x Ascend-cann-toolkit_${cann_version}_linux-${arch}.run # 安装命令 ./Ascend-cann-toolkit_${cann_version}_linux-${arch}.run --install --force --install-path=${install_path}
    • ${cann_version}:表示 toolkit 安装包版本号,需满足上文的最低版本要求。
    • ${arch}:表示 CPU 架构,如aarch64x86_64
    • ${install_path}:表示指定安装路径,默认安装在/usr/local/Ascend目录。
  2. 配置环境变量

    安装完成后,请先执行:

    source ${install_path}/cann/set_env.sh

    请将${install_path}替换为 toolkit 的实际安装目录,例如/usr/local/Ascend${HOME}/Ascend

⚡️ 快速入门

编译与测试

详细的 build.sh 参数说明请参考 build 参数说明。

# 编译所有算子(默认 8 线程) ./build.sh # 编译指定算子 ./build.sh --ops=add # 编译并运行测试 ./build.sh --run # 编译并打包成 .run 文件 ./build.sh --pkg # 查看完整帮助信息 ./build.sh --help

安装

# 标准安装(需要 root 权限) sudo ./cann-950-ops-tensor_9.0.0_linux-*.run # 查看安装包信息 ./cann-950-ops-tensor_9.0.0_linux-*.run --help # 安装到自定义路径 sudo ./cann-950-ops-tensor_9.0.0_linux-*.run --install-path=/opt/ascend # 卸载 sudo ./cann-950-ops-tensor_9.0.0_linux-*.run --uninstall # 升级 sudo ./cann-950-ops-tensor_9.0.0_linux-*.run --upgrade

📖 项目说明

支持的算子

当前支持的算子列表:

算子名称描述状态
Add张量加法运算✅ 已实现

更多算子正在持续开发中...

SoC 支持矩阵

SoC 型号SOC_VERSION支持状态
Ascend950ascend950dt_9595✅ 默认支持
Ascend910Bascend910b3❌ 暂不支持
Ascend910_93ascend910_93❌ 暂不支持
Ascend910ascend910❌ 暂不支持
Ascend310Pascend310p❌ 暂不支持
Ascend310Bascend310b❌ 暂不支持

公共模块

ops-tensor 通过模块化的公共代码为各算子提供统一的基础能力,算子按需调用:

模块路径形态简介
tensor_apiinclude/tensor_api/header-only底层 Tensor 抽象(Layout / Shape / Coord 等类型与工具),用于在 Kernel 端构建结构化的张量视图
Blazeinclude/blaze/header-only高性能线性代数加速引擎(BasicLinearAlgebraOptimizedEngine),服务于使用到矩阵乘计算的相关算子(Matmul、GroupedMatmul、MC2 等),提供分层的 Kernel / Block / Tile 抽象与配套 Policy / Epilogue / Utils。详见 include/blaze/README.md

🔍 目录结构

ops-tensor/ ├── cmake/ # CMake 配置文件 │ ├── func.cmake # 公共函数(算子注册等) │ ├── init_env.cmake # 环境初始化 │ ├── variables.cmake # 变量定义 │ ├── package.cmake # 打包配置 │ ├── makeself_built_in.cmake # .run 包生成脚本 │ └── third_party/ # 第三方依赖 ├── include/ # 公共头文件 │ ├── cann_ops_tensor.h # API 头文件 │ ├── cann_ops_tensor_types.h # 类型定义头文件 │ ├── tensor_api/ # 底层 Tensor 抽象(Layout/Shape/Coord 等) │ └── blaze/ # Blaze 高性能线性代数加速引擎 ├── scripts/ # 脚本目录 │ ├── check_build_dependencies.py # 依赖检查脚本 │ ├── generate_version_info.py # 版本信息生成 │ └── package/ # 打包相关脚本 │ ├── common/ # 通用打包工具 │ └── cfg/ # 打包配置 ├── lib/ # 基础设施库(算子开发依赖) │ ├── core/ # 核心模块 │ │ ├── handle.cpp/hpp # 句柄管理 │ │ ├── operation_descriptor.cpp/hpp # 算子描述符 │ │ ├── plan.cpp/hpp # 执行计划 │ │ ├── plan_preference.cpp/hpp # 计划偏好 │ │ └── tensor_descriptor.cpp/hpp # 张量描述符 │ ├── elementwise/ # 元素算子基础实现 │ │ ├── elementwise.cpp/hpp │ │ └── elementwise_binary.cpp/hpp │ ├── utils/ # 工具函数 │ │ ├── type_utils.hpp # 类型工具 │ │ ├── utils.cpp # 通用工具 │ │ └── validation.cpp/hpp # 验证工具 │ └── CMakeLists.txt ├── src/ # 源代码目录 │ ├── add/ # Add 算子实现 │ │ ├── add_solution.cpp # 解决方案实现(Tiling 计算、解决方案注册) │ │ ├── add_kernel.cpp # Kernel 端实现 │ │ ├── arch35/ # 架构特定代码(可选) │ │ │ └── add_struct.h # 数据结构定义(也可定义在 .cpp 中) │ │ ├── tests/ # 算子测试 │ │ │ ├── add_test.h │ │ │ └── add_test.cpp │ │ └── CMakeLists.txt │ ├── ... # 其他算子 │ └── CMakeLists.txt ├── tests/ # 测试框架 │ ├── test_common.h # 测试框架头文件 │ ├── test_common.cpp # 测试框架实现 │ ├── test_elementwise.cpp # 元素算子测试辅助 │ ├── all_tests.cpp.in # 测试入口模板 │ └── CMakeLists.txt ├── build.sh # 编译脚本 ├── install_deps.sh # 依赖安装脚本 ├── CMakeLists.txt # 主 CMake 配置 ├── version.cmake # CMake 版本配置 ├── version.info # 版本信息 └── README.md # 本文件

说明:仓库代码按角色分为三类:

  • 框架代码
    • lib/- 算子运行框架(编译产物),提供句柄、执行计划、算子/张量描述符、参数验证、解决方案注册等基础设施,所有算子链接依赖
  • 公共模块(详见上文「公共模块」小节):
    • include/tensor_api/- 底层 Tensor 抽象(header-only)
    • include/blaze/- 矩阵乘相关算子的高性能加速引擎(header-only),详见include/blaze/README.md
  • 算子目录src/<op>/):
    • <op>_solution.cpp- 解决方案实现(Tiling 计算、内存管理、解决方案注册)
    • <op>_kernel.cpp- Kernel 核函数实现
    • arch35/<op>_struct.h- Tiling 数据结构(可选,也可定义在 solution.cpp 中)
    • arch35/目录是可选的,仅在需要区分不同 SOC 架构时使用
    • tests/目录强烈推荐,但不是必需的

🛠️ 开发指南

添加新算子

详细的算子开发指南请参考 算子开发指南,包括:

  • 完整的目录结构说明
  • 解决方案实现模板
  • Tiling 数据结构定义
  • 解决方案注册机制
  • 完整开发流程

快速开始

  1. 创建目录
mkdir -p src/my_op/arch35 (可选) mkdir -p src/my_op/tests
  1. 编写算子实现创建src/my_op/my_op_solution.cppsrc/my_op/my_op_kernel.cpp,包含:
  • 解决方案部分:Tiling 计算、内存管理、解决方案注册
  • Kernel 部分:核函数实现
  1. 创建 CMakeLists.txt
register_operator(NAME my_op ARCH_DIR arch35)
  1. 编写测试(推荐) 参考 测试编写指南

  2. 编译验证

./build.sh --ops=my_op --run

完整示例参考src/add/目录。

编写测试

ops-tensor 提供了轻量级、自动化的测试框架。详细的测试编写指南请参考 测试编写指南,包括:

  • 测试框架特性
  • 测试文件结构
  • 核心宏和函数说明
  • 完整编写步骤和示例
  • 最佳实践和常见问题

💬 相关信息

  • 许可证: CANN Open Software License Agreement Version 2.0
  • 安全声明: SECURITY.md
  • 贡献指南: CONTRIBUTING.md
  • 所属 SIG: CANN Community

🤝 联系我们

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

  • 问题反馈: 通过 Issues 提交问题
  • 社区互动: 通过 Discussions 参与交流
  • 技术专栏: 通过 Wiki 获取技术文章

【免费下载链接】ops-tensorops-tensor 是 CANN (Compute Architecture for Neural Networks)算子库中提供张量类计算的基础算子库,采用模块化设计,支持灵活的算子开发和管理。项目地址: https://gitcode.com/cann/ops-tensor

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 12:57:32

基于FPGA的医疗AI边缘计算:从模型轻量化到硬件部署实战

1. 项目概述&#xff1a;当AI遇上硬件加速最近几年&#xff0c;AI在医疗影像诊断领域的应用已经不是什么新鲜事&#xff0c;但大多数方案都跑在云端服务器或者高性能GPU上。我们团队当时接到了一个挺有意思的挑战&#xff1a;能不能把一套用于辅助诊断的智能检测系统&#xff0…

作者头像 李华
网站建设 2026/5/9 12:56:56

CANN/ge的AddResource API

AddResource 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前…

作者头像 李华
网站建设 2026/5/9 12:56:47

生活处处有小美好

平凡的生活&#xff0c;藏着数不尽的温柔与小美好。晨起一缕暖阳洒进窗台&#xff0c;吹散一夜慵懒&#xff1b;闲暇时泡上一杯清茶&#xff0c;静静放空思绪&#xff0c;抛开生活里的琐碎烦恼。走在街边能偶遇盛放的花草&#xff0c;晚风拂过带来阵阵清凉。不必追逐远方的繁华…

作者头像 李华
网站建设 2026/5/9 12:54:34

ML/AI教育如何留住人才?专业信心、社会价值与软技能是关键

1. 项目概述&#xff1a;为什么我们需要关注ML/AI学生的“留下来”问题&#xff1f;机器学习与人工智能&#xff0c;这两个词如今几乎成了科技领域的“顶流”。无论是新闻里关于ChatGPT的讨论&#xff0c;还是招聘网站上动辄百万年薪的算法工程师岗位&#xff0c;都在不断强化一…

作者头像 李华
网站建设 2026/5/9 12:53:32

Transformer模型在法律AI中的应用:从BERT理解到GPT生成

1. 项目概述&#xff1a;当法律遇上Transformer几年前&#xff0c;我还在为一个大型律所的项目头疼&#xff0c;团队需要从堆积如山的合同里找出所有涉及“知识产权转让”的条款。当时我们用的是基于规则的关键词匹配&#xff0c;结果要么漏掉一堆变体表述&#xff0c;要么把“…

作者头像 李华
网站建设 2026/5/9 12:52:32

华为CANN/ops-cv AIPP算子文档

Aipp 【免费下载链接】ops-cv 本项目是CANN提供的图像处理、目标检测相关的算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-cv 产品支持情况 产品是否支持 Ascend 950PR/Ascend 950DT √ Atlas A3 训练系列产品/Atlas A3 推理系…

作者头像 李华