“在Work–Depth 模型中,把计算固定为带 precedence 边的有向无环图:每个节点恰耗一个离散时间步,总节点数即 work $W$,最长依赖链的节点数即 span $D$。给定…”
形式陈述 ​
Computation DAG ​
Work–Depth 是并行算法模型的一种依赖 DAG 抽象:把一次确定的并行执行展开成有向无环图
总工作与深度定义为
若节点有权重
与 的关系 ​
在单位成本、忽略调度开销时,单处理器必须执行全部节点,所以
比值
直觉
Work 统计所有必须完成的任务,depth 统计任何调度都绕不过的最长依赖链。前者限制有限处理器的总吞吐,后者限制无限处理器的最快时间;二者分开后,平均并行度
例子与边界
八叶归约的层次状态 ​
八个输入各先产生一个叶任务,然后两两合并。若只计七个加法节点,三层 ready 集大小依次为 4、2、1:work 为 7,depth 为 3,平均并行度
在
组合规则 ​
两个 DAG 顺序组合、第二个必须等第一个全部结束时,
若二者完全独立并行启动,则
Fork–join 程序常同时包含两种组合。一个循环体可并行不代表下一阶段与它独立;漏画 barrier 或数据依赖会人为缩短 span。反过来,加入不必要的全局 barrier 会让 DAG 比算法真正依赖更深。
推论与应用
Work efficiency 与 slackness ​
若
当
随机 DAG 与量词 ​
若算法随机性决定分支或任务数量,
调度器随机性与算法随机性也应分开。工作窃取的期望界通常固定一棵 fully strict computation DAG,再对随机受害者选择取期望。
模型边界 ​
Work–Depth DAG 表达控制与数据依赖,却不自动计通信、cache miss、内存容量或写冲突。两个节点没有依赖边,只说明语义上可并行,不保证它们访问内存时没有带宽竞争。
Depth 有时也指 PRAM 同步轮数;span 更强调关键路径。页面可把
参考资料
- Guy Blelloch, Prefix Sums and Their Applications, CMU Technical Report, 1990.
- Robert Blumofe, Charles Leiserson, Scheduling Multithreaded Computations by Work Stealing, Journal of the ACM, 1999.
- Thomas Cormen et al., Introduction to Algorithms, 4th ed., MIT Press, 2022, multithreaded algorithms.