Measure Performence
speedup
-
顺序执行时间 / 并行执行时间
-
在顺序执行的执行时间,选择测试中的最好的measure,使用找到的baseline,而不是自己写的baseline
Efficency
- 用于加速的处理器个数P / P的总数
用处
- 常用于衡量多cpu core的程序
- 希望是接近1,大多数情况都是小于1的
- 超线程加速:使用额外资源,例如cache等,所以efficency大于1
- 对于GPU来说,efficency衡量的就不是很有效了。
- 对于GPU,一般衡量efficency是将使用的资源与峰值进行比较。
Scalability
- 衡量当计算资源增加时,我们的硬件和软件利用计算资源的能力。表现为当processors增加的时候,speed up的值是多少,好的表现为近似线性关系
- 下图的这个例子里,就不是scalable code
阿姆达尔定律
- $speedup=1 / ( s + p / N )$
- 当问题规模一定时,提高硬件资源N,以提高speedup。
古斯塔夫森定律
- $W(s)=(1-p)*W +spW$
$W$:在系统加入新资源前,$T$时间内可以完成的任务 $p$:系统中,可以使用并行计算的任务的比例 $(1-p)$:系统中,不可以使用并行计算的任务的比例 $s$:计算资源(初始系统中的计算资源为1) $W(s)$:$T$时间内可以完成的任务,是相关的$s$函数
当问题规模增大的时候,对于相同问题,通过增加硬件资源数可以让work/processor保持稳定。