基于任务的程序设计.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#并行编程高级教程:精通.NET 4 Parallel Extensions 第1章 基于任务的程序设计 PAGE 20 PAGE 19 第 章1 第 章 1 基于任务的程序设计 本章概要 使用共享内存的多核处理器 理解共享内存的多核系统与分布式内存系统之间的区别 在共享内存的架构中进行并行编程和多核编程 理解硬件线程和软件线程 理解Amdahl法则 考虑Gustafson法则 使用轻量级并发模型 进行成功的基于任务的设计 理解交错并发、并发和并行之间的区别 对任务进行并行化,并减少临界区域 理解多核架构的并行编程的规则 准备使用NUMA架构 本章介绍了新的基于任务的程序设计,通过这种方式可以在应用程序中引入并行化。并行化对于发挥现代共享内存多核架构的特性是非常重要的。本章描述了轻量级的并发模型,还介绍了与并发与并行相关的重要概念。为了让您能够更好地理解后面10章的内容,本章介绍了必要的背景知识。 1.1 使用共享内存的多核系统 2005年,Herb Sutter在Dr. Dobb’s Journal杂志发表了一篇名为“The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software”的文章(www.gotw.ca/publications/ concurrency-ddj.htm)。他在这篇文章中讨论了开发软件时要开始考虑并发性的必要性,提出只有考虑了并发性才能充分发挥微处理器日渐增长的吞吐能力。微处理器厂商不是一味地增加处理器的时钟频率,而是在向处理器中添加更多的内核。软件开发人员再也不能依赖于增加时钟频率带来性能提升的免费午餐了。 当今的很多计算机至少都有一颗双核的微处理器。然而,带有四个内核和八个内核的四核处理器和八核处理器在服务器、高端工作站甚至在高端移动计算机上都非常常见。在单个处理器上具有更多内核的时代正在来临。现代微处理器提供了新型的多核架构。因此,软件设计和编码能够准备好充分发挥这些架构的功能是一件非常重要的事情。Visual C# 2010和.NET Framework 4所生成的各种应用程序运行在一个或多个中央处理单元(central processing units,CPU),即主微处理器上。每一个这种微处理器都可能包含不同数目的内核,每一个内核都可以执行指令。 您可以将多核微处理器想象为在一个单独的封装包内的很多互相连接的微处理器。所有的内核都可以访问主内存,如图1-1所示。因此,这种架构也称为共享内存的多核架构(shared-memory multicore)。这种方式的共享内存很容易导致性能瓶颈。 图 1-1 多核微处理器有很多种不同的复杂微架构,旨在提供更强的并行执行能力,提升整体吞吐量,并减少潜在的瓶颈。同时,多核微处理器还在努力缩减电源消耗,并减少发热量。因此,很多现代的微处理器可以根据工作负载提升或降低每个内核的时钟频率,甚至可以让不在使用中的内核进入睡眠状态。Windows 7和Windows Server 2008 R2还支持一项名为内核暂停(Core Parking)的新功能。当正在使用的内核不多的时候就会启用这项功能,操作系统会使剩下的内核进入睡眠状态。当需要使用这些内核的时候,操作系统又会唤醒这些睡眠的内核。 现代微处理器可以为每个内核使用动态的频率。由于内核不以固定的频率工作,因此很难预测指令序列的性能。例如,Intel Turbo Boost Technology能够提升活动内核的频率。提升一个内核频率的过程也称为超频(overclocking)。 如果一个内核的工作负载非常重,那么这项技术能够让这个内核以更高的频率工作,而其他内核保持空闲状态。如果很多内核的工作负载都非常繁重,那么这些内核将都能够以更高的频率工作,但是不能达到单个内核工作时那么高的频率。微处理器不能让所有的内核长时间超频工作,因为这样会消耗更多的电力,而且温度会迅速上升。所有内核在重负载情况下的平均时钟频率比单个内核能够达到的时钟频率要低。因此,在某些特定的情况下,有一些代码能够在比别的代码更高的频率下运行,这样就使得真实性能的测量变得困难了。 1.1.1 共享内存多核系统与分布式内存系统之间的区别 分布式内存的计算机系统由很多微处理器组成,每个微处理器都有自己私有的内存,如图1-2所示。每个微处理器都可以位于不同的计算机上,而且计算机之间可以有不同类型的通信信道。例如,有线网络和无线网络都可以是通信信道。如果运行在一个微处理器上的作业需要远程数据,那么这个作业就必须通过通信信道与远程微处理器进行通信。消息传递接口(Message Passing Interface,M

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档