动态多线程
概述
动态多线程(Dynamic Multithreading)是一种并行计算模型,通过
spawn(生成并行子任务)和sync(等待子任务完成)两个关键字来表达算法中的并行性。其性能由三个关键指标刻画:work(总操作数)、span(最长依赖链/关键路径长度)和parallelism(并行度 = work/span)。
定义
动态多线程(Dynamic Multithreading)
动态多线程模型使用伪指令扩展串行模型:
spawn:生成一个并行子线程,父线程可与子线程并行执行sync:等待所有通过spawn生成的子线程完成后再继续算法的并行性由计算有向无环图(computation DAG)表示:
- 每个顶点代表一个strand(连续的非并行指令序列)
- 边代表 strand 之间的依赖关系(先后顺序)
性能指标
设计算 DAG 为 ,则:
- Work :所有 strand 的执行时间之和(在单处理器上的运行时间)
- Span :DAG 中最长路径(关键路径)的长度(在无限处理器上的运行时间)
- Parallelism :理论最大加速比的上界
在 个处理器上的运行时间 满足:
核心性质
| 指标 | 符号 | 含义 | 理想目标 |
|---|---|---|---|
| Work | 总操作数 | 尽量接近最优串行算法 | |
| Span | 最长依赖链 | 尽量短,决定并行加速上限 | |
| Parallelism | 并行度 | 越大越好,理想 | |
| Speedup | 实际加速比 | 越接近 越好 |