← 完整学习路线

UNIT 61 / 78 · W09-4

两级 reduction 与一个 profiling 假设

本单元预计 4 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。

时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。

01 / READ

先知道自己在观察什么

HIP Reduction:从正确性到 profiling 问题 →

手推非整block尾部、单位元、组内与全局同步边界,再读trace与counter各回答什么。

HIP Reduction:从正确性到 profiling 问题 →

核对公开HIP reduction与rocprofv3文档;标出实际执行前还需的完整kernel、工具版本与硬件条件。

先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。

02 / PREDICT & RUN

先留下自己的预测或独立尝试

手算六项分为4与2的partials=10、11,再运行CPU算法模型;它不执行HIP barrier。

非整块输入的两级求和 →
源码下载与编译入口

下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →

36-a.cpp

先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。

03 / CHANGE ONE THING

通过一个变动看清原因

在副本把输入改为十个1、组容量仍4,将独立partial期望改为[4,4,2];把只打印partial[0]/partial[1]的语句改成遍历整个partial,保留与顺序总和的比较。

修改后应观察到什么

partials=[4,4,2]、总和10,最后两项没有被丢弃或额外读取。

04 / DO IT YOURSELF

换一组条件,独立解决

在本人Reduction Lab报告新增一条待设备验证假设:输入复制6、计算2、输出复制1个假定单位,计算减半时端到端如何变化,并写出应采集的trace范围。

用这些条件检查自己的实现

  • 假定总长9变8,不是整体减半;数字明确为假设,不是测量。
  • 计划同时检查边界/数值与端到端范围,profiler诊断成本不混入正式benchmark。
05 / EXPLAIN & CHECK

用证据决定是否进入下一单元

  1. 为什么block内barrier不能提供跨block全局同步?
  2. 仅看到kernel变快为什么不足以证明应用收益?

本单元的验收依据

CPU分组通过,公开工具命令与待验证假设齐全;没有SDK运行就不生成虚假trace或speedup。

留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。