欢迎来到天天文库
浏览记录
ID:22754103
大小:54.00 KB
页数:6页
时间:2018-10-31
《简述c#多核并行编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、简述C#多核并行编程多核处理器的出现使得传统的串行编程模式无法利用多核、多处理器的优势,随着多核、多处理器平台的出现,多核编程也得到了更深层次的发展,而现在并行编程技术的发展并不能完全利用多核的优势,因而寻求新的并行编程技术是十分必要的。C#是.平台中引入完全面向对象的编程语言,是C/C++的衍生语言,不但将C/C++的强大功能继承下来,并且去掉了它们的一些复杂特性,是一种能快速高效地实现基于.平台软件开发的编程语言,且C#已经支持并发代码,这对于实现C#多核并行编程是十分必要且有利的。 1多核并行编程概述 1.1多核环境 随着社会数字
2、化、信息化的不断发展,对于计算机对数据的处理速度要求越来越快,在现代计算机技术的不断发展下,多核处理器已经成为计算机的处理器的主流,现代计算机大多都至少有一个双核的微处理器。 多核处理器是将两个及其以上的具有完全功能的核心集成在同一个芯片上,并将整个芯片作为整体对外输出。多核处理器所集成的核心可以是单线程处理核心或多线程处理核心,集成后的多核处理器可同时执行的线程数或任务书是原本单处理器的数倍,这为处理器实现更高程度的并行提供了可能。并且,由于所有的核心都集成在片内,这就缩短了核心之间通信更高效,缩短核间的通信延迟,数据传输带宽也得到了提高
3、。除此之外,由于多核处理器的集成性,功耗降低,提高了其片上资源的利用率。由于多核处理器结构简单,易于优化,扩展性强,这些特点使得多核的发展并逐渐取代单处理器成为主流。 1.2.并行编程 传统的串行代码是顺序执行,且只用一个处理器,但随着现在多核的普及,串行程序无法充分利用多核的特点,这就促进了多核并行程序设计的出现。并行程序设计是指同时对多个任务、多条指令或多个数据项同时进行处理,是程序设计的一种形式,能够充分利用底层硬件所提供的并行执行能力从而提高程序的运行效率。 并行程序设计的重点就是要找到程序中的并行性,尽可能降低由于并行化引起的
4、开销。有时,并行化并不是优化算法的最佳选择,如果相比于串行执行的方式,并行化能够带来显著地性能提升,那么并行化才有意义。判断是否适合并行化并没有一劳永逸的方法一切都取决于特定问题的功能需求和性能需求。在对现有程序进行并行优化的时候,必须理解现有的串行设计,或者理解提供了有限可扩展性的并行化算法,然后再对现有设计进行重构,从而使其获得性能提升,而且不会引入问题或产生不同的结果。在衡量程序并行化的效果时,可以用加速比来比较并行效果。其中,是加速比,是串行运算时间,也可表示为单处理器运行时间;是在有P个核的处理器上的运行时间。 1.3Framee
5、eee.Threading.Task.通过这个命名空间可以引用.Frame) 需要有大量数据需要处理,而且必须对每一份数据执行相同的操作。 (2)任务并行(taskparallelism) 有很多可以并发运行的不同操作,通过任务并行发挥并行化的优势。 (3)流水线(pipelining) 是任务并行和数据并行的结合体。 2.1Parallel C#实现并行编程最简单、最基础的方法就是利用Parallel类,在编写并行代码的时候通过使用Parallel静态类(System.Threading.Tasks.Parallel)所提供的
6、方法实现并行循环。 2.1.1Parallel.Invoke、Parallel.For、Parallel.ForEach 在Parallel下面有三个常用的方法Invoke,For和ForEach。 在需要使用的时候,引入命名空间System.Threading.Tasks,即可直接编辑Parallel.Invoke、Parallel.For、Parallel.ForEach指令。Parallel.For为固定数目的独立For循环迭代提供了负载均衡的潜在并行执行。 Parallel.ForEach为固定数目的独立ForEach循环迭代
7、提供了负载均衡的潜在的并行执行。这个方法支持自定义的分区器,可以更好地掌握数据分发。 Parallel.Invoke对给定的独立任务提供潜在的并行执行。 2.1.2Parallel退出循环和异常处理 (1)退出并行循环 在串行循环中,想要退出循环,直接使用break语句即可直接退出。但在并行循环中,并行循环参数提供了一个ParallelLoopState,可用于终止Parallel.For和Parallel.ForEach。ParallelLoopState的loopState实例提供了Break和Stop两种方法。 Break通知
8、并行计算尽快退出循环,在完成当前迭代后尽快地停止执行。 Stop通知并行计算立即停止执行。 (2)并行循环的异常处理 在串行循环中,普通的Exception就
此文档下载收益归作者所有