热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

加速(Speedup)是在多核心CPU机器上运行应用程序(相比单核心CPU机器)所能够预期的性能效益。测量加速时,是以单核心CPU机器的性能为基线。当然,你可能会认为同一个App(应用程序)在双核心C



加速(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





推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍如何在Linux Mint系统上搭建Rust开发环境,包括安装IntelliJ IDEA、Rust工具链及必要的插件。通过详细步骤,帮助开发者快速上手。 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 本文详细介绍了 Visual FoxPro 中 GETCOLOR() 函数的功能及其使用方法,帮助开发者更好地理解和应用该函数。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文详细介绍了在 Windows 7 系统中配置 Nginx 1.10.3 和 PHP 7.1.1 NTS 的步骤,包括修改 PHP 配置文件、处理依赖项以及创建批处理脚本启动和停止服务。重点解释了如何解决常见的运行时错误。 ... [详细]
  • 本文介绍如何在 Visual Studio Code 中使用 Jupyter Notebook 插件,包括创建、编辑和运行笔记本的基本操作。 ... [详细]
author-avatar
梦幻小螳螂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有