动机:我的任务是测量我的CUDA C代码的Karp-Flatt metric和parallel efficiency,这需要计算加速。特别是,我需要将所有这些指标绘制为处理器数量 p
的函数。
定义: Speedup是指并行算法比相应的顺序算法快多少,定义为:
问题:我已在 CUDA C 中实施了我的算法,并已定时获取 Tp
。但是,在确定 Sp
时仍存在一些问题:
T1
?
p
是什么?
非常感谢。
答案 0 :(得分:11)
要获得合理的加速度量,您需要实际的顺序程序。如果你没有,你需要编写最好的顺序版本,因为将高度调整的并行代码与垃圾串行实现进行比较是不合理的。
您也无法合理地将并行程序的1处理器版本与N处理器版本进行比较,以获得真正的加速度量。这样的比较告诉你加速从同一程序的P = 1到P = N,但是加速曲线的要点是为什么要建立一个并行程序(这通常更难,需要更复杂的硬件[GPU]和与使用更广泛可用的硬件和工具编写最佳顺序版本相比,工具[OpenCL]更有意义。
换句话说,没有作弊。
答案 1 :(得分:0)
在测量加速时,在大多数情况下,您必须从头开始完全写入串行和并行算法。没有特别的原因,P = 1的最佳并行算法与最优串行算法有任何共同之处。在大多数情况下,并行算法将需要做大量的额外工作,并且与最优的串行算法相比效率很低。