已合并
simd_abstract_hardware_architecture #141
simd_abstract_hardware_architecture #141
已合并
ChenZhoujie创建于 6月13日
ChenZhoujie
6月13日

描述

在test分支上补充抽象硬件架构的课程

关联的Issue

测试

资料检视

文档更新

tutorials/ascendc_operator_development_V2/03_programming_model/03.03.01_simd_abstract_hardware_architecture_intro.ipynb

类型标签

  • Bug修复
  • 新特性
  • 内容优化
  • 其他,请描述:

其他信息

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 ChenZhoujie 的贡献)
CANN-robotCANN-robot成员
6月13日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
6月13日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/cann-learning-hub YANXI_ZHAO, waimaidaole (2/2) YANXI_ZHAO (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

ChenZhoujie, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CChenZhoujie
6月13日 强制推送  1 个提交:1de284ae-simd_abstract_hardware_architecture
CChenZhoujie
6月15日 强制推送  1 个提交:19a2c7cb-simd_abstract_hardware_architecture
CChenZhoujie
6月16日 强制推送  1 个提交:7453fa03-simd_abstract_hardware_architecture
CChenZhoujie
6月16日 强制推送  1 个提交:4d0b17c5-simd_abstract_hardware_architecture
CChenZhoujie
6月23日 强制推送  1 个提交:33bda069-simd_abstract_hardware_architecture
CChenZhoujie
6月23日 强制推送  1 个提交:01672537-simd_abstract_hardware_architecture
atomgit-bot
atomgit-bot
6月23日 评论:

变更摘要

此 PR 新增了一个 Ascend C 算子开发教程的 Jupyter Notebook 文件 03.03.01_simd_abstract_hardware_architecture_intro.ipynb,归属 tutorials/ascendc_operator_development_V2/03_programming_model/ 目录。该教程以 Ascend C SIMD 编程入门为目标,介绍 AI Core 抽象硬件架构的核心概念,帮助开发者建立统一的硬件视角,而非陷入具体硬件实现细节。

主要改动

  • 新增 SIMD 抽象硬件架构教程 Notebook:添加 03.03.01_simd_abstract_hardware_architecture_intro.ipynb,共 292 行,包含 Markdown 讲解单元和一个代码执行单元,涵盖学习目标、核心元素介绍、代码与硬件映射、计算数据流、架构版本差异及课后练习六个部分。
  • 建立计算/存储/搬运三大核心元素体系:教程将 AI Core 抽象硬件架构归纳为计算单元(ScalarVectorCube)、存储单元(Global MemoryUnified Buffer 等)和搬运单元(DMAMTE1/2/3FixPipe),并以表格和图示说明各元素的职责与协作关系。
  • 通过静态 Tensor 示例建立代码到硬件的映射:提供一个原地缩放的 scale_custom 核函数示例,逐一解释 GlobalTensorLocalTensorDataCopyMulsPipeBarrier 等 API 与硬件元素的对应关系,降低入门阶段的理解负担。
  • 引入计算数据流视角与架构版本差异说明:提出 GM → UB/LM → Vector/Cube → GM 的数据处理主线,并简要对比 NPU 架构版本 2201 与 3510 在计算方式、存储搬运细节和编程模型上的主要差异,引导读者采用"先统一抽象、再查具体规格"的学习方法。
  • 附带课后自测练习:包含判断题、单选题和多选题共 7 道,覆盖基础概念、代码映射和综合理解三个知识点,答案通过执行 !cat ./answer/03.03.01_answer.txt 获取。
likedislike
不准确?
atomgit-bot
atomgit-bot
6月23日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CChenZhoujie
6月24日 强制推送  1 个提交:345f5604-simd_abstract_hardware_architecture
CChenZhoujie
6月24日 强制推送  1 个提交:367bd7ce-simd_abstract_hardware_architecture
CChenZhoujie
6月25日 强制推送  1 个提交:ca595ad8-simd_abstract_hardware_architecture
CChenZhoujie
6月25日 强制推送  12 个提交:a03b7647-11 commits from branch test98ebdf74-simd_abstract_hardware_architecture
ChenZhoujie
6月25日 评论:

/compile

likedislike
CANN-robotCANN-robot成员
6月25日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
6月25日 评论:

流水线任务触发成功
任务链接 [0da38ee40e344590a3a5076e0aa86a83][流水线指导]

任务名称状态日志下载链接
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
codecheck_style ✅ SUCCESS >>>>>
pre-commit ✅ SUCCESS

[2026-06-25 15:41:53]    CI执行结束

likedislike
CChenZhoujie
6月25日 修改了pull request 的描述
CChenZhoujie
6月25日 修改了pull request 的描述
CANN-robotCANN-robot成员
6月25日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
6月25日 添加了label:ci-pipeline-passed
Yifan Wang6月26日进行代码检视2
tutorials/ascendc_operator_development_V2/03_programming_model/03.03.01_simd_abstract_hardware_architecture_intro.ipynb
已过期
@@ -0,0 +9,4 @@
9+ "\n",
10+ "## 学习目标\n",
11+ "\n",
12+ "Ascend C 面向 AI Core 编程,但开发者不需要一开始就记住所有硬件实现细节。抽象硬件架构把不同产品和架构版本中的共性提炼出来,帮助开发者先建立稳定的编程模型。因此,本节不是要穷尽 AI Core 的所有硬件规格,而是建立一张用于理解 Ascend C SIMD 算子的“硬件地图”。\n",
Yifan Wang6月26日评论:

而是建立一张用于理解 Ascend C SIMD 算子的“硬件地图” 这句话不对啊,学习抽象硬件架构不是为了理解算子,而是为了理解 SIMD编程模型以及如何编写算子,这句话的AI味儿太重了,最关键是不准确。

likedislike
System
系统消息系统
6月26日 评论:
likedislike
Yifan Wang6月26日进行代码检视2
tutorials/ascendc_operator_development_V2/03_programming_model/03.03.01_simd_abstract_hardware_architecture_intro.ipynb
已过期
@@ -0,0 +13,4 @@
13+ "\n",
14+ "完成本节学习后,你应该能够:\n",
15+ "\n",
16+ "- 说明学习 AI Core 抽象硬件架构的意义,理解为什么 Ascend C SIMD 编程需要先建立统一的硬件视角;\n",
Yifan Wang6月26日评论:

删掉说明学习 AI Core 抽象硬件架构的意义,理解为什么 Ascend C SIMD 编程需要先建立统一的硬件视角;

likedislike
System
系统消息系统
6月26日 评论:
likedislike
Yifan Wang6月26日进行代码检视2
tutorials/ascendc_operator_development_V2/03_programming_model/03.03.01_simd_abstract_hardware_architecture_intro.ipynb
已过期
@@ -0,0 +15,4 @@
15+ "\n",
16+ "- 说明学习 AI Core 抽象硬件架构的意义,理解为什么 Ascend C SIMD 编程需要先建立统一的硬件视角;\n",
17+ "- 识别抽象硬件架构图中的核心元素,包括计算单元、存储单元和搬运单元,并说明它们在算子执行中的基本职责;\n",
18+ "- 结合计算数据流,解读 Scalar、Vector、Global Memory、Local Memory、DMA、同步信号等元素在算子执行中的作用;\n",
Yifan Wang6月26日评论:

Scalar、Vector、Global Memory、Local Memory、DMA、同步信号等元素 -> Scalar、Vector、Cube等核心组件...

likedislike
System
系统消息系统
6月26日 评论:
likedislike
Yifan Wang6月26日进行代码检视2
tutorials/ascendc_operator_development_V2/03_programming_model/03.03.01_simd_abstract_hardware_architecture_intro.ipynb
已过期
@@ -0,0 +24,4 @@
24+ "id": "simd-arch-intro-02",
25+ "metadata": {},
26+ "source": [
27+ "## 1. 抽象架构图中的核心元素\n",
Yifan Wang6月26日评论:

核心元素 -> 核心组件

likedislike
System
系统消息系统
6月26日 评论:
likedislike
Yifan Wang6月26日进行代码检视2
tutorials/ascendc_operator_development_V2/03_programming_model/03.03.01_simd_abstract_hardware_architecture_intro.ipynb
已过期
@@ -0,0 +52,4 @@
52+ "\n",
53+ "### 1.2 存储单元\n",
54+ "\n",
55+ "存储单元需要重点区分 Global Memory(GM)和 Local Memory(LM)。这个区分不是命名习惯,而是由 AI Core 的执行方式决定的:输入输出通常保存在片外或全局可见的 GM 中,但 Vector、Cube 等计算单元更适合访问片上更近的存储。为了让计算单元高效工作,算子通常会把当前要处理的一小段数据先搬到片上存储,再执行计算,最后把结果写回 GM。\n",
Yifan Wang6月26日评论:

这个区分不是命名习惯,而是由 AI Core 的执行方式决定的,这句话让人摸不着头脑,建议删掉。这个段落重点介绍存储单元哟哪些,以及为什么要区分GM和LM。

likedislike
System
系统消息系统
6月26日 评论:
likedislike
Yifan Wang6月26日进行代码检视2
tutorials/ascendc_operator_development_V2/03_programming_model/03.03.01_simd_abstract_hardware_architecture_intro.ipynb
已过期
@@ -0,0 +54,4 @@
54+ "\n",
55+ "存储单元需要重点区分 Global Memory(GM)和 Local Memory(LM)。这个区分不是命名习惯,而是由 AI Core 的执行方式决定的:输入输出通常保存在片外或全局可见的 GM 中,但 Vector、Cube 等计算单元更适合访问片上更近的存储。为了让计算单元高效工作,算子通常会把当前要处理的一小段数据先搬到片上存储,再执行计算,最后把结果写回 GM。\n",
56+ "\n",
57+ "可以先按下面的关系理解 GM 和 UB。\n",
Yifan Wang6月26日评论:

抽象硬件架构中没有体现UB,为什么这里要介绍UB,应该介绍GM和LM呀。
本文中删除所有UB相关的介绍。

likedislike
System
系统消息系统
6月26日 评论:
likedislike
CChenZhoujie
6月26日 强制推送  1 个提交:805cec70-simd_abstract_hardware_architecture
CANN-robotCANN-robot成员
6月26日 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
6月26日 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-pipeline-passed.

likedislike
Yifan Wang6月26日进行代码检视1
tutorials/ascendc_operator_development_V2/03_programming_model/03.03.01_simd_abstract_hardware_architecture_intro.ipynb
@@ -0,0 +84,4 @@
84+ "\n",
85+ "理解了抽象架构中的核心组件之后,可以先从计算数据流这一条主线阅读架构图:数据从 GM 进入片上存储,在计算单元中完成计算,再将结果写回 GM。\n",
86+ "\n",
87+ "<img src=\"./images/simd-arch-data-flow.png\" alt=\"AI Core 抽象硬件架构中的计算数据流\" width=\"820px\">\n",
Yifan Wang6月26日评论:

图上的UB要改成LM。

likedislike
CChenZhoujie
6月26日 强制推送  1 个提交:e005ac3a-simd_abstract_hardware_architecture
YANXI_ZHAO成员
6月29日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
6月29日 添加了label:approved
YYifan Wang
6月29日 解决了最后一个问题
ChenZhoujie
6月29日 评论:

/compile

likedislike
CANN-robotCANN-robot成员
6月29日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
6月29日 评论:

流水线任务触发成功
任务链接 [3fbbbb3f887e498bbd44981538d88369][流水线指导]

任务名称状态日志下载链接
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
codecheck_style ✅ SUCCESS >>>>>
pre-commit ✅ SUCCESS

[2026-06-29 14:31:33]    CI执行结束

likedislike
CANN-robotCANN-robot成员
6月29日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
6月29日 添加了label:ci-pipeline-passed
meme成员
6月29日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
6月29日 添加了label:lgtm
CANN-robotCANN-robot成员
6月29日 合入了pull request