已合并
feat: data_structure_for_hpc:课内实验1_基于不同存储结构的求和算子实现 #677
圣地亚鸽创建于 24 天前
feat: data_structure_for_hpc:课内实验1_基于不同存储结构的求和算子实现 #677
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 圣地亚鸽 的贡献)atomgit-bot
24 天前 评论:
24 天前 评论:
变更摘要
此 PR 为「面向高性能计算的数据结构」课程新增两个课内实验 Notebook。实验一围绕顺序存储与链式存储两种结构,在 Ascend C 环境中分别实现求和算子(sequence_sum 与 linked_sum),并通过 NPU 侧性能对比观察数据布局对访存效率的影响。实验二实现了基于静态 Tensor 的 ReLU 向量算子,涵盖分块策略、多核任务划分、片上数据搬运与向量计算。两个实验均包含完整的 Host/Device 代码生成、CMake 构建配置、Shell 运行与 Profiling 脚本。
主要改动
- 新增求和算子实验 Notebook:新增
01_00_extra_ascendc_sum_op_various_storage_struct.ipynb,在 Ascend C 中实现sequence_sum(顺序存储)和linked_sum(链式存储)两个 kernel,Host 侧通过SumConfig/SumMetrics/StorageInput管理实验参数与结果统计,并支持shuffle_nodes控制链表结点物理打乱,以对比两种存储结构的访存性能差异。 - 新增 ReLU 向量算子实验 Notebook:新增
01_01_extra_ascendc_static_tensor_relu_vector.ipynb.ipynb,实现基于静态 Tensor 的relu_static_tensorkernel,通过GetTileRange进行多核任务划分,使用LocalMemAllocator<UB>分配片上空间,循环调用DataCopy/Maxs/PipeBarrier完成分块搬运、ReLU 计算与写回。 - 新增构建与运行基础设施:两个实验均通过
%%writefile动态生成各自的CMakeLists.txt(区分 CPU 演示目标与 Ascend NPU 目标)以及run.sh/profile.sh脚本,支持自动识别 CANN 安装路径与昇腾处理器型号,并包含BUILD_ASCEND条件编译选项控制 Ascend C 实机构建。


atomgit-bot
24 天前 评论:
24 天前 评论:
24 天前 添加了label:cann-cla/no
CANN-robot
24 天前 评论:
24 天前 评论:
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.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
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 | ✅ zutao, waimaidaole (2/2) | ✅ zutao, waimaidaole (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
qq_61043250, thanks for your pull request. All authors of the commits have signed the CLA. 👍


此处折叠了68条消息 查看更多
5 天前 添加了label:approved
wanzutao
5 天前 评论:
5 天前 评论:
/lgtm
/approve


5 天前 添加了label:lgtm
5 天前 合入了pull request
课内实验1
描述
在“面向高性能计算的数据结构”课程第1章“绪论”中,新增课内实验1“基于不同存储结构的求和算子实现”
本实验面向“面向高性能计算的数据结构”课程中的线性表存储结构主题,要求使用 Ascend C 语言分别基于顺序存储和链式存储两种方式组织同一组序列数据,并开发对应的求和算子,对长度为
N的数字序列完成累加求和。实验中,顺序存储采用连续内存中的数组形式保存数据;链式存储使用数组保存元素值和后继索引,通过逻辑链接完成遍历。两种方式在逻辑上都表示同一条线性表,仅在物理存储布局和访存路径上存在差异。
通过对两种实现的正确性和运行时间进行对比,观察并分析:顺序存储由于数据连续,具有更好的空间局部性和更高的连续访存效率;链式存储由于结点分散、访问跳转频繁,会带来更大的访存开销。因此,在相同计算任务下,顺序存储版本的求和算子通常表现出更优的执行性能。。
运行脚本能够自动识别CANN安装路径和昇腾处理器型号,并根据当前实验环境完成工程配置、编译和运行。
关联的Issue
无
测试
·Notebook已在华为在线Notebook环境完整执行通过;
·CPU版本和NPU版本均能够正常编译和运行;
·已验证CANN 9.0.0、Ascend 910B4环境;
·已验证CANN 8.5.0、Ascend 910B3环境;
·Notebook能够生成完整的CPU和NPU工程代码。
文档更新
·新增
·contrib/tutorials/data_structure_for hpc/01_base/01_00_extra_ascendc_sum_op_various_storage_struct.ipynb
·更新:
·contrib/tutorials/data_structure_for_hpc/README.md
类型标签
新增实验
其他信息
无
课外实验1
描述
在“面向高性能计算的数据结构”课程第1章“绪论”中,新增课外实验“面向ReLU算子的多核并行与流水线实现”
ReLU是深度学习模型中常用的逐元素激活函数,其计算关系简单,但能够清晰体现一维连续数据在异构计算设备上的组织方式、片上搬运过程和向量化计算方式。本实验围绕 ReLU向量算子展开,在Ascend C环境中采用静态Tensor编程方式实现ReLU算子。实验以Host侧CPU参考结果作为校验基准,在Device侧将输入向量按tile划分,从Global Memory搬入UB中的LocalTensor,调用Maxs向量接口完成y=max(x,0)的逐元素计算,并将结果写回Global Memory。通过本任务,能够理解简单逐元素算子在NPU上的基本执行流程,并能够从正确性、误差和性能三个方面分析实验结果。
运行脚本能够自动识别CANN安装路径和昇腾处理器型号,并根据当前实验环境完成工程配置、编译和运行。
关联的Issue
无
测试
·Notebook已在华为在线Notebook环境完整执行通过;
·CPU版本和NPU版本均能够正常编译和运行;
·已验证CANN 9.0.0、Ascend 910B4环境;
·已验证CANN 8.5.0、Ascend 910B3环境;
·Notebook能够生成完整的CPU和NPU工程代码。
文档更新
·新增
·contrib/tutorials/data_structure_for hpc/01_base/01_01_extra_ascendc_static_tensor_relu_vector.ipynb
·更新:
·contrib/tutorials/data_structure_for_hpc/README.md
类型标签
新增实验
其他信息
无
课内实验4
描述
在“面向高性能计算的数据结构”课程第4章“算子开发与性能评价”中,新增课内实验4“基于 CANN的Softmax 算子优化”
Softmax是深度学习中常见的归一化算子,常用于分类模型输出层。本实验要求使用Ascend C语言完成一个Softmax自定义算子的实现,并基于统一工程对算子进行正确性验证和基础性能测试。本实验以二维张量最后一维上的Softmax计算为对象,要求在CANN环境下完成Host侧数据准备、Device侧算子实现、结果验证和性能统计。实验中输入张量采用float类型,按行执行Softmax计算,并通过多组输入规模观察算子的运行表现。通过本实验,应理解Softmax的计算特征、Ascend C自定义算子的基本开发流程,以及归约类算子与逐元素算子在实现方式上的差异。
运行脚本能够自动识别CANN安装路径和昇腾处理器型号,并根据当前实验环境完成工程配置、编译和运行。
关联的Issue
无
测试
·Notebook已在华为在线Notebook环境完整执行通过;
·CPU版本和NPU版本均能够正常编译和运行;
·已验证CANN 9.0.0、Ascend 910B4环境;
·已验证CANN 8.5.0、Ascend 910B3环境;
·Notebook能够生成完整的CPU和NPU工程代码。
文档更新
·新增
·contrib/tutorials/data_structure_for hpc/04_operator_development/04_00_extra_ascendc_cann_softmax.ipynb.ipynb
·更新:
·contrib/tutorials/data_structure_for_hpc/README.md
类型标签
新增实验
其他信息
无