U9并行计算应用指南

U9并行计算应用指南

ID:40491555

大小:429.49 KB

页数:8页

时间:2019-08-03

U9并行计算应用指南_第1页
U9并行计算应用指南_第2页
U9并行计算应用指南_第3页
U9并行计算应用指南_第4页
U9并行计算应用指南_第5页
资源描述:

《U9并行计算应用指南》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.Net新特性-并行计算应用指南1.特性简介1.1.并行编程体系结构许多个人计算机和工作站都有两个或四个内核(即CPU),使多个线程能够同时执行。在不久的将来,计算机预期会有更多的内核。为了利用当今和未来的硬件,您可以对代码进行并行化,以将工作分摊在多个处理器上。过去,并行化需要线程和锁的低级操作。VisualStudio2010和.NETFramework4提供了新的运行时、新的类库类型以及新的诊断工具,从而增强了对并行编程的支持。这些功能简化了并行开发,使您能够通过固有方法编写高效、细化且可伸缩的并行代码,而不必直接处理线程或线程池。下图从较高层面上概述了.NETFr

2、amework4中的并行编程体系结构。图1、并行编程体系结构1.1.并行计算组件图2、并行计算组件NET4.0并行计算组件主要包括以下几个部分:1并行语言集成查询(PLINQ,ParallelLanguageIntegratedQuery),这是.NET3.0引入的LINQtoObject的换代“产品”,让查询操作可以并行执行。2任务并行库(TPL,TaskParallelLibrary):将开发并行程序的抽象级别从“线程(thread)”提升到“任务(Task)”,只需规定好计算机要执行的任务,然后由.NET去管理线程的创建和同步等问题。3同步的数据结构(CDS,Coo

3、rdinationDataStructures):包括一组线程安全的常用数据结构,比如线程安全的队列、堆栈等,在并行程序中访问这些数据结构,可以不需要显式地使用lock。4任务调度器(TaskScheduler):负责任务的创建、执行、暂停等管理工作。5线程池:.NET4.0对原有的托管线程池功能进行了大幅度的增强,通过给其集成一个任务调度器,线程池中的线程可以高效地并行执行各种任务。上述五个组成部分当中,PLINQ是建立在TPL之上的,而TaskScheduler是并行计算的核心,是一个Runtime,它与线程池相集成,负责将任务分派给线程池中的各个线程执行。2.任务并

4、行库2.1.数据并行数据并行是指对源集合或数组中的元素同时(即并行)执行相同操作的情况。System.Threading.Tasks.Parallel类中For和ForEach方法的若干重载支持使用强制性语法的数据并行。在数据并行操作中,将对源集合进行分区,以便多个线程能够同时对不同的片段进行操作。TPL支持通过System.Threading.Tasks.Parallel类实现的数据并行。此类提供for和foreach循环(VisualBasic中为For和ForEach)基于方法的并行实现。为Parallel.For或Parallel.ForEach循环编写循环逻辑与

5、编写顺序循环非常类似。您不必创建线程或队列工作项。在基本的循环中,您不必采用锁。TPL将为您处理所有低级别工作。下面的代码示例演示一个简单的foreach循环及其并行等效项。当并行循环运行时,TPL将对数据源进行分区,以便循环能够同时对多个部分进行操作。在后台,任务计划程序将根据系统资源和工作负荷来对任务进行分区。如有可能,计划程序会在工作负荷变得不平衡的情况下在多个线程和处理器之间重新分配工作。附件:数据并行代码示例1.1.任务并行顾名思义,任务并行库(TPL)基于任务的概念。术语“任务并行”是指一个或多个独立的任务同时运行。任务表示异步操作,在某些方面它类似于创建新线

6、程或ThreadPool工作项,但抽象级别较高。任务提供两个主要好处:系统资源的使用效率更高,可伸缩性更好。在后台,任务排队到ThreadPool,ThreadPool已使用登山等算法进行增强,这些算法能够确定并调整到可最大化吞吐量的线程数。这会使任务相对轻量,您可以创建很多任务以启用细化并行。为了补偿这一点,可使用众所周知的工作窃取算法提供负载平衡。对于线程或工作项,可以使用更多的编程控件。任务和围绕它们生成的框架提供了一组丰富的API,这些API支持等待、取消、继续、可靠的异常处理、详细状态、自定义计划等功能。出于这两个原因,在.NETFramework4中,任务是用

7、于编写多线程、异步和并行代码的首选API。附件:任务并行代码示例1.2.并行指令生成图3、并行指令软件工程师使用Paralllel类编写的并行算法,经过编译器的处理,会全部转换为对Task类相应方法和属性的调用指令,这些指令被保存到编译好的程序集中。Task类的实例代表一个可以被并行执行的任务,任务(而不是线程!)是TPL实现并行计算的基本单位。1.1.任务并行库工作原理任务由线程负责执行,为了获取较高的性能,TPL使用线程池中的线程,并且使用了一个与线程池直接集成的“任务调度器(TaskScheduler)”来负责分派工作任

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。