news 2026/5/9 13:12:29

CANN/ops-fft:FFT算子库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ops-fft:FFT算子库

ops-fft

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

🔥 最新动态

  • [2026/03] 实现完整的 Plan 管理机制,支持 Plan 创建、执行、销毁全生命周期
  • [2026/03] 新增rfft1_d算子,支持实数到复数的一维 FFT
  • [2026/03] 建立完整的测试框架,支持单元测试、自动化测试统计
  • [2026/03] 实现标准化的打包流程,生成 .run 安装包,支持 install/uninstall/upgrade 完整生命周期管理

🚀 概述

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

主要特性

  • 双层架构- API 层提供易用接口,算子层实现高性能计算
  • 模块化设计- 支持动态添加算子模块,每个算子独立开发和测试
  • 标准 CMake 构建- 跨平台编译支持,统一的构建流程
  • 完整测试体系- 基于自定义测试框架,支持自动化测试
  • 便捷打包- 一键生成 .run 安装包,支持完整生命周期管理

📝 版本配套

当前仓库已验证通过的 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=rfft1_d # 编译并运行测试 ./build.sh --run # 编译并打包成 .run 文件 ./build.sh --pkg # 查看完整帮助信息 ./build.sh --help

安装

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

📖 项目说明

API 接口实现

完整的接口实现状态请参考 接口实现文档。

已实现的接口(7 个):

类别接口功能
Plan 创建aclfftCreate创建空的 FFT Plan 句柄
Plan 创建aclfftPlan1d创建并初始化一维 FFT Plan
Plan 初始化aclfftMakePlan1d初始化一维 FFT Plan
执行接口aclfftExecR2C执行实数到复数的一维 FFT
Plan 管理aclfftDestroy销毁 FFT Plan 并释放资源
Plan 管理aclfftSetStream设置 Plan 的执行流
工具接口aclfftGetErrorString获取错误码的描述字符串

支持的算子

当前支持的算子列表:

算子名称描述状态
rfft1_d一维实数FFT运算✅ 已实现

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

SoC 支持矩阵

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

🔍 目录结构

ops-fft/ ├── cmake/ # CMake 配置文件 │ ├── func.cmake # 公共函数(算子注册等) │ ├── init_env.cmake # 环境初始化 │ ├── package.cmake # 打包配置 │ ├── makeself_built_in.cmake # 打包脚本 │ ├── variables.cmake # 变量定义 │ └── third_party/ # 第三方 CMake 模块 │ └── makeself-fetch.cmake ├── docs/ # 文档目录 │ ├── README.md # 文档导航 │ ├── implementation.md # 接口实现状态文档 │ └── zh/ # 中文文档 │ ├── op_list.md # 算子列表 │ ├── context/ # 背景与环境 │ │ ├── build.md # 编译参数说明 │ │ ├── dir_structure.md # 目录结构说明 │ │ └── quick_install.md # 快速安装指南 │ ├── debug/ # 调试相关 │ │ └── op_debug_prof.md # 算子调试与 Profiling │ ├── develop/ # 开发指南 │ │ ├── operator_development_guide.md # 算子开发指南 │ │ └── test_writing_guide.md # 测试编写指南 │ └── invocation/ # 调用示例 │ └── quick_op_invocation.md ├── include/ # 公共头文件 │ └── cann_ops_fft.h # API 头文件 ├── lib/ # API 层实现 │ ├── fft_plan_api.cpp # Plan 创建接口 │ ├── fft_plan_init_api.cpp # Plan 初始化接口 │ ├── fft_exec_api.cpp # FFT 执行接口 │ ├── fft_plan_destroy_api.cpp # Plan 销毁接口 │ ├── fft_stream_api.cpp # 流管理接口 │ ├── fft_utils_api.cpp # 工具接口 │ ├── fft_error.h # 错误处理 │ ├── fft_handle_impl.h # Plan 内部实现 │ └── CMakeLists.txt ├── scripts/ # 脚本目录 │ ├── check_build_dependencies.py # 构建依赖检查 │ ├── generate_version_info.py # 版本信息生成 │ └── package/ # 打包相关脚本 │ ├── common/ # 公共打包工具 │ ├── latest_manager/ # 版本管理脚本 │ ├── module/ # 模块配置(XML) │ ├── ops_fft/ # ops-fft 安装脚本 │ └── package.py # 打包入口 ├── src/ # 算子层实现 │ ├── rfft1_d/ # Rfft1_d 算子(Cooley-Tukey) │ │ ├── rfft1_d.cpp # Host + Kernel 实现 │ │ ├── rfft1_d.h # 算子接口 │ │ ├── arch35/ # 架构特定代码 │ │ │ ├── rfft1_d_fast.h │ │ │ └── rfft1_d_tilingdata.h │ │ ├── tests/ # 算子测试 │ │ │ ├── rfft1_d_test.h │ │ │ └── rfft1_d_test.cpp │ │ └── CMakeLists.txt │ └── CMakeLists.txt ├── tests/ # 测试框架 │ ├── test_common.h # 测试框架头文件 │ ├── test_common.cpp # 测试框架实现 │ ├── all_tests.cpp.in # 测试入口模板 │ └── CMakeLists.txt ├── build.sh # 编译脚本 ├── CHANGELOG.md # 版本变更记录 ├── classify_rule.yaml # 文件分类规则 ├── CMakeLists.txt # 主 CMake 配置 ├── CONTRIBUTING.md # 贡献指南 ├── install_deps.sh # 依赖安装脚本 ├── LICENSE # 许可证 ├── OAT.xml # 许可证扫描配置 ├── QUICKSTART.md # 快速入门文档 ├── requirements.txt # Python 依赖列表 ├── SECURITY.md # 安全声明 ├── Third_Party_Open_Source_Software_List.yaml # 三方软件清单 ├── Third_Party_Open_Source_Software_Notice # 三方软件声明 ├── version.cmake # 版本信息(CMake) └── README.md # 本文件

🛠️ 开发指南

添加新算子

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

  • 完整的目录结构说明
  • Host + Kernel 实现模板
  • Tiling 数据结构定义
  • 完整开发流程

快速开始

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

  2. 编译验证

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

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

添加新接口

如果要添加新的 API 接口:

  1. include/cann_ops_fft.h中声明接口
  2. lib/中创建对应的实现文件(如fft_my_api.cpp
  3. lib/CMakeLists.txt中添加源文件
  4. 编写测试验证功能

编写测试

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

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

💬 相关信息

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

🤝 联系我们

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

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

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

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

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

CANN版本发布管理8.5.0-beta.1

CANN 8.5.0-beta 1 【免费下载链接】release-management CANN版本发布管理仓库 项目地址: https://gitcode.com/cann/release-management 版本地址 CANN 8.5.0-beta 1 版本目录说明如下: ├── aarch64 # CPU为ARM类型 │ ├── ops …

作者头像 李华
网站建设 2026/5/9 13:02:44

CANN运行时组件项目

runtime(运行时) 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 🔥Latest News [2026/4] 支持Ascend 950PR/Ascend 950DT芯片。持续增强AclGraph功能,优…

作者头像 李华
网站建设 2026/5/9 13:02:11

CANN AscendC AlltoAll集合通信API

AlltoAll 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/c…

作者头像 李华
网站建设 2026/5/9 13:01:58

CANN/ascend-transformer-boost PagedAttentionOperation C++ Demo

加速库PagedAttentionOperation C Demo 【免费下载链接】ascend-transformer-boost 本项目是CANN提供的是一款高效、可靠的Transformer加速库,基于华为Ascend AI处理器,提供Transformer定制化场景的高性能融合算子。 项目地址: https://gitcode.com/ca…

作者头像 李华
网站建设 2026/5/9 13:01:04

基于深度学习的淋巴瘤病理诊断AI模型构建实战

1. 项目概述与核心价值最近在病理诊断领域,一个名为“LymphoML”的项目引起了我的注意。这本质上是一个利用人工智能,特别是深度学习技术,通过分析细胞形态学特征来辅助诊断淋巴瘤的模型。作为一名在医疗影像和AI交叉领域摸爬滚打了十多年的从…

作者头像 李华