Visual Studio 2010并行计算概述
- 格式:doc
- 大小:111.00 KB
- 文档页数:3
Visual Studio各版本区别Visual Studio 97作为第一代Visual Studio,於1997年推出。
它包含当时大部份由微软推出的程式设计工具,包括Visual Basic 5.0、Visual C++ 5.0(主要用作视窗程式设计)、Visual J++ 1.1(用作Java 及视窗程式设计)及Visual FoxPro(用作xBase设计)。
它亦加入当时全新的Visual InterDev,使用ASP动能制作网站。
Visual Studio 97 是Microsoft 第一次嘗試对于多种语言使用同一种开发环境。
Visual J++、InterDev、和MSDN Library全都使用同一个全新的环境,名为Developer Studio。
Visual C++ 和Visual Basic 则是分开的,和Visual FoxPro 相似。
Visual Studio 6.0接下来的版本6.0在1998年6月发行,最后一个运行在Win9x机器上的版本。
所有部件的版号,包括Visual J++ 1.1及Visual InterDev1.0都归到6.0。
当微软集中.NET框架开发时,Visual Studio 6.0是微软开发系统这4年中的基础。
Visual Studio .NET (2002)支援.Net FrameWork 1.0。
微软在2002年发行了代号为“Rainier”的Visual Studio .NET(2001年在MSDN上发行过测试版)。
其最大的改进就是使用.NET框架引入了受控代码开发环境。
使用.NET开发的程序并不会像C++那样被编译为机器语言,而是被编译成一种叫做微软中间语言(MSIL)或者通用中间语言(CIL)的格式。
当一个MSIL应用程序被执行的时候,它会被即时编译成适用于所运行平台的机器语言,这样就使代码可以跨平台运行。
被编译成MSIL的程序只能运行在安装了通用语言架构(CLI)的平台上,而一些非微软.NET的环境,如Mono和DotGNU使得在Linux和Mac OS X上运行MSIL程序成为可能。
CPU-OpenMP和GPU-CUDA并行计算技术对矩阵乘法运算的加速效果分析张岩【摘要】本文对比了CPU-OpenMP和GPU-CUDA并行计算技术对不同阶矩阵乘法运算相对于CPU单线程计算的加速效果.结果表明,CPU-OpenMP并行的计算加速比与矩阵阶数无关,且低于所采用的线程数目.GPU-CUDA并行的计算加速比随矩阵阶数的增加显著增加,最大计算加速比可达570倍以上.相对于CPU单线程计算结果,CPU-OpenMP并行计算未产生误差,而GPU-CUDA并行计算会产生误差.结果表明,GPU-CUDA并行适合高阶数矩阵乘法的加速计算,而CPU-OpenMP 并行适合低阶数矩阵乘法的加速计算.【期刊名称】《科技视界》【年(卷),期】2017(000)026【总页数】3页(P45-47)【关键词】矩阵乘法;并行计算;CPU-OpenMP;GPU-CUDA【作者】张岩【作者单位】北京师范大学附属中学京西分校高三1班,中国北京 100042【正文语种】中文【中图分类】TP391在信息化技术不断发展的今天,人们处在“大数据”时代。
由于数据量巨大,普通的串行计算方式计算效率低下,无法满足人们对数据进行快速处理的需求。
因此,如何能够提高计算机处理“大数据”的计算效率已成为人们日益关注的话题。
为了减少计算时间、提升计算效率,并行计算的出现成为解决上述问题的有效方法。
与普通的串行计算相比,并行计算将计算任务分配到计算机的多个处理器协同处理,从而提高计算效率。
随着并行计算结果的发展,并行算法也逐渐成熟。
目前,人们采用的并行计算技术大致可能分为两种:一是基于CPU(Central Processing Unit)多核多线程的并行计算;二是基于 GPU(Graphics Processing Unit)的通用并行计算。
对于CPU并行计算,根据并行粒度的不同可分为“共享式内存结构”和“分布式内存结构”[1]。
对于“共享式内存结构”的并行计算,OpenMP(Open Multi-Processing)作为该类型计算技术的代表,已被广泛应用于数据处理及科学计算中。
Visual Studio 2010是什么?有什么用?Visual Studio 是微软公司推出的开发环境。
是目前最流行的Windows 平台应用程序开发环境。
目前已正式发布的是9.0 版本,也就是Visual Studio 2008,而在2008年12月份,一个振奋人心的信息传来:微软公布了下一代开发工具和平台“Visual Studio Team System 2010”以及.NET Framework 4.0的相关信息,并透露他们将在2009年底或者2010年正式发布。
正当我们兴奋之时,微软又趁热打铁,发布了Visual Studio 2010的社区技术预览版( Community Technology Preview,CTP)——Visual Studio 2010 CTP,心急的朋友们可先到微软的官方去下载。
目前RTM版的详细版本号是10.0.30319.1 RTMRel;.NET Framework 的详细版本号是: 4.0.30319 RTMRel。
Visual Studio 2010的新特性它将是经典的一个版本,相当于当年的6.0版。
而且它可以自定义开始页;新功能还包括:(1)C# 4.0中的动态类型和动态编程;(2)多显示器支持;(3)使用Visual Studio 2010的特性支持TDD;(4)支持Office ;(5)Quick Search特性;(6)C++ 0x新特性;(7)IDE增强;(8)使用Visual C++ 2010创建Ribbon界面;(9)新增基于.NET平台的语言F#;而根据微软发布的一份官方文档宣称,Visual Studio 2010和.NET Framework 4.0将在下面五个方面有所创新:·民主化的应用程序生命周期管理在一个组织中,应用程序生命周期管理(ALM)将牵涉到多个角色。
但是在传统意义上,这一过程中的每个角色并不是完全平等的。
Visual Studio 2010并行计算概述并行计算(Parallel Computing)是指同时使用多台计算机协同合作解决计算问题的过程,其主要目的是快速解决大型且复杂的计算问题。
图1:计算原理并行计算是相对于串行计算——即在单个计算机(具有单个中央处理单元)上执行的操作,所提出的。
具体的说,并行计算是在多台(并行)计算机上将一个应用任务分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,同时执行子任务的过程。
并行计算可分为时间上的并行和空间上的并行。
时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
为执行并行计算,计算资源应包括一台配有多处理(或并行处理)机的计算机和一个与网络相连的计算机专有编号。
图2:(a)SIMD类型 (b)MIMD类型目前,对于并行计算的研究主要集中在空间上的并行问题上。
空间上的并行导致了两类并行机的产生,即单指令流多数据流(SIMD)和多指令流多数据流(MIMD)。
类似地,我们常用的串行机有时也被称为单指令流单数据流(SISD)。
在1972年诞生的第一台并行计算机ILLIAC IV就属于SIMD类型机器。
而自上个世纪八十年代以来,都是以MIMD并行计算机的研制为主。
常见的MIMD类的机器可分:并行向量处理机(PVP)、对称多处理机(SMP)、大规模并行处理机(MPP)、工作站机群(COW)、分布式共享存储处理机(DSM)等五类。
并行计算机主要有以下四种访存模型:l 均匀访存模型(UMA)非均匀访存模型(NUMA)l全高速缓存访存模型(COMA)ll 一致性高速缓存非均匀存储访问模型(CC-NUMA)和非远程存储访问模型(NORMA)。
常见的基本并行算法有:划分法(partitioning)、分治法(divide-and-conquer)、流水线方法(pipelining)、随机法(randomization)、平衡树法(balanced-tree)、倍增发(doubling)、迭代法(iteration)等。
Visual Studio 2010系列之与VS2008全面比较在前面的一系列文章中,我们详细介绍了Visual Studio 2010 CTP的各种新特性,包括IDE的改进,语言层面(托管代码和非托管代码)的种种新特性等等。
但是相信还是有很多朋友心存这样的疑问:任何新产品都会有很多新特性,为什么我要为了这些新特性而舍弃旧的Visual Studio 2008?(实际上她还很新,可以说才刚刚发布不久!)什么新特性是那“致命的诱惑”?有道是“不怕不识货,就怕货比货”,下面我们就将Visual Studio 2010跟最新的Visual Studio 2008做一个重点的比较,让大家从比较中体会Visual Studio 2010的强大优势,让大家明白“10 is new 6”。
Vista才发布不久,微软就放出了下一代操作系统Windows 7的消息;Visual Studio 2008发布还不到一年,下一代开发工具Visual Studio 2010的CTP就出现了。
刚刚发布就有下一代产品出现,从一个方面,这反映了技术的飞速发展,微软不得不不断推出新的产品以应对新技术的发展。
但是,从另外一个侧面我们也可以解读出这样的信息:Vista以及基于Vista的Visual Studio 2008都不够成熟,都是一个“失败”的产品。
如果说Vista是Windows 7的“Pre-Release”,相信大家都不会反对。
同样的道理,从目前的情形来看,Visual Studio 2008更像是Vista平台上,Visual Studio 2010发布之前的一个过渡版本,同样扮演着Visual Studio 2010的“Pre-Release”的角色。
图1 一对难兄难弟:Vista + Visual Studio 2008 O(∩_∩)O灵活高效的全新IDE自从微软于1998年发布Visual Studio 6以来,Visual Studio的IDE已经成为软件开发工具的标杆,很多其他的开发工具,甚至是其他用途的应用程序,都在模仿Visual Studio的IDE。
VS2010中Parallel类实现并行计算本文来自IT168网站作者:陈良乔在本系列的第一篇文章“Visual Studio 2010对并行计算的支持”中,我们简要地介绍了微软为并行计算提供了完整的解决方案。
如果你是一个.NET程序员,同时又在进行并行计算方面的开发,那么即将发布的.NET Framework 4.0将是微软送给你的一份大礼。
在.NET Framework 4.0中,在库的层次上,微软提供了大量的新内容来帮助程序员完成应用程序的并行化,其中包括Parallel LINQ(PLINQ),Task Parallel Library(TPL)和Coordination Data Structures。
这里我们就先来介绍一下最简单最常用的TPL。
将跟随Visual Studio 2010一起发布的.NET Framework 4.0将包含很多基于库的对并行计算的支持。
包括数据的并行化,任务的并行化等等,这一切都通过一个共同的工作调度器进行管理。
这些新的类型和类,将在System.Threading,System.Threading.Tasks,System.Linq,和System.Collections.Concurrent这些名字空间中提供。
通过这些新的类型和类,开发人员将无需面对如今复杂的多线程开发模式,而可以直接使用.NET Framework,更加高效简便地开发支持并行计算的应用程序,从而更加充分地利用多核CPU的优势,随着计算核心或者处理器的增加,以提升应用程序的性能。
而在.NET Framework中,Task Parallel Library (TPL)是其Parallel Extensions中一个重要组成部分,它提供了一种简便的多线程开发方式,通过它所提供的类或者函数,可以让程序员轻松地实现并行计算。
其中,最简单的就是它的Parallel类Parallel类Parallel类就是TPL中的一个用于支持并行计算的类。
微软Visual Studio 2010架构设计功能应用随着软件开发日趋国际化,对软件的质量要求和管理也随之增高。
微软看到了应用程序生命周期管理在业界逐渐被接受认可的趋势。
在微软VS2010(Visual Studio 2010 Ultimate)中,可以利用各种工具辅助每个关键环节进行管理(ALM)是其重要特性。
Vi sual Studio经过近十年左右的发展,已经不再是仅仅面向某一个角色(开发人员)的工具,而是要服务于软件开发过程中的所有不同的角色(开发人员、测试人员、架构师、项目经理等),使其覆盖在整个软件开发生命周期(SDLC)中,本文将重点讲述VSTS2010架构设计方面的新功能应用。
VS2010建模概述VS 2010在软件应用生命周期管理(ALM)中,在架构方面则是通过新的架构浏览器(Architecture Explorer)和架构层图(Architecture Layer Diagram),以图形化的方式描述系统架构,从而使得项目中的技术人员或非技术人员都能以模型透过图形化的方式进行协作,以及定义企业与系统功能。
另外,VSTS 2010也同时支持统一建模语言(UML,Un ified Modeling Language)及特定领域语言(DSL,Domain Specific Language),架构设计人员在VS2010中可以进行架构与建模设计,从而摆脱了传统使用非VS架构设计工具,使得设计师可以更有效率的进行.Net架构设计工作。
微软在最初的时候,项目中的技术人员使用一些单独的开发工具进行软件开发,例如架构师使用Rose进行架构设计,开发人员则使用Visual Studio进行编码。
同时,项目中的非技术人员则使用一些通用的项目管理工具进行项目管理,例如项目经理使用Project,Excel等制定项目计划,进行任务划分和分配等。
所以,在VS2010中的各个功能之间,彼此相互关联和互通也大大增强。
《计算机系统结构》大作业论文题目专业计算机科学与技术(软件工程)指导教师蔡启先班级学号姓名日期广西工学院计算机学院并行计算介绍并行计算就是用多个处理器去共同完成一个计算任务,其目的是最大程度地减少任务完成的墙钟时间(即实际的物理时间,而不是CPU 时间等。
并行处理往往会增加总的CPU 时间,因为与串行程序相比并行程序会增加一些并行指令)。
在理想情况下,当我们用N 个处理器去完成一个特定的计算任务时,我们希望所用的时间应该是单个处理器计算时间的1/N 。
这是并行计算的理想状态,称为线性加速,通常很难达到。
当然也有特殊情况,即使用N 个处理器计算,速度比单处理器处理提高N 倍以上,称之为超线性加速。
算法是解题的精确描述,是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。
并行计算时可同时求解的诸进程的集合,这些进程相互作用和协调动作,并最终获得问题的求解。
传统地,串行计算是指在单个计算机(具有单个中央处理单元)上执行软件写操作。
CPU 逐个使用一系列指令解决问题,但其中只有一种指令可提供随时并及时的使用。
并行计算是在串行计算的基础上演变而来,它努力仿真自然世界中的事务状态:一个序列中众多同时发生的、复杂且相关的事件。
并行计算的特点为利用并行计算,通常计算问题表现为以下特征: (1)将工作分离成离散部分,有助于同时解决; (2)随时并及时地执行多个程序指令;(3)多计算资源下解决问题的耗时要少于单个计算资源下的耗时。
并行计算是相对于串行计算来说的,所谓并行计算分为时间上的并行和空间上的并行。
时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
一般来说,计算量极大而使PC 不能满足要求或者根本不能计算的任务是适合在超级计算环境中运行的。
比如,(1)需要分布式并行处理的科学计算任务,包括:由于对计算资源要求过大而使现在的硬件条件无法满足要求的计算任务,通过将串行源代码改编为并行源代码来进行计算,或者有通行的并行计算程序(商业或非商业);(2)虽然可以计算但是时间过长的问题等并行算法的实现并行算法——行列划分算法通过分析矩阵相乘的过程,可以发现矩阵A 的第i 行与矩阵B 的第j 列对应元素乘积的累加和即为矩阵C 的第i 行第j 列元素,而这个过程与i 值的顺序是无关的。
Visual C++2010新特性:并行计算【IT168专稿】性能,永远是程序员要考虑的问题。
在单核时代,甚至在双核(多核)时代,一般是通过改善客户使用的计算机性能来提升程序的性能,如增加服务器、内存,配置负载均衡等手段来实现,我们称这个过程为享受性能免费大餐。
天下没有免费的午餐,性能免费大餐也不能毫无止境,实际上,已经有了新的解决方案--并行计算。
并行计算就像是一道饕餮大餐而被人津津乐道,在本文中我们以烹饪为类比,通过对性能免费大餐的分析,使用Visual Studio C++2010这把利器,应用并行编程模型大块朵颐的进行并行开发。
性能免费大餐已经结束通过提升CPU的计算能力,确实能够改善应用程序性能。
但在实际情况中,无论处理器性能提升多少,软件都有办法迅速吞噬。
况且,计算机硬件毕竟受物理极限的约束,处理器主频的提升已经遇到了瓶颈。
所以,享受性能免费大餐的日子已经结束,业界已经不能提供指数级增长的更快的处理器,而只能选择提供指数级增长的更多的处理器。
多核将引领软件研发发生基础性的变化。
目前的电脑市场上,多核计算机的销量远远大于单核计算机,多核已经成为了一种主流。
在这样的发展趋势下,如果把在单核下实现的应用程序拿到一台64核的机器上运行,你会看到任务管理器显示如下的画面——只有1/64的计算能力得到了利用:图1任务管理器显示64核机器上运行单线程应用程序,只有一个核在计算通过上面的示例可以看出,传统的应用程序再也无法顺其自然地在更高端的硬件设备上获得更高的性能回报,能够充分发挥硬件设备性能的应用程序是未来软件开发的主流,作为开发人员,我们面临的抉择是什么呢?Herb Sutter在他的原文中明确地给出了答案:并行计算。
如果在四年前说“并发将是软件开发史上的又一个重大变革”是一个预测,那么今天,并行计算已经成为软件开发的核心趋势之一。
对于程序员来说,享受免费大餐的日子结束后,只能亲自下厨烹饪。
亲自下厨遇到了难题我们都知道,应用程序的开发,有着完整的生命周期管理,从编写需求说明书、程序设计说明书,到编码、调试和性能优化,再到测试、发布,以及后期维护等一系列的行为都有其复杂性。
利用Visual Studio 2010中的Concurrency V isualizer优化性能如今制造商们广泛提供了多核心处理器,新处理器中的单线程性能相对而言可能就显得平淡无奇了。
那就意味着,对软件开发人员来说,通过更好地利用并行机制来提高应用程序性能的压力就更大了。
并行编程是一项很有挑战性的工作,其原因很多,但我在本文中只想将重点放在并行应用程序的性能方面。
多线程应用程序不止容易成为顺序实现低效率进行(如低效的算法、低速的缓存行为、过多的 I/O)的常见原因,而且还可能具有并行性能 Bug。
并行性能和可伸缩性可能受到负载不平衡、同步开销过大、无意的序列化或线程迁移限制。
过去,要了解这样的性能瓶颈,需要专家级开发人员进行大量的检测和分析。
即使是程序员中的佼佼者,性能优化也是一个枯燥而耗时的过程。
这种情况应该得到改善了。
Visual Studio 2010 中包含了一个新的分析工具:Concurrency Visualizer,它可大大减轻并行性能分析工作的负担。
此外,Concurrency Visualizer 还能帮助开发人员分析其顺序应用程序,以发现并行执行这些应用程序的可能性。
在本文中,我将概括介绍 Visual Studio 2010 中 Concurrency Visualizer 的功能,并给出一些实践上的使用指导。
CPU 利用率Concurrency Visualizer 中包含几个可视化和报告工具。
有三个主要视图:分别是“CPU 利用率”、“线程”和“核心”视图。
图 1 中显示的“CPU 利用率”视图是开始使用 Concurrency Visualizer 的位置。
X 轴显示从跟踪开始时起,到应用程序活动结束或跟踪结束这两个时刻中的较早时刻止,所经过的时间长度。
Y 轴显示了系统中逻辑处理器核心的数量。
图 1 “CPU 利用率”视图。
Visual Studio 2010中C++并行构建调优在多处理器计算机上提高构建速度的一个极好方法是充分利用其并行处理能力,如果你在Visual Studio 2010中有一个C++项目,有两种不同类型的并行构建配置方法供你选择。
有哪些参数可以调整?项目级并行构建是由MSBuild控制的,它是在Visual Studio的解决方案级进行设置的(实际上Visual Studio是为每个用户都保存了设置,与你想象的可能有点不一样,你可能认为不同解决方案有不同的设置,但UI却不允许你这么做),默认情况下,Visual Studio选取你机器上的处理器数量作为最大并行构建项目的数量,如图1所示,你可以将这个数字调大调小找出一个并行构建速度最快的合适值,有些人可能喜欢将其调小,以便在构建期间还可以做点其它工作。
图1 并行构建项目的最大数量虽然MSBuild从Visual Studio接管了部分功能,但这里的设置仍然保持和Visual Studio 2008一样。
如果你正在构建C++或C++/CLI项目,还有一个地方你可以设置并行构建参数,CL编译器支持/MP参数,它告诉编译器使用自身的一个单独实例同时构建它的子集,默认的并行数仍然使用了CPU的数量,但你可以指定一个值,如/MP5,注意现在情况发生了一点变化,因此我要告诉你如何找到这个值,以及在MSBuild格式项目文件中看起来是什么样子。
打开项目的“属性”窗口,转到“C/C++”*“常规”窗口,我建议你选择“所有配置”和“所有平台”,在后面你才有更多的可选项。
图2 项目属性设置象往常一样,通过转储,你可以看到项目文件中有什么内容,在“解决方案资源管理器”中的节点上点击右键,选择“编辑”。
图3下图显示了项目文件的一部分代码。
图4 项目文件代码示例在这里,所有类型为“ClCompile”的项目都自动拥有元数据MultiProcessorCompilation,默认值为true,除非明确指定了一个不同的值。
Visual Studio 2010 详细解析最近几年来,微软可谓是新品频发,window 7还没捂热,Visual Studio 2010又来了,接下来还会有office 2010、IE9、明年还有Windows 8即将发布,称微软为世界第一的软件帝国,一点也不为过。
那么Visual Studio 2010到底是什么呢?可能对于一般的用户来说,这是一个陌生的名词,但是对于熟悉微软的网友来说,Visual Studio 2010可谓是其拳头产品之一,和Windows操作系统软件、office办公软件、student 百科全书、MSN聊天软件、IE浏览器等产品共同组成了微软庞大的产品线,由于微软在操作系统端强大的市场占有率,因此它发布的许多领域的产品都成了国际通用产品和事实标准,而这些软件之所以能够持续20年,Visual Studio系列软件功不可没。
Visual Studio介绍按百度百科的说法,Visual Studio 是一套完整的开发工具集,用于生成 Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。
Visual Basic、Visual C++、Visual C# 和Visual J# 全都使用相同的集成开发环境(IDE),利用此IDE 可以共享工具且有助于创建混合语言解决方案。
当然,这样的说法相当的专业,而且十分难懂,用通俗的说法就是,Visual Studio是一种软件,如果将它安装在你的电脑上,你就可以使用VB、VC++、VC#等软件编程,从而使你的梦想变成程序,给生活带来更多的方便,这种程序由于具有跨平台性,因此它可以运行在电脑、手机、网络上,从而改变你和更多人的生活。
从1998年微软公司发布Visual Studio 6.0开始,这个系列的软件已经经历了Visual Studio 6.0 、Visual Studio .NET 、Visual Studio 2003 、Visual Studio 2005 、Visual Studio 2008 、Visual Studio 9 、Visual Studio 2010等七次版本更替,每一次都对程序开发者的工作带来了巨大的改变。
探索Visual Studio 2010对并行计算的支持邢陈思【摘要】一、计算模式的发展趋势rn在计算机单核CPU时代,CPU主要从频率、执行优化和缓存3个方面来提高性能,特别是通过提高CPU频率,使得软件不需要修改就能够获得性能上的提高。
然而,当CPU频率提高到一定程度,受到物理特性约束,CPU频率再继续提高就会遇到技术瓶颈,使得单核CPU的发展受限。
为此,硬件厂商转向多核芯片的研究,即在一颗芯片上集成不少于2个运算核心,通过增加核心数来提高芯片的总体频率,进而提高芯片的整体性能。
【期刊名称】《金融科技时代》【年(卷),期】2012(000)001【总页数】3页(P56-58)【关键词】并行计算;CPU频率;发展趋势;计算模式;物理特性;硬件厂商;总体频率;芯片【作者】邢陈思【作者单位】中国人民银行海口中心支行【正文语种】中文【中图分类】TP301.6一、计算模式的发展趋势在计算机单核CPU时代,CPU主要从频率、执行优化和缓存3个方面来提高性能,特别是通过提高CPU频率,使得软件不需要修改就能够获得性能上的提高。
然而,当CPU频率提高到一定程度,受到物理特性约束,CPU频率再继续提高就会遇到技术瓶颈,使得单核CPU的发展受限。
为此,硬件厂商转向多核芯片的研究,即在一颗芯片上集成不少于2个运算核心,通过增加核心数来提高芯片的总体频率,进而提高芯片的整体性能。
Intel公司向市场推出基于Nehalem微结构的4核CPU,其主要特点是每个核的频率不高但对并行运算进行了专门优化。
当前,CPU多核化已成为主流,这种变化对软件技术产生了重大影响。
为了顺应CPU多核化趋势,需要一种新的软件架构和开发方法,使其可以均衡CPU中不同核心之间的负载并具有可扩展性,从而充分发挥多核CPU的潜能,最终提高软件性能,这就是业界追求的并行计算模式。
因而,从多核CPU的发展可以预见并行计算模式将成为今后软件发展的主流趋势。
本文摘要:Visual Studio 2010 为 C++ 开发人员提供了巨大的好处。
从利用 Windows 7 所提供的新功能到通过使用大型基本代码提高工作效率的增强功能,每个 C++ 开发人员都可获得新的或改进的功能。
在本文中,我将解释 Microsoft 对 C++ 开发人员所面临的一些广泛问题的Visual Studio 2010 为C++ 开发人员提供了巨大的好处。
从利用Windows 7 所提供的新功能到通过使用大型基本代码提高工作效率的增强功能,每个C++ 开发人员都可获得新的或改进的功能。
在本文中,我将解释Microsoft 对C++ 开发人员所面临的一些广泛问题的解决方式。
具体而言,Visual Studio 2010 通过依据即将发布的C++0x 标准添加核心语言功能,并通过修改标准库来利用这些新的语言功能,提供了一种更为先进的编程模型。
有新的并行编程库和工具可简化并行程序的创建。
有了IntelliSense 和扩展到大型基本代码的代码理解功能,您还会发现整体性能和开发人员工作效率的提高。
并且,您将在设计时、生成时、编译时和链接时从改进的库性能和其他功能获益。
Visual Studio 2010 将生成系统迁移到MSBuild,使其具有更高的可自定义程度并支持本机多定向。
MFC 库中的增强功能可利用新Windows 7 API 的功能,使您能够编写出色的Windows 7 应用程序。
下面我将详细介绍Visual Studio 2010 中这些针对C++ 的改进。
C++0x 核心语言功能下一个C++ 标准很快就会完成。
为帮助您开始使用C++0x 扩展,Visual Studio 2010 中的Visual C++ 编译器启用了六项C++0x 核心语言功能:lambda 表达式、auto 关键字、rvalue引用、static_assert、nullptr和decltype。
lambda 表达式隐式定义并构造未命名函数对象。
Visual Studio 2010并行计算概述
并行计算(Parallel Computing)是指同时使用多台计算机协同合作解决计算问题的过程,其主要目的是快速解决大型且复杂的计算问题。
图1:计算原理
并行计算是相对于串行计算——即在单个计算机(具有单个中央处理单元)上执行的操作,所提出的。
具体的说,并行计算是在多台(并行)计算机上将一个应用任务分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,同时执行子任务的过程。
并行计算可分为时间上的并行和空间上的并行。
时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
为执行并行计算,计算资源应包括一台配有多处理(或并行处理)机的计算机和一个与网络相连的计算机专有编号。
图2:(a)SIMD类型 (b)MIMD类型
目前,对于并行计算的研究主要集中在空间上的并行问题上。
空间上的并行导致了两类并行机的产生,即单指令流多数据流(SIMD)和多指令流多数据流(MIMD)。
类似地,我们常用的串行机有时也被称为单指令流单数据流(SISD)。
在1972年诞生的第一台并行计算机ILLIAC IV就属于SIMD类型机器。
而自上个世纪八十年代以来,都是以MIMD并行计算机的研制为主。
常见的MIMD类的机器可分:并行向量处理机(PVP)、对称多处理机(SMP)、大规模并行处理机(MPP)、工作站机群(COW)、分布式共享存储处理机(DSM)等五
类。
并行计算机主要有以下四种访存模型:
l 均匀访存模型(UMA)
非均匀访存模型(NUMA)l
全高速缓存访存模型(COMA)l
l 一致性高速缓存非均匀存储访问模型(CC-NUMA)和非远程存储访问模型(NORMA)。
常见的基本并行算法有:划分法(partitioning)、分治法(divide-and-conquer)、流水线方法(pipelining)、随机法(randomization)、平衡树法(balanced-tree)、倍增发(doubling)、迭代法(iteration)等。
在当前并行计算机上,比较流行的并行编成环境可以分为三类:消息传递、共享存储和数据并行。
消息传递的典型代表是MPI,它是基于大粒度的进程级并行,具有最好的可移植性,几乎被当前流行的各类并行计算机所支持,且具有很好的可扩展性;共享存储的典型代表是OpenMP,它主要应用于SMP、DSM类的并行计算机上,可扩展性不如消息传递并行编程,不过这种方法并行编程难度较小;数据并行的典型代表是HPF,主要被SMP、DSM和 MPP类型的并行计算机支持,它的数据存储模式是共享存储,对数据分配方式属于半隐式,可扩展性介于前两种之间。