搜索
Appearance
版本
欢迎使用Ascend C进行昇腾AI处理器算子开发。Ascend C不仅致力于开放芯片完备编程能力支撑实现极致性能,同时通过多层级编程API设计,让您能够根据项目需求、团队技能与性能目标,灵活选择最合适的API,在开发效率与运行性能之间取得最佳平衡。
Ascend C以「兼容C/C++标准 · 释放极致算力」为核心设计理念:在严格遵循C/C++语言规范的基础上做最小化语法扩展,让具备C/C++开发基础的开发者可低门槛平滑迁移至昇腾平台,自主释放芯片全部算力潜能。语言同时兼容指针式原生C开发范式与Tensor+Layout现代C++编程模式,在深度支撑算子定制优化的同时,实现与现有C/C++开发生态的无缝衔接,保障跨平台开发体验的一致性。
我们坚持两大核心设计原则:
Ascend C以「兼容标准C/C++语法、最小化语法扩展」为核心设计原则,构建轻量化、高性能的算子编程底层基座,分层提供不同抽象等级的编程接口。
| API层级 | 语言范式 | 核心特性 | 目标用户 | 核心价值 |
|---|---|---|---|---|
| Basic API | C++ | 基于SIMD编程模型,采用无Layout约束的Tensor抽象编程;依托TPipe/TQue框架实现内存调度与执行同步的统一托管 | 通用算子库开发者 | 通过框架自动化完成内存与同步管理,屏蔽底层硬件实现细节,有效降低开发复杂度,提升编程易用性与工程交付效率 |
| Tensor API | C++ | 基于SIMD编程模型,依托Layout代数体系提供携带Layout语义的Tensor抽象;采用arch/atom/algorithm三层解耦的API架构设计 | 高性能算子优化开发者 | 将张量与布局作为一等公民,内置Layout代数运算能力,实现零成本编译抽象;三层解耦设计达成关注点分离,天然具备跨架构可移植性 |
| SIMD C API | C | 基于SIMD编程模型与原生指针编程范式,提供完整C语言级底层可编程能力;支持数组下标式内存访问,内存生命周期与执行同步完全由开发者自主管控 | 极致性能调优开发者 | 完全契合原生C语言开发习惯,支持深度定制内存排布与同步策略;指令级透明映射实现零封装开销,全面开放底层硬件能力,支撑精细化性能调优与极致算力释放 |
| SIMT API | C | 基于业界通用SIMT编程模型,以单线程为基本编程单元,原生支持离散不规则并行计算逻辑 | 不规则场景高性能算子开发者 | 天然适配离散、不规则的并行计算场景,支持业界主流异构开发范式,有效降低跨技术栈迁移成本与学习门槛 |
在底层编程接口体系之上,Ascend C进一步提供算子模板库与高阶API组件,通过沉淀通用开发能力与工程最佳实践,持续降低算子开发门槛,加速算法原型验证与业务落地。
在底层编程接口之上,Ascend C还提供了算子模板库与高阶API组件,沉淀通用开发能力,进一步降低开发门槛,加速算法原型落地:
| 组件层级 | 目标用户 | 核心价值 |
|---|---|---|
| 算子模板库(ATVC/ATVOSS/BLAZE等) | 算法开发人员 | 提供覆盖Vector、Cube等计算范式的典型算子高性能模板实现,支持基于模板的定制化扩展,快速适配业务场景的高性能算力需求,同时沉淀端到端性能优化最佳实践 |
| 高阶API | 算法开发人员 | 封装Softmax、Matmul等通用单核计算算法原语,屏蔽底层硬件实现细节,支撑开发者快速搭建算法逻辑,高效完成功能验证与方案原型落地,缩短从想法到可运行算子的周期 |
此外,联合生态正持续建设Kernel编程C++标准库asc-stl、设备侧线性代数库asc-mathdx等基础组件,不断丰富Ascend C算子编程生态。
Ascend C构建了覆盖不同编程范式的分层接口体系,开发者可结合自身开发习惯与业务场景特征,沿以下路径完成接口选型:
graph TD
A[Ascend C算子开发接口选型路径] --> B[选型维度1:原生指针编程范式 · snake_case命名风格]
A --> C[选型维度2:Tensor抽象编程范式]
B -->|离散/不规则并行计算场景| D[SIMT API]
B -->|规整向量化计算场景| E[SIMD C API]
C -->|需Layout语义 · 自主管控内存与同步 · snake_case命名风格| F[Tensor API]
C -->|无Layout约束 · TPipe/TQue自动化托管 · PascalCase命名风格| G[Basic API]也可结合核心业务诉求,依据以下关键维度进行快速决策:
| 选型维度 | 推荐接口层级 | 选型依据 |
|---|---|---|
| 离散/不规则矢量计算场景 | SIMT API | 充分释放SIMT架构对离散、不规则并行任务的硬件加速优势,同时兼容业界通用SIMT编程范式,降低开发者迁移学习成本 |
| 极致性能调优(指针开发习惯) | SIMD C API | 支持标准C语言指针开发范式,支持内存排布、同步逻辑的全链路自主管控,可最大化挖掘芯片硬件算力,达成极致性能表现 |
| C++ Tensor范式算子开发 | Tensor API | 原生支持带Layout语义的Tensor抽象,通过Layout代数能力简化内存布局管理与索引计算,兼顾开发便捷性与深度性能调优空间 |
| 算法原型快速验证 | 高阶API/算子模板库 | 内置通用单核算法与典型算子的高性能泛化实现,屏蔽底层硬件实现细节,大幅缩短开发周期,提升算法迭代与落地效率 |
核心定义
作为Ascend C语言扩展层的多线程并行编程接口,原生兼容业界主流SIMT编程模型,保障跨技术栈开发体验的一致性,支撑离散不规则计算场景的高性能算子开发。
核心特性
适用场景
参考示例
核心定义
作为Ascend C语言扩展层的向量化编程接口,完全遵循标准C语言开发范式,提供指令级透明的底层可编程能力;支持内存排布与执行同步的全链路自主管控,以零封装开销释放硬件算力,支撑精细化性能调优与极致性能实现。
核心特性
asc_xxx前缀的snake_case命名规范,语义明确、辨识度高,降低开发者理解与接入成本。asc_add(__ubuf__ half* dst, __ubuf__ half* src0, __ubuf__ half* src1, uint32_t count),接口定义直观,调用逻辑简洁。_sync后缀的一体化计算接口(如asc_add_sync(...)),开发者无需显式管控同步时序,即可快速完成功能落地。repeat/stride等控制参数的高级计算接口,支持灵活配置数据访问步长、重复计算模式与内存排布策略,支撑开发者深度定制计算逻辑,充分挖掘硬件算力上限。适用场景
参考示例
核心定义
面向高性能算子深度开发的C++级底层编程接口,以搭载Layout语义的Tensor为核心编程抽象,提供完整的底层硬件可编程能力;支持开发者全自主管控内存分配与执行同步,在支持业界Tensor编程范式的同时,实现硬件算力的深度释放。
核心特性
适用场景
参考示例
核心定义
面向高效开发的轻量化C++编程接口,基于无Layout约束的Tensor抽象构建,依托TPipe/TQue框架实现内存调度与执行同步的全自动化托管,屏蔽底层硬件细节,大幅降低算子开发门槛,提升工程落地效率。
核心特性
适用场景
参考示例
核心定义
面向算法快速迭代的高层封装接口,对深度学习主流单核计算算法进行标准化抽象与性能优化,提供开箱即用的通用算法能力,在保障基础性能的前提下,最大化提升算法验证与原型开发效率。
核心特性
适用场景
参考示例
核心定义
面向深度定制与极致性能优化的算子开发组件库,提供覆盖Vector、Cube等计算范式的典型算子端到端参考实现,以模板化设计支持灵活定制扩展,是特定场景下算子性能优化与工程落地的最佳实践载体。
核心特性
适用场景
参考示例
Ascend C多层级接口设计的核心理念是:让您始终使用最合适的编程范式,而非被动适应单一抽象。无论您是追求极致性能的底层专家,还是希望快速验证算法的原型开发者,都能在Ascend C的层级化API生态中找到得心应手的工具。
立即开始您的算子编程之旅!如有疑问,欢迎参考Ascend C详细文档或社区示例,我们将持续致力于让NPU的强大算力对您触手可及、高效易用。