“Master theorem 只处理 $aT(n/b)+f(n)$ 型规则分治。缓存无关模型还需为同一递归计算块传输,CPU 递推不能替代 cache recurrence;Work–Dep…”
Computation DAG ​
把一次确定的并行执行展开成有向无环图
总工作与深度定义为
若节点有权重
与 的关系 ​
在单位成本、忽略调度开销时,单处理器必须执行全部节点,所以
比值
八叶归约的层次状态 ​
八个输入各先产生一个叶任务,然后两两合并。若只计七个加法节点,三层 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.