并行计算性能指标与多线程应用设计规则
1. 并行计算性能指标
在并行计算中,我们常常会遇到这样的问题:如果使用串行应用程序运行更大的数据集,执行时间会是多少?更大的数据集能否在单核系统上运行?为了解决这些问题,我们引入了一些重要的性能指标。
1.1 Gustafson - Barsis 定律
Gustafson - Barsis 定律,也称为缩放加速比,考虑了随着核心数量的增加,数据大小成比例增加的情况,并计算应用程序的(上限)加速比,就好像更大的数据集可以串行执行一样。与 Amdahl 定律用于预测串行代码并行化后能实现的加速比不同,Gustafson - Barsis 定律用于计算现有并行代码的加速比。其公式为:
[Speedup \leq p + (1 - p)s]
其中,(p) 是核心数量,(s) 是并行应用程序在给定数据集和核心数量下串行执行所花费时间的百分比。
例如,一个并行应用程序在 32 个核心上的总执行时间为 1040 秒,其中 14 秒是在 32 个核心中的 1 个核心上进行串行执行的时间。那么该应用程序在同一数据集上(如果可能的话)在单线程上运行的加速比为:
[Speedup \leq 32 + (1 - 32)(0.013) = 32 - 0.403 = 31.597]
需要注意的是,如果使用 Amdahl 定律来计算这个加速比,可能会得到错误的结果。因为串行时间的百分比是相对于 32 核心执行的并行时间,而不是潜在的并行时间。经过正确计算,使用 Amdahl 定律得到的加速比为 31.582。
1.2 效率
与加速比相关的另一个重要指标是
超级会员免费看
订阅专栏 解锁全文
173万+

被折叠的 条评论
为什么被折叠?



