DAY 01
Tiling:把长输入分块
单核处理 4096 个 float32,UB 每块保持 256 个元素;解释偏移和缓冲复用依赖。
9 月 11 日 — 9 月 25 日 · 每天计划 3–4 小时。讲概念、动手写、做 review,再用测量验证判断。以 CANN 算子天梯赛作为实战训练平台。
910B4 / CANN 8.5.0:手写单核 Add,256 个 float32 全量校验通过,退出码 0。尚未测量性能。
可查看公开进度;打卡与记录由网站主人维护。
单核处理 4096 个 float32,UB 每块保持 256 个元素;解释偏移和缓冲复用依赖。
将 Add 扩展到多核,解释各核区间,验证没有重复或遗漏。
处理非整除长度和小输入,全量检查边界,避免越界。
建立预热与重复测量,区分核函数耗时、数据复制与端到端耗时。
比较单缓冲和双缓冲;先验证正确性,再解释收益或退化。
依据测量调整分块大小和核数,保留基线与对比记录。
从当前开放的天梯题中选向量算子,理解融合如何减少中间搬运。
实现基础归约,理解跨分块合并与数值误差。
对不同规模选择策略,记录每类测试点的耗时。
跑通 Matmul 基础示例,理解数据布局与主要优化参数。
核实赛题、提交格式、精度标准和评分方式,保存平台反馈。
针对弱测试点提出瓶颈假设,修改、测量并回归。
调整分块、核数或算法,解释测试点的收益与退化。
覆盖边界输入,复现最佳成绩,检查性能和精度回退。
独立完成修改、验证和提交,写清优化依据与下一步方向。
记录基线耗时、瓶颈假设、修改内容、新耗时与回归结果。正确通过、性能提升、排名变化分别记录;实际赛题与评分规则以平台为准。