您的位置:首页 > 编程语言

Microsoft Visual Studio 并行编程基础(一)Windows应用程序加速定律

2014-07-07 23:33 453 查看
加速(Speedup)是在多核心CPU机器上运行应用程序(相比单核心CPU机器)所能够预期的性能效益。测量加速时,是以单核心CPU机器的性能为基线。当然,你可能会认为同一个App(应用程序)在双核心CPU上运行的速度比单核心快了两倍,四核心CPU快四倍。但是,这是不正确的。除了一些特例,比如超线性加速,即使整个App都并行运行,线性加速也是不可能的。这是因为总有一些并行应用程序的开销,比如将线程调度到单独的处理器。因此,线性加速是不可实现的。

并行代码线性加速具有以下限制:

1、串行代码

2、并行开销

3、同步

4、顺序输入/输出

一、阿姆德尔定律:



预测加速在设计、基准评测以及测试并行应用程序是很重要。当然这也有计算加速的公式。其中一个公式是阿姆德尔定律。吉恩 阿姆德尔在1967年新建了阿姆德尔定律,用以计算并行应用程序的最大加速。

阿姆德尔定律基于三个变量来计算并行代码的加速:

1、在单核机器上运行应用程序的持续时间

2、并行应用程序的百分比

3、处理器内核的数量

下面是公式,它返回单核对多核性能的比率:



该公式以应用程序在单核机器上的持续时间为基准。

公式中的分子代表基础持续时间,总是等于1。计算的动态部分在分母。变量P是并行应用程序的百分比,N是处理器内核的数量。

二、古斯塔夫森定律:



约翰 古斯塔夫森和爱德华 巴西斯在1988年退出了古斯塔夫森定律,与阿姆德尔定律形成竞争关系。但是,阿姆德尔定律预测CPU添加到计算环境之后的性能。这被称为“加速”,代表性能增益。然而在现实世界中,性能增益有时会改变用途,阿姆德尔定律没有考虑到这种问题,相反,他假设App的并行和串行是一种固定的关系。应用程序可以分割为顺序和并行部分。当其他处理器被添加后,阿姆德尔定律会保持这种比例。串行和并行部分各自保持一半。但是,在现实世界里,随着计算能力的提高,完成的工作更多,所以顺序部分的相对持续时间减少。此外,阿姆德尔定律没有考虑调度、管理和执行并行任务所需要的开销。然而古斯塔夫森定律则考虑了这些因素。

下面是古斯塔夫森定律计算加速的公式:



在上面的公式中,S是App中串行代码的百分比,N是处理器内核的数量,On是来自并行代码的开销。

2014-07-07
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐