购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 性能指标

为了客观评估并行计算程序的性能,需要一些标准。FLOPS和加速比是最通用的指标。此外,对于特定的问题(如人工智能和大数据),还有一些特定的评测基准。

1.5.1 FLOPS

传统的高性能计算通常使用每秒处理的浮点计算次数(FLoating point OPerations per Second,FLOPS)来衡量软硬件的性能。

提示

浮点数是指计算机以一定比特位数表示的小数。比特位数越高,数值越精确,但计算成本也越高。业界已经形成了一些标准,电气电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)定义了16位浮点数(FP16)、32位浮点数(FP32)和64位浮点数(FP64)在计算机中的表示方法。大部分科学计算任务需要FP64,而深度学习等任务只需要FP32、FP16甚至更低。需要明确的是,使用的是FP32还是FP64精度下的FLOPS。因为不同硬件提供的FP32和FP64算力差异很大。

FLOPS指的是每秒钟能够完成的浮点计算次数。如果进行一个 n 维向量加法 a + b 所需的浮点计算次数为 n 。将浮点计算次数除以时间,就是FLOPS。

FLOPS指标不仅依赖于硬件性能,还与软件和算法高度相关。1.3节提到了线程安全问题,1.2节提到了任务分发调度。如果软件算法设计不够好,可能导致大量计算资源闲置,从而使应用程序的FLOPS较低。

1.5.2 加速比

理论上,并行程序应该比对应的串行程序更快,所需时间更短。执行时间的缩短可以通过加速比来衡量:

其中, t s 为串行程序的执行时间, t p 为并行程序的执行时间。

在加速比指标的基础上,还有一种衡量方法,叫作效率:

其中, N 为并行程序所使用的计算核心的数量。当加速比等于 N 时,说明串行程序可以线性拓展到多个计算核心上,此时可以说并行程序获得了线性加速比。

线性加速比是最理想的情况,实际上很难达到。并行程序需要调度器将不同的任务分发到多个Worker上,多个Worker之间还需要通信,数据在多个Worker之间需要同步,这些步骤都会浪费时间。

另外,在使用GPU时,计算效率指标的 N 取值也存在一定争议。GPU上的计算核心数量庞大,很难在一个GPU计算核心上测试得到 t s 。GPU与CPU是协同工作的,在计算加速比或效率时,是否需要把CPU考虑进来,目前尚未达成共识。 HJw/JT4VvB6aZXqPKvqVoEtZun+QZsbLtSHfmE5z2dHIRN2seft12OZNV5pT28JN

点击中间区域
呼出菜单
上一章
目录
下一章
×