asc-devkit:本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。

本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。

Branch11Tags0
FilesLast commitLast update
新增docs目录下,文档检查的skill9 days ago
add skill for asc-devkit30 days ago
add skill for asc-devkit30 days ago
Add presmoke runner and validation reports6 days ago
docs: add English translation for power README27 days ago
add skill for asc-devkit30 days ago
feat(devx): improve clangd support for AscendC .asc/.aicpu files1 month ago
算子工程支持自定义so名字7 days ago
【docs】更新归约计算api5 days ago
SIMT:cachehit 图例修正5 days ago
Fix the initial judge in hccl_tiling.cpp5 days ago
【C API】Readme新增样例链接,asc_loadalign新增支持vector_half数据类型6 days ago
Add presmoke runner and validation reports6 days ago
Fix the initial judge in hccl_tiling.cpp5 days ago
增加aclnn自动生成soc兼容性处理6 days ago
feat: pre-commit & update clang-fmt2 months ago
feat(devx): improve clangd support for AscendC .asc/.aicpu files1 month ago
update topic and fix links1 month ago
Add presmoke runner and validation reports6 days ago
fix: 在cpu侧增加对bf16类型的数据校验7 days ago
更新首页Latest News,移动历史News到CHANGELOG.md1 month ago
docs: add English translation for power README27 days ago
use cann-cmake intf_pub12 days ago
Refactor API documentation structure and update contribution guide links4 months ago
docs: add English translation for power README27 days ago
Initial commit6 months ago
Add ut test and block png file for sc.1 month ago
fix readme link17 days ago
修正一些markdown文件的错误3 months ago
docs: add English translation for power README27 days ago
delete json v3.11.3 version2 months ago
bugfix for docs1 month ago
fix: validate build help option combinations25 days ago
fix AIV direct RoCE7 days ago
更新版本号 & 更新文档1 month ago

Ascend C

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

community repo examples asc-tools license contributing SIG

🔥Latest News

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

🚀 关键特性

📖 资料文档

有关所有历史版本及更新的详细信息,请参阅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框架编程API C++ 基于Tensor编程
通过Tpipe/Tque框架统一管理内存与同步
算子库开发者 基于框架自动管理同步与内存,
提升编程易用性
基础API C++ 基于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 语言语法高亮、代码跳转的支持,如有任何建议或改进意见,欢迎社区开发者积极反馈!

📖相关资源

📌相关规划

📝相关信息

Introduction

本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。

Customize my domain