LOOP 10 / INTERVIEW LOOP / 4H
多分区 Scan:空分区也参与协议
数据已分给三个逻辑计算节点,其中一个节点没有数据。你需要保持全局 scan 顺序,并说明“这个节点不算东西”为什么不等于“可以不发送协议消息”。
完成单元 67 · 用独立 oracle 分清模型、simulator 与设备及其先备后安排本次训练。不绑定日历周。
先写自己的答案,再展开参考。这里按技能编写问题,不声称公司真题;自评与阅读都不会自动通过 G0。
先备与学习位置
TIME WITH OUTPUTS
240 分钟怎样用
闭卷恢复先备 · 15min
用语言说明 circular buffer 的容量归还、PE 本地数据和 host 完成等待;复习 total 与 exclusive offset 的区别。
留下:先不查章节,写三条判断和一个不确定点;再只补读相关章节的解释段。
澄清题目与手算 · 25min
读主问题,逐条写输入、输出、范围与失败行为。手算前两个公开用例,给自己的方案找一个反例。
留下:一份接口合同、逐步状态表和最小反例;不要先打开参考推演。
独立实现或设计 · 55min
输入按节点顺序为 P0=[2,1]、P1=[]、P2=[4,-2,3]。计算每个节点 inclusive local scan、local total、exclusive node offsets,再拼成全局 inclusive scan。写一个普通 C++ oracle 与三张消息状态表:本地结束、偏移可用、结果可读。只讨论公共模型,不运行或宣称 WSE simulator。
留下:保存个人代码或设计稿。编码题保留编译命令;设计题为每个事件编号,不能只画没有状态的箭头。
边界与反证 · 25min
用题目的全部公开用例核对真实输出;另外创造一个与公开输入不同的边界。发现失败时缩小输入,再解释修复。
留下:实际结果、原始失败和修复原因各一份;设计题记录一个被拒绝的执行顺序。
按表现进入追问树 · 35min
从 n1 开始。每题先录下自己的回答,再展开标准;按满足或未满足条件跳转。树最多走一轮,卡住时把剩余时间用于分支中的纠错,不循环加时。
留下:记录经过的节点、原话、缺失条件和修订;只会复述标准的节点仍标记待重做。
英文口述与打断 · 30min
用本页英文提纲录制两轮 90 秒回答;第二轮在 30 秒处自问追问,先回答追问再回到主线。每轮回听并改写两个含糊句。
留下:两轮录音或逐字稿;圈出输入、因果、边界和限制各一句。参考英文在录完第一轮后再读。
复盘与安排重做 · 25min
对照强弱答案,选择一个真正出错的环节:合同、状态、实现、验证或表达。填本页记录模板,并约定下一天的 30 分钟。
留下:一个有失败输入的错误记录和一个可观察修复标准;不要把全部问题归因为粗心。
次日无答案重做 · 30min
次日重做 parts=[[1,-1],[2],[],[3]]。独立列 local scans、totals、offsets、global,并指出哪两个不同状态都携带数值 0。
留下:这是本周 240 分钟中的最后 30 分钟,不另加预算。先关闭解答,用 20 分钟独立做,再用 10 分钟核验并记录是否仍需复习。
包括次日重做,总计 240min。局部错因复盘属于本次练习,额外的计划复盘按实际需要另记。
SOLVE BEFORE READING THE ANSWER
先独立处理这个问题
输入按节点顺序为 P0=[2,1]、P1=[]、P2=[4,-2,3]。计算每个节点 inclusive local scan、local total、exclusive node offsets,再拼成全局 inclusive scan。写一个普通 C++ oracle 与三张消息状态表:本地结束、偏移可用、结果可读。只讨论公共模型,不运行或宣称 WSE simulator。
输入与输出合同
- 各分区维持输入顺序;整数范围限每项 [-100,100]、总长度≤100,避免本题算术溢出。
- 空分区 total=0 且输出为空,但它的协议完成状态和消息传递仍须明确。
- host 只在所有分区完成且输出长度确认后读取;消息表示 total、offset 还是有效元素数必须标注。
手算之后,对照公开用例
| 输入或情形 | 预期 | 为什么 |
|---|---|---|
| parts=[[2,1],[],[4,-2,3]] | local=[[2,3],[],[4,2,5]]; totals=[3,0,5]; offsets=[0,3,3]; global=[2,3,7,5,8] | 后两节点偏移相同,但各自局部数据不同。 |
| parts=[[],[],[]] | totals=[0,0,0]; offsets=[0,0,0]; global=[] | 空数据仍有三个完成参与者。 |
| parts=[[],[5],[-5]] | offsets=[0,0,5]; global=[5,0] | 负数与总和为 0 不等于没有数据。 |
| P1 不传任何状态,P2 等前驱 offset | 拒绝该协议设计 | 空节点可能造成下游永久等待。 |
先保留自己的解法、状态轨迹与验证记录,再打开参考。允许用自然语言或伪代码补充解释;不能用参考输出代替真实运行。
保存独立尝试后,阅读解法与状态轨迹
解法依据
各分区内部从 0 累加得到 local scan 和 total。节点偏移是它之前所有节点 total 的和,不含自己的 total。每个 local scan 元素加本节点 offset,按节点顺序拼接。协议层给空分区定义“发送 total=0、收到偏移后继续转发并报告完成”;不以输出长度 0 代替消息完成。最终与对展平输入执行的串行 inclusive scan 对照。
逐步推演
P0 total=3,offset=0;P1 total=0,offset=3,向后贡献的累计仍为 3;P2 offset=3,把 [4,2,5] 变成 [7,5,8]。展平 [2,1,4,-2,3] 的前缀为 [2,3,7,5,8],完全一致。P2 的最后值 8 是全局总和;5 是它的局部总和。
FOLLOW THE ANSWER, NOT A SCRIPT
从回答进入下一层追问
从 n1 开始。先录下回答,再展开判定;达到条件就走深入分支,未达到就按反馈缩小问题。一次最多走一轮,不靠反复查看同一答案累积“通过”。
NODE n1
为什么 P2 要加 3,而不是加前一个节点的 total=0?
NODE r1
把第一个追问缩到最小输入,重新逐步说明。
我已作答:查看判定与下一分支
需要解释清楚:offset 是所有前面节点的累计总和,包含 P0 的 3;只取直接前驱的局部 total 会丢失更早历史。
NODE n2
最后结果为 0 能作为“没有数据”的标记吗?
NODE n3
仅 CPU oracle 全部通过,可以把 GPU correctness 门标成通过吗?
我已作答:查看判定与下一分支
需要解释清楚:不能;它验证数学分解。对应 SDK 编译、官方 simulator 与硬件执行各有独立环境和证据,任何未做步骤保持未验证。
达到
结论正确,并解释本节点给出的具体状态或反例。
保留关键推理:不能;它验证数学分解。对应 SDK 编译、官方 simulator 与硬件执行各有独立环境和证据,任何未做步骤保持未验证。
这一分支结束:对照并复盘 →答案强在哪里,弱在哪里
保存自己的回答后,打开对照
弱答案
“每个节点都扫一遍,最后 concat;空节点直接跳过。”
强答案
“局部 scan 只包含本地历史,必须加前面节点的总和。空节点的 total 是零,但它仍承担协议进度;我明确转发偏移和完成信号。最后用展平输入的串行 scan 验证数学结果,设备通信还需独立验证。”
强答案同时覆盖值语义和协议进度。concat 只保持局部顺序,不能补出跨节点历史;一个 CPU 结果也不能证明真实 NoC 无死锁。
在自己的原回答里划出一个缺失的条件或错误推理,再重说一遍。完整句子背熟,不代表能处理新约束。
ANSWER, THEN HANDLE AN INTERRUPTION
英文口述与打断
Explain why an empty partition may still have protocol responsibilities.
- Separate payload, count, and completion.
- Compute the final partition offset.
- Distinguish oracle from simulator evidence.
“Why can’t a zero result mean that the node had no data?”
录完第一轮后,读英文示范
An empty partition contributes a zero total, but it may still need to forward the accumulated offset and report completion. The final partition receives three because offsets include all earlier totals. I compare the result with a serial scan of the flattened input. That validates the decomposition, not the correctness of a device communication implementation.- 前 15 秒说明输入、输出和一个关键约定。
- 至少用一个本题的数值解释因果,不只罗列英文术语。
- 明确一个边界或尚未验证的限制;不能把教学推演说成项目经验。
次日关掉解答,换一个问题
次日重做 parts=[[1,-1],[2],[],[3]]。独立列 local scans、totals、offsets、global,并指出哪两个不同状态都携带数值 0。
独立重做后核对
local=[[1,0],[2],[],[3]];totals=[0,2,0,3];offsets=[0,0,2,2];global=[1,0,2,5]。P0 total=0 但有两项,P2 total=0 且为空;必须用长度区分。
- 关闭主问题答案并使用新输入独立完成。
- 给出结果与原因;失败时记录最小反例,不能只把完成标记改成通过。
重做的 30min 已计入本套4h;需要更多补课时记录实际用时,按缺口顺延。
记录实际回答与证据
# W10 算法 / 英文训练记录(仅个人练习,不是能力认证)
日期:
本次先备与尚不确定点:
主问题接口合同:
我最初的方案与状态表:
运行命令或设计事件编号:
失败输入 / 预期 / 实际:
修复与理由:
追问路径(节点 → 自己原话 → 缺口):
英文第一轮两处含糊句:
英文第二轮修订:
次日重做日期(30 分钟已含本周预算):
重做输入 / 实际结果 / 解释:
仍需补练:
本次练习的检查依据
四类数值与串行 oracle 一致;空分区有进度合同;没有把本地模型升级为 simulator/硬件验证。
模板在你的个人笔记中填写。网页只提供空模板;不会把这次训练写成项目经验或学习验收结果。