UNIT 50 / 78 · W07-3
把两个固定任务推广为完整分区
本单元预计 4 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。
时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。
先知道自己在观察什么
并行分解、分块与负载均衡 →
从n=10,p=3推导商余数、起点与终点,再核对相邻不重叠和总覆盖。
先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。
先留下自己的预测或独立尝试
手推[0,4)、[4,7)、[7,10),运行已有穷举检查;解释为什么允许空任务。
商余数分块与边界穷举 →源码下载与编译入口
下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →
27-a.cpp先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。
通过一个变动看清原因
在副本新增n=2,p=4的区间打印,保留零worker拒绝和原穷举。
修改后应观察到什么
区间为[0,1)、[1,2)、[2,2)、[2,2),每个有效元素恰好覆盖一次。
换一组条件,独立解决
把主项目固定分区原型改为1到64个worker的商余数划分;先独立实现覆盖计数,再接回求和。
用这些条件检查自己的实现
- n=0、1、2、7、31,p=1、2、3、8、64均覆盖每项一次,无越界。
- p=0或65拒绝;相邻end等于下一begin,最后end等于n。
接回贯穿练习
Reading Pipeline stage 08 →
21线程句柄/捕获与27分区完成后回访;这是整合阅读,不替代该单元独立练习或本人主项目。
用证据决定是否进入下一单元
- 为什么每个任务加同样的向上取整长度容易重叠或越界?
- 任务数大于元素数时空任务怎样处理?
本单元的验收依据
独立分区检查与主项目所有合法worker结果一致;失败清理仍存在,才能记录通用并行正确性。
留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。