visual c++ 2010 新特性:并行计算

visual c++ 2010 新特性:并行计算

ID:16465517

大小:327.50 KB

页数:7页

时间:2018-08-10

visual c++ 2010 新特性:并行计算_第1页
visual c++ 2010 新特性:并行计算_第2页
visual c++ 2010 新特性:并行计算_第3页
visual c++ 2010 新特性:并行计算_第4页
visual c++ 2010 新特性:并行计算_第5页
资源描述:

《visual c++ 2010 新特性:并行计算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VisualC++2010新特性:并行计算【IT168 专稿】性能,永远是程序员要考虑的问题。在单核时代,甚至在双核(多核)时代,一般是通过改善客户使用的计算机性能来提升程序的性能,如增加服务器、内存,配置负载均衡等手段来实现,我们称这个过程为享受性能免费大餐。天下没有免费的午餐,性能免费大餐也不能毫无止境,实际上,已经有了新的解决方案--并行计算。并行计算就像是一道饕餮大餐而被人津津乐道,在本文中我们以烹饪为类比,通过对性能免费大餐的分析,使用VisualStudioC++2010这把利器,应用并行编程

2、模型大块朵颐的进行并行开发。  性能免费大餐已经结束  通过提升CPU的计算能力,确实能够改善应用程序性能。但在实际情况中,无论处理器性能提升多少,软件都有办法迅速吞噬。况且,计算机硬件毕竟受物理极限的约束,处理器主频的提升已经遇到了瓶颈。所以,享受性能免费大餐的日子已经结束,业界已经不能提供指数级增长的更快的处理器,而只能选择提供指数级增长的更多的处理器。多核将引领软件研发发生基础性的变化。  目前的电脑市场上,多核计算机的销量远远大于单核计算机,多核已经成为了一种主流。在这样的发展趋势下,如果把在单核

3、下实现的应用程序拿到一台64核的机器上运行,你会看到任务管理器显示如下的画面——只有1/64的计算能力得到了利用:  图1任务管理器显示64核机器上运行单线程应用程序,只有一个核在计算  通过上面的示例可以看出,传统的应用程序再也无法顺其自然地在更高端的硬件设备上获得更高的性能回报,能够充分发挥硬件设备性能的应用程序是未来软件开发的主流,作为开发人员,我们面临的抉择是什么呢?HerbSutter在他的原文中明确地给出了答案:并行计算。如果在四年前说“并发将是软件开发史上的又一个重大变革”是一个预测,那么今

4、天,并行计算已经成为软件开发的核心趋势之一。对于程序员来说,享受免费大餐的日子结束后,只能亲自下厨烹饪。  亲自下厨遇到了难题  我们都知道,应用程序的开发,有着完整的生命周期管理,从编写需求说明书、程序设计说明书,到编码、调试和性能优化,再到测试、发布,以及后期维护等一系列的行为都有其复杂性。而并行计算是在程序开发原有的复杂性上,更添加了一个维度。在这个过程中,程序员会遇到各种各样的问题,如下图所示:  图2开发并发应用程序面临的需要考虑的问题  开发并行应用程序,一直是令广大程序员头痛的事情,现如今我

5、们又有哪些准备了呢。俗话说的好,巧媳妇难为无米之炊,一些准备好的食材、一本可供参考的菜谱、一套方便使用的厨具是必不可少的,希望这些必备品能为我们的烹饪带来便利。   食材、菜谱和厨具都很重要  2007年,微软宣布成立并行计算平台组,致力于简化并行应用程序的开发。随着VisualStudio2010和.NETFramework4的发布,微软为并行计算提供了完整的解决方案。  图3VisualStudio2010和.NETFramework4对并行开发的支持  食材-并发运行时  不论是任务并行、数据并行,

6、还是管道并行,都意味着需要把一个耗时的任务或数据分割成更小的单位。分割的颗粒度往往是由任务的性质决定的。细颗粒度并行的好处主要体现在可扩展性和负载平衡上。假设一个耗时的任务只被粗略分割成四个子任务并发执行,那么它对于多于四核的机器的扩展性就不够好;即使是在四核的机器上运行,也无法做到实时动态的负载平衡,可能发生三个子任务早早完成,而另一个任务还在一个核上苦苦等待的悲剧性事件。  为了支持细粒度并行,在VisualC++2010中提供了一套并发编程框架,支持常用的协同任务调度和硬件资源(CPU和内存)管理。

7、.NETFramework4也在已有的线程池(ThreadPool)基础上,实现了协同任务调度和工作窃取(work-stealing)算法。工作窃取算法充分利用了细颗粒度并行的优势,保证空闲的线程依照一定的顺序,从本地、全局,甚至是其他线程的任务队列中“偷取”任务执行。当然,默认的任务调度器可以被扩展或配置以支持特殊的调度策略。  并发运行时是C++并发编程框架,使用该框架,可以简化并行编程,能够帮助我们编写可靠、可伸缩且具有响应能力的并行应用程序。  菜谱-编程模型  高抽象级别的、统一的编程模式是简化

8、并行程序开发的一个重要方向。因此在VisualStudio2010和.NETFramework4中看到许多新的语言和库功能,以及一系列面向任务的并行结构和算法。  在VisualC++2010中,并行模式库(ParallelPatternLibrary)引入了支持任务并行的任务(Tasks)和任务组(TaskGroups)概念。任务是一类计算,可将其分解为多个更精细的计算。在并行模式库中,task_handle包含执行细颗粒度

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

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

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