Skip to the content.

Lecture 7 - Races and Parallelism

课程内容

本节课简述了一些关于竞争的问题,主要讲述了关于并行度的计算。

Determinacy Races

当两个逻辑上并行的指令访问同样的内存空间,并且至少有一个指令进行了写操作时,会出现Determinacy Races的情况。

竞争的种类

A B Race Types
read read N/A
read write read race
write read read race
write write write race

避免竞争

什么是Parallelism(并行度)?

计算图

Amdahl’s “Law”

如果你的程序50%的是并行的,50%的是串行的,那么,无论你用多少个核,你不可能达到两倍以上的加速比。 —— Gene M. Amdahl

总结:总体上来说,如果你的程序有$\alpha$占比的内容必须串行执行,那么加速比最多是$1/\alpha$。备注:这只是一个很松的上限。

性能衡量

$T_p$:在P个核心上的执行时间

$T_1$:work(总工作量)

$T_\infty$:span(关键路径、最长路径、计算深度)

Work Law:$T_p \ge T_1/P$

Span Law: $T_p \ge T_\infty$

Speedup(加速比)

加速比:$T_1 / T_p$

并行度

最大可能的加速比:

$T_1 / T_\infty$:parallelism,the average amount of work per step along the span(在最长路径上每一步的平均工作量)

调度理论(Scheduling Theory)

贪婪调度

核心思想:每一步都做尽可能多的工作

定义:当一个strand的所有前驱都完成了的时候,那么称其为准备就绪。

Complete Step:

Incomplete Step:

分析贪婪调度算法

定理:对于任何一个贪婪调度器有: \(T_p \le T_1 / P + T_\infty\)

贪婪调度的最优

推论:对于任意一个贪婪调度器的执行时间,是最优调度算法的2倍以内。

线性加速比

推论:当$T_1 / T_\infty » P$任何一个贪婪调度器可以达到近乎完美线性的加速比。

定义:$T_1 / (P T_\infty)$成为parallel slackness(松弛度、松紧度)。

一般地,这个值大于等于10比较好,才能抵消掉多线程带来的开销。

其他