← 完整学习路线

UNIT 54 / 78 · W08-2

异步提交延长了谁的寿命

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

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

01 / READ

先知道自己在观察什么

Host/device、传输与异步生命周期 →

画host准备、上传、计算、回读、可复用五个状态,再读双缓冲完成依赖。

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

02 / PREDICT & RUN

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

手算三批完成于9、14、19教学单位,运行验证串行27与流水19;不把单位叫毫秒。

双缓冲流水线的依赖模型 →
源码下载与编译入口

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

29-b.cpp

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

03 / CHANGE ONE THING

通过一个变动看清原因

在副本把buffer_free改为array<int,1>并用{0}初始化,slot改为chunk%buffer_free.size();保留上传2、计算5、回读2,把finished期望更新为{9,18,27},不留下%2造成越界。

修改后应观察到什么

三批在9、18、27完成,模型失去跨批buffer重叠。

04 / DO IT YOURSELF

换一组条件,独立解决

为本人Reduction Lab画异步迁移设计表:每块输入从可写到消费结束,列出允许复用的最早事件。

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

  • 消费者未结束前不能复用输出;上传未读完前不能改host输入。
  • 表中每条依赖有生产者和消费者;注明尚未运行真实设备。
05 / EXPLAIN & CHECK

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

  1. 提交完成和计算完成怎样区分?
  2. 双缓冲为什么不仅是多分配一份数组?

本单元的验收依据

一个buffer与两个buffer模型差异可手算,生命周期表没有靠sleep保证的边。

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