跳到正文

并发计数与有界缓冲

60 分钟

并发计数与有界缓冲

从“线程更多为什么没有更快”开始

先看真实任务:提交并发计数与有界缓冲的输入、分区、调度、结果摘要和串并行对照。只报告并行版更快没有意义,因为输入、版本、工作者数、预热、正确性和窗口都可能变化。本节先固定串行基线及可观察输出,再问哪些工作独立、哪些依赖形成关键路径、哪些共享状态带来同步或通信。(唯一锚点 PC-04-07-A《并发计数与有界缓冲》。)

核心机制是:固定并发计数与有界缓冲的工作单元、依赖和共享状态,先串行基线,再构造并行时间线与成本模型。先画任务节点、数据所有者和先行关系,对每条边注明数据、同步或消息。没有时间线时,“同时执行”只是愿望,竞态、死锁、重复工作和尾部等待都无法定位。(唯一锚点 PC-04-07-B《并发计数与有界缓冲》。)

第一步:串行基线与结果契约

第一步先写确定性的串行参考或手算过程,保存输入、完整输出、校验摘要和原始操作计数。整数结果应逐项一致;浮点规约若改变顺序,要声明误差界、比较方式和可复现模式。性能优化不能以错误答案换速度。(唯一锚点 PC-04-07-C《并发计数与有界缓冲》。)

接着把规模写成元素数、边数、任务数、消息字节和工作集等变量,分别列计算工作、跨度、同步、通信、调度、分配和缓存失效。Big-O相同仍可能因关键路径、局部性与常数开销表现相反。(唯一锚点 PC-04-07-D《并发计数与有界缓冲》。)

接着:逐步构造并行计划

接着把工作划成可编号单元,为每个单元写输入范围、输出位置、读取集、写入集和前置依赖。先用两个工作者手推合法交错,再手推最坏交错;同时写同一位置或无happens-before的一读一写,必须以所有权、局部规约、原子、同步或消息重构。(唯一锚点 PC-04-07-E《并发计数与有界缓冲》。)

简化模型有10个单元,每个2次基本操作,计算工作 10×2=20。随后另列线程创建、任务入队、屏障、缓存行转移和消息开销,不能把它们偷藏进常数;粒度太细时并行开销会超过有效工作。(唯一锚点 PC-04-07-F《并发计数与有界缓冲》。)

然后:确定性实验与时间线

然后运行固定调度或离散事件仿真,输出分区、任务领取、依赖完成和合并顺序;真实CPU线程测量则把调度波动与结果契约分开。四组测试覆盖单工作者、工作者多于任务、不能整除的余数和高度不均负载。(唯一锚点 PC-04-07-G《并发计数与有界缓冲》。)

记录解释器/编译器、核心数、输入种子、重复次数和原始结果。用中位数与分位数展示分布,保留冷启动和异常值并说明规则。一次墙钟变快不能证明机制,需由计数、trace或瓶颈模型支持。(唯一锚点 PC-04-07-H《并发计数与有界缓冲》。)

最后:故障注入与边界复核

最后主动去掉同步、减小块、制造长任务、让消息乱序、让工作集越过缓存或提高串行比例。边界是:规模、工作者数、块大小、分布或交错改变时必须重新验证。先预测首个错误或性能拐点,再用校验、任务时间线和成本分解定位。(唯一锚点 PC-04-07-I《并发计数与有界缓冲》。)

常见误区包括把并发当并行、把线程数当加速比、把平均时间当尾延迟、把无数据竞争当结果确定、把原子当复合事务、把GPU线程当CPU线程、把发送完成当对端已消费。每项都要构造最小反例。(唯一锚点 PC-04-07-J《并发计数与有界缓冲》。)

工作、跨度、内存与通信

同一算法同时检查工作W、跨度T∞、处理器数P、内存流量、通信量与同步次数。理想时间下界为 max(W/P,T∞),实际时间还叠加调度、同步、通信和缓存成本;公式只有在规模和假设明确时才成立。(唯一锚点 PC-04-07-K《并发计数与有界缓冲》。)

向前连接Programming II的抽象、测试和资源生命周期,向后连接分布式系统的消息、故障与一致性。并行课研究工作分解、依赖和资源映射,性能工程要求用可重复测量证明瓶颈与优化因果。(唯一锚点 PC-04-07-L《并发计数与有界缓冲》。)

在线练习与严格验收

本节绑定单选、多选和计算题;章节另有确定性Python实验,均四个测试且不依赖GPU。代码题输出稳定结果、计划或计数,不用不可复现的墙钟阈值判分。完成后补第五个退化输入并解释复杂度与正确性。(唯一锚点 PC-04-07-M《并发计数与有界缓冲》。)

下课前闭卷自检

一,写串行结果契约。二,画任务DAG与关键路径。三,列读写集。四,解释固定并发计数与有界缓冲的工作单元、依赖和共享状态,先串行基线,再构造并行时间线与成本模型。五,构造余数或长尾反例。六,分解计算、同步、通信和内存成本。七,说明如何复现实验。(唯一锚点 PC-04-07-N《并发计数与有界缓冲》。)

若答案仍是“多开线程”“换GPU”“加锁就行”,回到串行基线、任务时间线和成本模型。合格标准是结果可复核、提升可重复、瓶颈有证据,并知道条件改变时结论为何失效。(唯一锚点 PC-04-07-O《并发计数与有界缓冲》。)

Practice

本课练习

5

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

1单选:并发计数与有界缓冲 3

验收“提交并发计数与有界缓冲的输入、分区、调度、结果摘要和串并行对照”时哪项形成可复现证据?

登录 后答题可以领小红花
2多选:并发计数与有界缓冲 3

复核并发计数与有界缓冲哪些材料不可缺?

多选题:必须选全正确项,漏选或多选均不得分。

登录 后答题可以领小红花
3计算:并发计数与有界缓冲 3

《并发计数与有界缓冲》简化模型:7个单元各2次操作,总工作量?

登录 后答题可以领小红花
4可运行实验:并发计数与有界缓冲确定性模型 5

实现并发计数与有界缓冲确定性模型。Python 3标准输入输出;不得依赖GPU、墙钟阈值或外部服务。

登录 后答题可以领小红花
5U04独立题03:并发计数与有界缓冲 4

围绕并发计数与有界缓冲,11个单元各6次操作,总工作量?

登录 后答题可以领小红花