已合并
Add Ascend950 Basic SYRK example #1195
void_ptr创建于 27 天前
Add Ascend950 Basic SYRK example #1195
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 void_ptr 的贡献)atomgit-bot
27 天前 评论:
27 天前 评论:
变更摘要
本 PR 新增了 Ascend950 上的基础 SYRK 示例(Y = X * X^T),包含新增的 examples/82_ascend950_basic_syrk/basic_syrk_tla.cpp 示例程序、块级算子 BlockMmadSyrkTla 与内核级算子 BasicSyrkTla,并为 Ascend950 的 CopyL0CToGmTla 补充了列主序(nz2dn 转置写回)特化,同时将新头文件接入 block_mmad.hpp。该实现固定了 X/Y 的布局与 MmadPingpong<Ascend950, false> 调度策略,采用仅计算下三角并按对角块单写、非对角块双写的策略,示例端通过 golden 计算与误差指标(MARE/MERE/RMSE)对结果进行校验。
主要改动
- 新增 SYRK 块级算子
BlockMmadSyrkTla(include/catlass/gemm/block/block_mmad_syrk_tla.hpp):实现 Ascend950 上Y = X * X^T的块级 mmad,通过static_assert约束布局(X 为RowMajor、Xt 为ColumnMajor、Y 为RowMajor)、禁用unitFlag/HF32/L1-resident,并在对角块(blockCoord.m() == blockCoord.n())只执行一次 nz2nd 写回、非对角块同时执行 nz2nd 与 nz2dn 双写。 - 新增 SYRK 内核级算子
BasicSyrkTla(include/catlass/gemm/kernel/basic_syrk_tla.hpp):定义下三角调度规则(m < n跳过、m == n计算并单写、m > n计算并双写),新增Params/Arguments结构及CanImplement、GetWorkspaceSize、ToUnderlyingArguments接口,并区分 AIC/AIV 执行路径。 - 扩展
CopyL0CToGmTla列主序特化(include/catlass/gemm/tile/ascend950/copy_l0c_to_gm.hpp):为Ascend950增加isColumnMajor使能的特化,使用FixpipeParamsC310<COLUMN_MAJOR>与Nz2DnParams完成 L0C 到 GM 的 nz2dn 转置写回,支持unitFlag参数。 - 新增 SYRK 示例程序(
examples/82_ascend950_basic_syrk/basic_syrk_tla.cpp):驱动BasicSyrkTla执行 SYRK,完成设备内存分配、数据搬运与 golden 对比,按 MARE/MERE/RMSE 阈值判定并输出比对结果。 - 接入编译单元(
include/catlass/gemm/block/block_mmad.hpp):在 TLA 相关包含块中新增block_mmad_syrk_tla.hpp的头文件引用。


不准确?
atomgit-bot
27 天前 评论:
27 天前 评论:
27 天前 添加了label:cann-cla/no
27 天前 添加了label:stat/needs-squash
此处折叠了77条消息 查看更多
longjihui
22 天前 评论:
22 天前 评论:
/lgtm


22 天前 添加了label:lgtmapproved
22 天前 合入了pull request
CANN-robot
22 天前 评论:
22 天前 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


描述
关联的Issue
https://gitcode.com/cann/catlass/issues/489
原因
测试
文档更新
类型标签