Ascend C 硬件架构抽象与编程范式
数学逻辑:明确简化版 Conv2d 的卷积计算规则(如单卷积核、步长为 1),锁定输入输出张量属性(输入 shape [N,C,H,W]、卷积核 shape [K,K]、输出 shape [N,1,H-K+1,W-K+1])。内存与并行规划:分析 Local Memory 与 Global Memory 的数据读写策略,设计并行计算任务拆分方案,处理数据依赖。
一、硬件架构抽象:三大核心流
Ascend C 基于硬件抽象架构编程,屏蔽不同昇腾硬件间的差异,核心关注异步指令流、同步信号流、计算数据流三大过程:
(一)三大流协同逻辑
- 异步指令流:Scalar 计算单元读取算子指令序列,将 Vector 计算、Matrix 计算、数据搬运指令分别发射到对应单元的指令队列,各单元异步并行执行指令。
- 同步信号流:因指令间可能存在依赖关系(如计算需等待数据搬运完成),Scalar 计算单元会向对应单元下发同步指令,确保指令按正确逻辑顺序执行。
- 计算数据流:DMA 搬入单元将 Global Memory 数据搬运至 Local Memory,Vector/Cube 计算单元在 Local Memory 上完成计算并写回结果,最后 DMA 搬出单元将结果搬运回 Global Memory。
(二)核心组件功能映射

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

(三)关键抽象概念
-
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
更多推荐



所有评论(0)