【vc++精品源码栏目提醒】:网学会员在vc++精品源码频道为大家收集整理了“并行编程模式 - 大学课件“提供大家参考,希望对大家有所帮助!
并行计算的硬件平台 SMP系统Symmetric Multi Processing 对称多处理系统 MPP系统Massively Parallel Processing,大规模并行处理系统SMP系统与MPP系统比较 SMP Symmetric Multi Processing对称多处理系统 内有许多紧耦合多处理器,在 这样的系统中,所有的CPU共 享全部资源,如总线,内存和 I/O系统等,操作系统或管理 数据库的复本只有一个,这种 系统有一个最大的特点就是共 享所有资源。
对称性:系统中任何处理器均 可以访问任何存储单元和I/O 设备。
SMP系统与MPP系统比较 MPP Massively Parallel Processing,大规模并行处理系 统,这样的系统是由许多松耦合 的处理单元组成的,要注意的是 这里指的是处理单元而不是处理 器。
每个单元内的CPU都有自己私有 的资源,如总线,内存,硬盘 等。
在每个单元内都有操作系统和管 理数据库的实例复本。
这种结构 最大的特点在于不共享资源。
并行编程模式 并行编程模式主要有以下三种: 共享地址空间模式:以OpenMP为代表,主 要是利用添加并行化指令到串行程序中,由 编译器完成自动并行化。
消息传递模式:以MPI为代表,PVM是消息 传递模式的一个变种。
数据并行模式:比较少见,但以其独特的处 理方式受到特定用户群的喜欢并行编程模式 可以这样打比方: 作并行计算好比是盖楼房,你有了MPI就好比是有 了砂石,水泥和钢材,你可以盖最美的房子,但你 必须使用最原始状态的原材料,付出可观的智力劳 动; 你有了OpenMP就好比是有了预制板和各种预制 件,可以非常快速地造房子,事半功倍; 你有了数据并行环境,可以比作你有了包工头,很 多事情您就可以完全依靠他了。
也许比喻方式不是很恰当,但是三种编程模式 的优劣、效率是很有差别的,可以不夸张地说 OpenMP比MPI要容易很多倍MPI MPI(Message Passing Interface)是消 息传递并行程序设计的标准之一. MPI正 成为并行程序设计事实上的工业标准。
MPI的实现包括MPICH、LAM、IBM MPL 等多个版本,最常用和稳定的是 MPICH,曙光天潮系列的MPI以MPICH为 基础进行了定制和优化。
PVM PVM(并行虚拟机,Parallel Virtual Machine Computing )是一个软件包。
通过它,我们可 以组成一个异构的系统,它使用起来就像一个 单一的但能力强大的并行计算机,而它本身可 以由一些Unix或windows的计算机组成 PVM最早由美国的田纳西大学,橡树岭国家实 验室以及埃默里大学开发成功。
第一个版本在ORNL(橡树岭国家实验室)于 1989年写成,后来,田纳西大学将其重写,并 于1991年发布了版本2。
版本3于1993年发 布,支持容错以及更好的可移动性。
OpenMP OpenMP提供了对并行算法的高层的抽象描 述,程序员通过在源代码中加入专用的pragma 来指明自己的意图,由此编译器可以自动将程 序进行并行化,并在必要之处加入同步互斥以 及通信。
当选择忽略这些pragma,或者编译器不支持 OpenMP时,程序又可退化为通常的程序一般 为串行,代码仍然可以正常运作,只是不能 利用多线程来加速程序执行。
OpenMP OpenMP支持的编程语言包括C语言、C和 Fortran。
要在Visual C2005 中使用OpenMP其实不 难,只要将 Project 的Properties中C/C里 Language的OpenMP Support开启(参数为 /openmp),就可以让VC2005 在编译时支 持OpenMP 的语法了;而在编写使用OpenMP 的程序时,则需要先include OpenMP的头文 件:omp.h空间上的并行 并行计算或称平行计算是相对于串行计 算来说的。
所谓并行计算可分为时间上 的并行和空间上的并行。
时间上的并行就是指流水线技术, 而空间上的并行则是指用多个处理器并发的 执行计算 并行计算科学中主要研究的是空间上的 并行问题。
数据并行 从程序和算法设计人员的角度来看,并 行计算又可分为数据并行和任务并行。
一般来说,因为数据并行主要是将一个 大任务化解成相同的各个子任务,比任 务并行要容易处理。
数据并行的例子 对于数据密集型问题,可以采用分割数 据的分布式计算模型,把需要进行大量 计算的数据分割成小块,由网络上的多 台计算机分别计算,然后把结果进行组 合得出数据结论。
MapReduce是分割数据型并行计算模型 的典范,在云计算领域被广泛采用。