网站大量收购独家精品文档,联系QQ:2885784924

U9并行计算应用指南.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
U9并行计算应用指南

.Net新特性-并行计算应用指南特性简介并行编程体系结构许多个人计算机和工作站都有两个或四个内核(即 CPU),使多个线程能够同时执行。在不久的将来,计算机预期会有更多的内核。为了利用当今和未来的硬件,您可以对代码进行并行化,以将工作分摊在多个处理器上。过去,并行化需要线程和锁的低级操作。 Visual Studio 2010 和 .NET Framework 4 提供了新的运行时、新的类库类型以及新的诊断工具,从而增强了对并行编程的支持。这些功能简化了并行开发,使您能够通过固有方法编写高效、细化且可伸缩的并行代码,而不必直接处理线程或线程池。下图从较高层面上概述了 .NET Framework 4 中的并行编程体系结构。图1、并行编程体系结构并行计算组件图2、并行计算组件NET 4.0并行计算组件主要包括以下几个部分:1 并行语言集成查询(PLINQ,Parallel Language Integrated Query),这是.NET 3.0引入的LINQ to Object的换代“产品”,让查询操作可以并行执行。2 任务并行库(TPL,Task Parallel Library):将开发并行程序的抽象级别从“线程(thread)”提升到“任务(Task)”,只需规定好计算机要执行的任务,然后由.NET去管理线程的创建和同步等问题。3 同步的数据结构(CDS,Coordination Data Structures):包括一组线程安全的常用数据结构,比如线程安全的队列、堆栈等,在并行程序中访问这些数据结构,可以不需要显式地使用lock。4 任务调度器(Task Scheduler):负责任务的创建、执行、暂停等管理工作。5 线程池:.NET 4.0对原有的托管线程池功能进行了大幅度的增强,通过给其集成一个任务调度器,线程池中的线程可以高效地并行执行各种任务。上述五个组成部分当中,PLINQ是建立在TPL之上的,而Task Scheduler是并行计算的核心,是一个Runtime,它与线程池相集成,负责将任务分派给线程池中的各个线程执行。任务并行库数据并行数据并行是指对源集合或数组中的元素同时(即并行)执行相同操作的情况。System.Threading.Tasks.Parallel类中For和ForEach方法的若干重载支持使用强制性语法的数据并行。在数据并行操作中,将对源集合进行分区,以便多个线程能够同时对不同的片段进行操作。 TPL 支持通过System.Threading.Tasks.Parallel类实现的数据并行。此类提供for和foreach循环(Visual Basic 中为 For 和 For Each)基于方法的并行实现。为Parallel.For或Parallel.ForEach循环编写循环逻辑与编写顺序循环非常类似。您不必创建线程或队列工作项。在基本的循环中,您不必采用锁。 TPL 将为您处理所有低级别工作。下面的代码示例演示一个简单的foreach循环及其并行等效项。当并行循环运行时,TPL 将对数据源进行分区,以便循环能够同时对多个部分进行操作。在后台,任务计划程序将根据系统资源和工作负荷来对任务进行分区。如有可能,计划程序会在工作负荷变得不平衡的情况下在多个线程和处理器之间重新分配工作。附件:数据并行代码示例任务并行顾名思义,任务并行库 (TPL) 基于任务的概念。术语“任务并行”是指一个或多个独立的任务同时运行。任务表示异步操作,在某些方面它类似于创建新线程或ThreadPool工作项,但抽象级别较高。任务提供两个主要好处:系统资源的使用效率更高,可伸缩性更好。在后台,任务排队到ThreadPool,ThreadPool已使用登山等算法进行增强,这些算法能够确定并调整到可最大化吞吐量的线程数。这会使任务相对轻量,您可以创建很多任务以启用细化并行。为了补偿这一点,可使用众所周知的工作窃取算法提供负载平衡。对于线程或工作项,可以使用更多的编程控件。任务和围绕它们生成的框架提供了一组丰富的 API,这些 API 支持等待、取消、继续、可靠的异常处理、详细状态、自定义计划等功能。出于这两个原因,在 .NET Framework 4 中,任务是用于编写多线程、异步和并行代码的首选 API。附件:任务并行代码示例并行指令生成图3、并行指令软件工程师使用Paralllel类编写的并行算法,经过编译器的处理,会全部转换为对Task类相应方法和属性的调用指令,这些指令被保存到编译好的程序集中。Task类的实例代表一个可以被并行执行的任务,任务(而不是线程!)是TPL实现并行计算的基本单位。任务并行库工作原理任务由线程负责执行,为了获取较高的性能,TPL使用线程池中的线程,并且使用了一个与线程池直接集成的“任务调度

文档评论(0)

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

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

1亿VIP精品文档

相关文档