当前位置: 首页 > news >正文

CANN Ascend C算子开发套件

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

Ascend C

基于C/C++构建多层级API,开放芯片完备编程能力,支撑实现极致性能

🔥Latest News

[2026/03] v9.0.0-beta.2 版本关键特性

🚀 关键特性

  • Ascend 950PR支持SIMD编程模式,提供200+ API接口跨代兼容能力,可实现Atlas A2系列产品和Atlas A3系列产品算子平滑迁移。
  • Ascend 950PR新增基于Reg的编程方式,提供Reg数据搬运、基础算术、规约计算、同步控制等90+ Reg编程接口。
  • Atlas A2系列产品、Atlas A3系列产品、Ascend 950PR支持语言扩展层纯C接口,支持数组式内存分配与指针型计算接口,提供原生纯 C 编程体验。
  • Ascend 950PR支持SIMD与SIMT混合编程,提供约700个SIMT API接口,包含warp、atomic、基本数学计算、类型转换等基础接口。
  • Ascend 950PR支持通信高阶API的CCU通信接口,提供基于CCU的Allreduce,Allgather,Reducescatter,AlltoAll等主流通信原语;Matmul高阶API新增支持MXFP4/8低比特数据类型的矩阵运算,实现内存占用减半、算力吞吐倍增。
  • Ascend 950PR新增及兼容支持样例共计约260个,包含SIMT样例、SIMD样例(框架类、基础API、高阶API、最佳实践等),并按照编程模型和样例类别对样例目录结构进行调整,提升样例目录结构的易读性。
  • 融合编译与<<<>>>调用方式支持CPU模式以及SIM仿真模式。

📖 资料文档

  • 新增90+ Reg编程接口API资料,Reg矢量计算API是面向RegBase架构开发的API,用户可通过该API直接对芯片中涉及Vector计算的寄存器进行操作,实现更大的灵活性和更好的性能。
  • 新增SIMT快速入门、编程模型和算子实现介绍。
  • 新增SIMD与SIMT混合编程模型、算子实现、性能优化介绍。
  • 新增SIMT API资料章节。
  • 新增兼容性迁移指南(220x架构版本迁移到351x架构版本)。
  • 昇腾社区中,Ascend C算子开发新增可视化专区,通过视频呈现Cube和Vector算子的执行过程。

有关所有历史版本及更新的详细信息,请参阅CHANGELOG.md

🚀概述

Ascend C是CANN(Compute Architecture for Neural Networks)推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范。作为一门面向多场景的编程语言,Ascend C不仅致力于开放芯片完备编程能力支撑实现极致性能,同时通过多层级编程API设计,让您能够根据项目需求、团队技能与性能目标,灵活选择最合适的API,在开发效率与运行性能之间取得最佳平衡。

设计目标

Ascend C的设计目标可概括为“高性能、完备性、易编程、可调试和兼容性”。其通过对C/C++语言标准进行最小化扩展,既支持基于指针的C语言开发习惯,也支持基于Tensor的C++编程范式,在支撑昇腾算子高效开发的同时,实现与现有生态的无缝衔接,保障开发体验的一致性。

我们秉持以下核心理念:

  • 没有银弹:不同场景对性能、开发效率的要求各异,单一接口无法最优适配所有场景;
  • 渐进式学习:新手可从易用性接口入手快速验证算法;专家则可向下钻取、精细调优,借助复杂接口特性充分挖掘硬件潜能。

API层级

Ascend C提供三类接口,均可实现底层的完备编程能力:

API层级语言特点目标用户主要用途
Tpipe/Tque框架编程APIC++基于Tensor编程
通过Tpipe/Tque框架统一管理内存与同步
算子库开发者基于框架自动管理同步与内存,
提升编程易用性
基础APIC++基于Tensor编程,提供C++基础完备编程能力
通过MakeTensor/LocalMemoryAllocator分配Tensor,自主管理同步
算子库开发者自主管理同步与内存
匹配C++Tensor开发习惯,支撑实现极致性能
语言扩展层
SIMD&SIMT API
C基于指针编程,提供C基础完备编程能力
通过数组[]分配内存,自主管理同步
算子库开发者自主管理同步与内存
匹配C语言开发习惯,支撑实现极致性能

此外,Ascend C提供高阶API和算子模板库以便提升算子开发效率。

API层级目标用户主要用途
算子模板库 (CATLASS/ATVOSS等)算法开发人员基于典型算子实现进行自定义扩展,满足特定场景高性能需求
高阶API算法开发人员复用通用单核算法,快速完成算法验证

其总体逻辑架构图如下所示:

  • 语言扩展层C API:纯C接口,支持数组分配内存、基于指针的计算接口,提供与业界一致的C语言编程体验,并开放芯片完备编程能力。Atlas A2/A3支持SIMD的纯C接口;Ascend 950PR/Ascend 950DT将支持与业界类似的SIMT编程能力、SIMD/SIMT混合编程能力;
  • 基础API:单指令抽象的C++类库API,一般基于Tensor编程;逐步基于Layout完善Tensor编程能力;
  • 高阶API:基于单核对常见算法进行抽象和封装,提供公共算法的实现;
  • 算子模板库:基于模板提供算子的完整实现参考,简化Tiling开发,支持用户自定义扩展;
  • Python前端PyAsc:PyAsc基于Python前端,提供芯片底层完备编程能力,并将逐步基于Layout完善Tensor编程能力,新增SIMT编程等能力,实现基于Python接口开发高性能算子;

如何选择多层级API进行算子开发

  • 基于C/C++语言开发:详细请参考Ascend C多级API选择指南
  • 基于Python语言开发,支撑完备编程能力,实现极致性能:推荐选用Ascend C Python前端PyAsc
  • 基于Python语言开发,快速开发验证,易用性优先:推荐选用 PyPTO

🔍目录结构说明

本仓主要包含Ascend C编程API和必要的cmake编译脚本,是算子开发所需的核心模块,其目录结构如下:

├── cmake # Ascend C 构建源代码 ├── docs # 项目文档介绍 ├── examples # Ascend C API样例工程 ├── impl # Ascend C API接口实现源代码 │ ├── adv_api # Ascend C 高阶API实现源代码 │ ├── aicpu_api # Ascend C AI CPU API实现源代码 │ ├── basic_api # Ascend C 基础API实现源代码 │ ├── c_api # Ascend C 语言扩展层C API实现源代码 │ ├── experimental # Ascend C TENSOR API实现源代码 │ ├── simt_api # Ascend C SIMT API实现源代码 │ └── utils # Ascend C 工具类实现源代码 ├── include # Ascend C API接口声明源代码 │ ├── adv_api # Ascend C 高阶API声明源代码 │ ├── aicpu_api # Ascend C AI CPU API声明源代码 │ ├── basic_api # Ascend C 基础API声明源代码 │ ├── c_api # Ascend C 语言扩展层C API声明源代码 │ ├── experimental # Ascend C TENSOR API声明源代码 │ ├── simt_api # Ascend C SIMT API声明源代码 │ └── utils # Ascend C 工具类声明源代码 ├── scripts # 打包相关脚本 ├── tests # Ascend C API的UT用例 └── tools # Ascend C 工具源代码

⚡️快速入门

若您希望快速体验项目的构建和算子样例的执行,请访问如下文档获取简易教程。

  • 编译构建:介绍搭建环境、编译执行、本地验证等操作。
  • 样例执行:提供算子开发样例,介绍端到端执行样例的方式。

🧰clangd/IDE 支持

  • 安装 clangd(推荐 15+,以Ubuntu操作系统为例)以及VSCode插件clangd

    sudo apt install -y clangd-15
  • 配置本地VSCode的settings.json(示例)

    { "clangd.path": "/usr/bin/clangd", "clangd.arguments": [ "--background-index=0", "--clang-tidy=0" ], "C_Cpp.intelliSenseEngine": "disabled" }
  • 在项目根目录下配置.clangd(示例)完整.clangd文件在本目录下给出,其中涉及 CANN 头文件目录需自行替换实际安装位置,.clangd中默认为/usr/local/Ascend.

    CompileFlags: Add: - "-std=c++17" - "-stdlib=libstdc++" - "-D__NPU_ARCH__=2201" - "-DASCENDC_CPU_DEBUG=1" ... --- If: PathMatch: ".*\\.(asc|aicpu)$" CompileFlags: CompilationDatabase: None Add: - "-x" - "c++" Diagnostics: Suppress: - "attributes_not_allowed" - "decomp_decl_template" - "ignored_attributes" - "unknown_type_name" - "undeclared_var_use" - "invalid_token_after_toplevel_declarator" - "missing_type_specifier" - "typename_nested_not_found" - "redefinition"
  • 重启clangd(VSCode: Command Palette -> "Clangd: Restart language server")

  • 💡 关于 ASC 语言语法高亮、代码跳转的支持,如有任何建议或改进意见,欢迎社区开发者积极反馈!

📖相关资源

  • 编程指南| 文档 | 说明 | |---------|--------| |Ascend C 编程指南|基于昇腾AI硬件,使用Ascend C编写算子程序,开发自定义算子。| |Ascend C 实践参考 | 基于已完成开发的Ascend C算子,介绍如何进一步优化算子性能。 | |Ascend C API列表| Ascend C SIMD&SIMT API,包括语言扩展层C API、C++类库基础API和高阶API| |Ascend C 样例| Ascend C API关键特性介绍样例,包括AICore SIMD&SIMT、AICPU等| |Ascend C 编程指南(鸿蒙)|基于麒麟AI硬件,使用Ascend C编写算子程序,开发自定义算子。|

  • 贡献指南| 文档 | 说明 | |---------|--------| |CANN 社区贡献指南| CANN社区Issue、PR等通用处理流程| |ASC-DevKit贡献指南 | Ascend C API、资料与样例等贡献指南|

  • 其他| 文档 | 说明 | |---------|--------| |Ascend C Meetup材料|Ascend C对外宣传的PPT材料,包括950新增特性等| |Ascend C Wiki|Ascend C技术宣传文章等| |CANN-Learning-Hub|Ascend C算子开发在线全流程教程| |Ascend C Ops Samples|Ascend C 算子如何逐步实现高性能样例仓|

📌相关规划

  • Ascend C Development Roadmap (2026 Q2);

📝相关信息

  • 贡献指南
  • 安全声明
  • 许可证

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

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

http://www.jsqmd.com/news/783932/

相关文章:

  • 2026丽江旅拍婚纱照梯队横评:T0/T1/T2全景拆解,第一名为何无法撼动? - 江湖评测
  • CANN/shmem SIMT远程内存访问示例
  • ru-text:为AI编码助手注入俄语文本质量灵魂的规则引擎
  • Open-Harness:一站式开源AI模型高效推理与微调框架解析
  • CANN/driver DCMI获取设备频率API
  • 98.吃透YOLOv8架构(C2f+解耦头),手把手落地行人检测项目
  • 7个Vlog背景音乐素材宝藏网站,找歌不费劲儿还不侵权 - 拾光而行
  • CANN TensorFlow迭代循环加载
  • 网络安全之 Burp Suite 深度解析与实战
  • 从RTL到可执行:手把手拆解基于FPGA的硬件仿真器前端三步骤(Analyze, Elaboration, Synthesis)
  • 2026年亲测靠谱:3个私藏AIGC降重工具+免费降AI指令,解决论文AI率过高问题 - 降AI实验室
  • 孤舟笔记 JVM篇三 JVM如何判断一个对象可以被回收?可达性分析比引用计数强在哪
  • CANN/pyasc数据连接API文档
  • 低空经济工业互联网中的数字孪生与智能体:IOC与平台协同的演进逻辑
  • ARM系统控制与调试接口:PPU与DAP详解
  • 有限单边响应游戏中的蒙特卡洛反事实遗憾最小化
  • 别再死记硬背API了!图解 LVGL 的“类”(lv_obj_class_t)与“对象”(lv_obj_t)继承体系
  • 别急着重启!Redis突然连不上的5分钟排查手册(附CentOS 7实战命令)
  • 宁波双利再生资源:镇海废旧金属回收推荐几家公司 - LYL仔仔
  • 抖音下载器终极指南:从零开始掌握批量下载与无水印提取
  • ChatGPT如何通过大学计算机安全课程考核?实验揭示AI对教育评估的冲击与机遇
  • 南京情绪障碍心理医院选择:专业机构服务解析 - 品牌排行榜
  • Facebook+Google+INS代运营公司优选,搭配海外市场AI推广平台与一站式出海营销服务商,赋能企业海外布局(附带联系方式) - 品牌2026
  • CANN-Bench直接启动算子示例
  • Godot文档仓库深度解析:从源码构建到高效使用的完整指南
  • 基于AI智能体的Wazuh自主安全运营流水线构建与实战
  • OpenClaw WebDAV插件:为开发工作空间开启跨平台文件访问
  • kafka 消费组内leader选举1 - 小镇
  • AI技能开发实践:将经典方法论转化为可执行的Agent技能
  • CANN/pypto: gcd函数文档