已关闭
[Course-Feedback|课程反馈]: 1.4 Ascend C算子开发的基本概念 + 2.3 AscendC编程范式介绍与API介绍,引用了后面的内容但是未解释概念 #433
chenjiayi_创建于  8月2日关闭于  9月7日
chenjiayi_
chenjiayi_
8月2日 创建

Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.

一、课程名称 (必填)

1.4 Ascend C算子开发的基本概念 + 2.3 AscendC编程范式介绍与API介绍

二、反馈类型 (必填)

• 课程内容建议

三、反馈详情 (必填)

问题1:Tiling概念在1.4节被前向引用但未解释
1.4节在介绍"算子模板库"时写道:
"基于模板提供算子完整实现参考,简化Tiling(切分算法)开发"
此处"Tiling(切分算法)"是一个括号注释,但没有真正解释Tiling是什么、为什么需要Tiling。对于初学者,"切分算法"这个翻译太简略——切分什么?为什么要切分?Tiling的概念直到3.02节才被完整介绍("受限于片上存储大小,把一次装不下、算不完的大数据,拆成多块小数据分批处理,就是Tiling")。
而在2.4节的Add算子中,AddCustomTilingData结构体和Tiling参数就已经被实际使用了,初学者在2.4节时会困惑:这个结构体里的tileNum到底是什么?为什么要把数据切成块?
问题2:高维切分 API 突兀引入未解释概念
02.03:294 原文:
"高维切分API:支持Repeat和Stride。功能灵活的计算API,提供与BuilitIn API完全对等编程能力,充分发挥硬件优势,支持对每个操作数的DataBlock Stride,Repeat Stride,Mask等参数的操作。"
此处一次性引入了4个未解释的概念:

  • DataBlock:什么是数据块?它是硬件层面的概念还是编程层面的概念?
  • Repeat:什么是重复?为什么计算需要重复?
  • Stride:步长是什么?在数据搬运还是计算中起作用?
  • Mask:掩码是什么?控制什么?

且BuiltIn API本身也未在之前介绍过,初学者如果后续遇到这些参数会无法理解。

建议:

  • 在1.4节首次提到Tiling时,增加一句话说明:"由于AI Core的片上存储容量有限,无法一次性容纳所有输入数据,因此需要将数据切分为多个小块分批处理,这个数据切分的过程称为Tiling,后续章节会详细讲解。"这样初学者在2.4节遇到Tiling参数时至少有一个基本认知。
  • 在2.3节对这些概念做简要解释(每个概念一两句话),或者明确标注"这些概念将在后续实践章节中结合具体示例详细讲解",避免初学者在此处卡住。
likedislike
ink_polymer
ink_polymer成员
8月2日 评论:

尊敬的开发者您好,您的建议已收到,待内部评估后反馈,感谢您的支持

likedislike
ink_polymer
ink_polymer成员
8月3日 评论:

尊敬的开发者您好,能不能具体描述一下是哪个课程文件,您提到的课程具有多个相同课程同名,感谢您的支持

likedislike
chenmingyuchenmingyu成员
8月17日 关联了pull request:docs: 补充Tiling和高维切分API概念说明
chenmingyuchenmingyu成员
8月17日 关联了pull request:docs: 补充Tiling和高维切分API概念说明
ink_polymer
ink_polymer成员
9月1日 评论:

尊敬的开发者您好,您提出的问题目前已经解决。该issue将在7天后关闭。若后续还有问题欢迎通过issue与我们交流,感谢您的支持

likedislike
ink_polymerink_polymer成员
9月7日 issue状态由 进行中 改变为 已完成
ink_polymerink_polymer成员
9月7日 关闭了 issue
CANN-robotCANN-robot成员
9月7日 添加了label:resolved