Sun Studio 12:Fortran 编程指南

10.1.1 加速-期望目标

如果要使程序并行化以便该程序在四个处理器上运行,这样运行该程序花费的时间是否大致是在单个处理器上运行时所花费时间的四分之一(四倍加速)呢?

可能不行。可以证明(依据 Amdahl 法则):程序的总体加速性能严格受花在并行运行代码上的时间数量的限制。无论采用多少处理器都是如此。事实上,如果用 p 表示并行模式下花费的总程序执行时间的百分比,则理论加速限度为 100/(100–p);因此,如果只有 60% 的程序执行是以并行方式进行的,则最高加速倍数是 2.5,该值与处理器个数无关。对于只有四个处理器的情况,该程序的理论加速值(假设可以达到最高效率)只有 1.8 而不是 4。与总开销相比,实际加速较少。

如同优化一样,循环的选择至关重要。如果并行化的循环在总的程序执行时间中只占很小一部分,则只能获得微小的效果。要提高效率,必须并行化耗用大部分运行时间的循环。因此,第一步先要确定哪些循环是主要的,然后从此开始。

问题量在确定并行运行程序片段并进而确定加速性能中也起着重要作用。增加问题量会增加循环中完成的工作量。三重嵌套循环将会使工作量呈立方级数递增。如果并行化外层嵌套循环,则少量增加问题量便能使性能有显著提高(与未并行化性能相比)。