ops-tensor
【免费下载链接】ops-tensorops-tensor 是 CANN (Compute Architecture for Neural Networks)算子库中提供张量类计算的基础算子库,采用模块化设计,支持灵活的算子开发和管理。项目地址: https://gitcode.com/cann/ops-tensor
🔥 最新动态
- [2026/04] 新增
tensor_api、Blaze(BasicLinearAlgebraOptimizedEngine)公共模块,分别为算子开发提供张量结构抽象与高性能线性代数加速能力。 - [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.2 | 2026/03/30 | master |
请根据实际 CPU 架构,从上述链接目录中自行选择对应的.run安装包。
toolkit 安装包文件名格式如下:
Ascend-cann-toolkit_${cann_version}_linux-aarch64.runAscend-cann-toolkit_${cann_version}_linux-x86_64.run
安装社区版 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 架构,如aarch64、x86_64。${install_path}:表示指定安装路径,默认安装在/usr/local/Ascend目录。
配置环境变量
安装完成后,请先执行:
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 | 支持状态 |
|---|---|---|
| Ascend950 | ascend950dt_9595 | ✅ 默认支持 |
| Ascend910B | ascend910b3 | ❌ 暂不支持 |
| Ascend910_93 | ascend910_93 | ❌ 暂不支持 |
| Ascend910 | ascend910 | ❌ 暂不支持 |
| Ascend310P | ascend310p | ❌ 暂不支持 |
| Ascend310B | ascend310b | ❌ 暂不支持 |
公共模块
ops-tensor 通过模块化的公共代码为各算子提供统一的基础能力,算子按需调用:
| 模块 | 路径 | 形态 | 简介 |
|---|---|---|---|
tensor_api | include/tensor_api/ | header-only | 底层 Tensor 抽象(Layout / Shape / Coord 等类型与工具),用于在 Kernel 端构建结构化的张量视图 |
Blaze | include/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 数据结构定义
- 解决方案注册机制
- 完整开发流程
快速开始:
- 创建目录
mkdir -p src/my_op/arch35 (可选) mkdir -p src/my_op/tests- 编写算子实现创建
src/my_op/my_op_solution.cpp和src/my_op/my_op_kernel.cpp,包含:
- 解决方案部分:Tiling 计算、内存管理、解决方案注册
- Kernel 部分:核函数实现
- 创建 CMakeLists.txt
register_operator(NAME my_op ARCH_DIR arch35)编写测试(推荐) 参考 测试编写指南
编译验证
./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),仅供参考