一、硬件架构抽象:三大核心流

Ascend C 基于硬件抽象架构编程,屏蔽不同昇腾硬件间的差异,核心关注异步指令流、同步信号流、计算数据流三大过程:

(一)三大流协同逻辑

  1. 异步指令流:Scalar 计算单元读取算子指令序列,将 Vector 计算、Matrix 计算、数据搬运指令分别发射到对应单元的指令队列,各单元异步并行执行指令。
  2. 同步信号流:因指令间可能存在依赖关系(如计算需等待数据搬运完成),Scalar 计算单元会向对应单元下发同步指令,确保指令按正确逻辑顺序执行。
  3. 计算数据流:DMA 搬入单元将 Global Memory 数据搬运至 Local Memory,Vector/Cube 计算单元在 Local Memory 上完成计算并写回结果,最后 DMA 搬出单元将结果搬运回 Global Memory。

(二)核心组件功能映射

二、Ascend C 编程范式:流水线式任务处理

(一)范式核心思想

Ascend C 采用流水线式编程范式,将算子核内处理流程拆分为多个流水任务,通过Queue(队列)完成任务间通信与同步,通过Pipe(统一资源管理模块)管理内存、事件等资源,实现 “数据分片并行处理 + 任务流水线协同” 的高效执行模式。

(二)Vector 编程范式:三阶段流程

Vector 编程范式是 Ascend C 中最常用的范式,将算子实现拆分为CopyInComputeCopyOut三个核心阶段:

(三)关键抽象概念

  1. TPosition(逻辑位置):用于表达不同层级的存储位置,隐藏物理硬件差异,常见位置及用途如下:

      2.Tensor(数据载体):Ascend C 中数据的基本操作单元,分为GlobalTensor(对应 Global Memory)和LocalTensor(对应 Local Memory),是 API 调用的直接操作对象。

训练营简介
2025 年昇腾 CANN 训练营第二季,基于 CANN 开源开放全场景,推出 0 基础入门系列、码力全开特辑、开发者案例等专题课程,助力不同阶段开发者快速提升算子开发技能。获得 Ascend C 算子中级认证,即可领取精美证书,完成社区任务更有机会赢取华为手机,平板、开发板等大奖。

报名链接
https://www.hiascend.com/developer/activities/cann20252?tab=overview
 

Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐