← 完整学习路线

UNIT 56 / 78 · W08-4

地址区域与同步范围不能靠猜

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

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

01 / READ

先知道自己在观察什么

合并访问、共享内存与同步范围 →

先读lane地址与区域覆盖,再画共享存储每个阶段;指出block barrier不能同步所有block。

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

02 / PREDICT & RUN

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

手算[3,1,4]如何补零并阶段合并得到8,再运行0到4项及超限拒绝的检查。

无效lane写单位元后参加阶段归约 →
源码下载与编译入口

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

31-b.cpp

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

03 / CHANGE ONE THING

通过一个变动看清原因

在副本增加[2,-2,5]和空输入的显式打印,保留四lane模型和合法参与顺序。

修改后应观察到什么

结果分别5与0,第四lane仍贡献单位元零。

04 / DO IT YOURSELF

换一组条件,独立解决

独立列出32个lane、4字节元素、128字节教学区域下stride=1和2的地址区域集合;同时画归约两阶段读写。

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

  • 区域数分别1与2,只代表给定对齐和尺寸的地址模型。
  • 所有需要参与阶段同步的逻辑lane保留,不用越界线程提前return破坏参与条件。
05 / EXPLAIN & CHECK

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

  1. 合并访问关注的是同一组lane的什么关系?
  2. 为什么把buffer做大不能修复缺少同步?

本单元的验收依据

地址表与阶段依赖图均可验证;没有从CPU集合计数推导真实transaction或GPU性能。

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