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