Ascend C矢量编程文档升级:带你掌握多核复杂场景下的Tiling数据切分

举报
昇腾CANN 发表于 2025/06/17 09:33:27 2025/06/17
【摘要】 昇腾Ascend C编程语言发布以来,许多开发者已通过官方教程文档快速掌握了Ascend C算子的开发方法。然而,对于一些深度开发者而言,需要了解在多核、Tiling切分等复杂场景下的更深入内容介绍,以及更详尽的理论知识和实践方法,以便熟练掌握自定义算子的开发。

昇腾Ascend C编程语言发布以来,许多开发者已通过官方教程文档快速掌握了Ascend C算子的开发方法。然而,对于一些深度开发者而言,需要了解在多核、Tiling切分等复杂场景下的更深入内容介绍,以及更详尽的理论知识和实践方法,以便熟练掌握自定义算子的开发。

为此,《Ascend C算子开发指南》进行了全面升级,由浅入深地介绍矢量算子开发教程,旨在帮助开发者更好地掌握Ascend C算子开发技能。目前,相关教程文档已在昇腾社区发布,开发者可点击LINK快速访问。

1.png

增加TBuf使用教程,提供临时变量处理方法

基于基础矢量算子开发教程,新增TBuf使用教程,帮助用户学习在算子计算过程中利用临时空间存储运算的中间结果,掌握TBuf数据结构在算子开发中的应用。

2.png

增加多核&Tiling切分教程,助力开发者掌握核间及核内数据切分策略

增加多核Tiling、尾块Tiling、尾核Tiling以及尾核&尾块教程,以帮助开发者掌握Host侧Tiling编程,了解如何在核间和核内进行数据切分。

(1)多核Tiling:当在AI处理器的多个核上运行算子,如何将输入数据均匀分配到各个核上,确保每个核的计算数据量相等,核内每个数据块的数据量相等,以达到算子执行效率最大化,并帮助开发者理解基本的分核概念。

3.png

(2)尾块Tiling:介绍在核间均匀分配数据,而在核内无法将数据切分为多个相同大小且32字节对齐的数据块的情况下,如何进行数据切分及尾块数据处理,以帮助开发者掌握在数据非对齐时进行数据切分和尾块处理的策略。

4.png

(3)尾核Tiling:介绍在输入数据无法在多个核之间均匀分配的场景下,当算子在AI处理器的多个核上运行时,如何进行有效的数据切分,使每个核处理不同的数据量,从而帮助开发者掌握数据切分产生尾核的处理策略。

5.png

(4)尾核&尾块:介绍输入数据无法在多个核间均匀分配,以及在单个核内无法被切分为多个相同大小且32字节对齐的数据块的场景,当算子在AI处理器的多个核上运行时,若数据无法平均分配到每个核,且每个核内的数据也不能均匀分割,如何进行核间和核内的数据切分,以及处理尾核和尾块数据,从而帮助开发者掌握数据切分后同时产生尾核和尾块的处理策略。

6.png

增加DoubleBuffer场景教程,轻松实现多流水并行

提供DoubleBuffer场景教程,解释DoubleBuffer的含义,帮助开发者学习其实现方法,从而掌握多流水并行的编程技巧。

7.png

增加Broadcast场景教程,提供数据广播的基础知识

新增Broadcast场景教程,针对不同形状(shape)的输入需要做按对应位置元素计算的场景,介绍如何将一个输入的shape进行广播(Broadcast)后,再执行计算的设计思路及实现方法,以帮助开发者有效掌握Broadcast处理技巧。

欢迎访问昇腾社区Ascend C信息专区,获取Ascend C更多学习资源:https://www.hiascend.com/ascend-c

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。