`

OpenMP,MPI,MapReduce 比较

 
阅读更多

参考:

http://blog.csdn.net/zhuliting/article/details/5911018

 

 

OpenMP和MPI是并行编程的两个手段,对比如下:

  • OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式);可扩展性差;
  • MPI:进程级;分布式存储;显式;可扩展性好。

OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群。MPI虽适合于各种机器,但它的编程模型复杂:

  • 需要分析及划分应用程序问题,并将问题映射到分布式进程集合;
  • 需要解决通信延迟大和负载不平衡两个主要问题;
  • 调试MPI程序麻烦;
  • MPI程序可靠性差,一个进程出问题,整个程序将错误;

其中第2个问题感受深刻。每次听我们部门并行组的人做报告,总是听到他们在攻克通信延迟大和负载不平衡的问题。一种并行算法的好坏就看它有没有很好的解决这两个问题。

与OpenMP,MPI相比,MapReduce的优势何在呢?

  • 自动并行;
  • 容错;
  • MapReduce学习门槛低。

附:

  • SMP(Symmetric multi-processing),共享总线与内存,单一操作系统映象。在软件上是可扩展的,而硬件上不能。
  • DSM(distributed shared memory),SMP的扩展。物理上分布存储;单一内存地址空间;非一致内存访问;单一操作系统映象。

 

 

 

相关评论:

OpenMP在科学计算方面居于统治地位,对于多线程方面(包括多核)有很大的优势。 
OpenMP+MPI的组合方式在集群方面有很成熟的案例。 

MapReducesh是Google的人研究出来的一个模型,开发的一个针对大规模群组中的海量数据处理的分布式编程模型

 

以上为转载!

 

 

 

 

 

 

附MPI的相关资源:

下面的很多网址已经过期了,仅供参考! 


MPI函数手册页 
  http://www.mpi-forum.org/docs/mpi-11-html/node182.html#Node182 
MPI程序设计练习循序渐进 
  http://www-unix.mcs.anl.gov/mpi/tutorial/mpiexmpl/contents.html 

主要的MPI主页及MPI标准 
http://www.mpi-forum.org MPIF主页 
http://www.mcs.anl.gov/mpi MPI主页 
http://www.netlib.org/mpi/index.html netlib上的MPI站点 

MPI的实现 
http://www-unix.mcs.anl.gov/mpi/mpich/ ANL/MSU实现的MPICH主页 
http://www.mcs.anl.gov/mpi/mpich MPICH实现 
ftp://ftp.mcs.anl.gov/pub/mpi MPICH实现 
http://www.erc.msstate.edu/misc/mpi/ 其它的MPI实现 
http://www.lsc.nd.edu/MPI2 MPI实现列表 
http://www.erc.msstate.edu/mpi MSU的MPI项目 
http://www.mpi.nd.edu/lam/ LAM的MPI 
http://www.lam-mpi.org/ 

关于MPI的文档、讨论与例子 
http://www-unix.mcs.anl.gov/mpi/tutorial/ MPI相关材料 
http://www.erc.msstate.edu/mpi/mpi-faq.html 常见问题 
http://wiki.mcs.anl.gov/mpich2/index.php/Frequently_Asked_Questions
 常见问题解答 
http://www.mpi-forum.org/docs 勘误 
http://www.erc.msstate.edu/misc/mpi/resources.html 关于MPI的新闻组 
ftp://ftp.mpi-forum.org/pub/docs/ MPI文挡 
http://www.mcs.anl.gov/mpi/usingmpi MPI教程 
http://www.mcs.anl.gov/mpi/usingmpi2 MPI教程 
ftp://ftp.mcs.anl.gov/pub/mpi/using/examples MPI例子程序 
ftp://ftp.mcs.anl.gov/pub/mpi/using2/examples MPI例子程序 
http://www-unix.mcs.anl.gov/mpi/tutorial/mpiexmpl/contents.html MPI例子程序 

One-step Tutorial: MPI: It's easy to get started 
http://www.lam-mpi.org/tutorials/one-step/ezstart.php 

http://www-unix.mcs.anl.gov/mpi/tutorial/mpiexmpl/src/hellow/C/main.html 

http://www.huihoo.org/npact/mpiindex.htm

 

分享到:
评论

相关推荐

    华工高性能实验

    这门课程的实验部分涵盖了三个关键领域:OpenMP、MPI(Message Passing Interface)和Hadoop,这些都是现代并行计算和分布式计算领域的核心技术。 首先,OpenMP(Open Multi-Processing)是一种用于共享内存多...

    MapReduce海量数据并行处理课程复习提纲-20201

    - 按并行程序设计模型/方法(如OpenMP、MPI等) 二、并行计算的技术问题 并行计算面临诸多技术难题,包括多核/多处理器网络互连结构、存储访问体系结构、分布式数据管理、任务分解与算法设计、并行程序设计模型和...

    模拟样题1

    【简要回答部分】这部分涉及的题目涵盖了高性能计算、网格计算、云计算的区别,PVP、SMP、MPP、DSM和Cluster并行机结构的对比,PRAM、BSP和logP并行计算模型的比较,OpenMP和MPI的相关概念,网格与集群的资源管理...

    ustc多核并行_上机实验报告_徐云(一共5次)

    这篇实验报告集合涵盖了多核并行计算的多个关键领域,由中科大徐云老师指导,共分为五次实验,分别涉及OpenMP、MPI、GPU、Intel Parallel Studio以及Hadoop等技术。下面将对这些核心知识点进行详细介绍。 1. **...

    矩阵相乘 并行算法.pdf

    实验的要求包括生成矩阵作为输入,使用如MPI、OpenMP或MapReduce等并行处理技术进行编程,并且要求矩阵的大小至少为1000x1000。加速比是评估并行算法性能的关键指标,它表示并行算法相对于串行算法的速度提升。 在...

    2.并行计算体系结构和编程模型I-lwm1

    除了MPI、MapReduce和OpenMP等常见的并行计算编程模型,还有其他新型并行计算和编程方式,包括GPU计算、FPGA计算和云计算等。 GPU计算是指使用图形处理器(Graphics Processing Unit)来实现并行计算。GPU计算广泛...

    并行处理技术在地理信息数据处理中的应用.pdf

    本文主要探讨了几种主流的并行编程模式,如OpenMP、MPI和MapReduce,并结合关系型数据库与分布式空间数据管理系统,提出了面向并行处理的地理信息存储模型和数据组织模型。 OpenMP是一种共享内存并行编程模型,适用...

    Google并行程序的开发(PPT)

    Google并行程序的开发涉及对并行计算的基本理解,如OpenMP和MPI的使用,以及如何在云计算环境下设计和实施大规模的并行任务。理解这些概念和技术对于开发者来说至关重要,因为它们是构建可扩展、高效且适应未来计算...

    如何编写并行程序-第一门课程How To Write Parallel Programs - A First Course

    - **基本函数**:`MPI_Init`、`MPI_Finalize`用于初始化和结束MPI环境;`MPI_Send`、`MPI_Recv`用于数据发送和接收。 #### 3. 数据并行模型示例 MapReduce 是一种处理大数据集的并行编程模型,它将计算过程分为两...

    异构计算并行编程模型综述.docx

    OpenMP 提供了一组简单的并行编程接口,如并行循环、并行任务分配等,以便程序员在编写并行程序时进行使用。OpenMP 目前已经被广泛应用于科学计算、数值模拟等领域。 CUDA 是一种基于 GPU 的并行编程模型,它通过将...

    The Free Lunch Is Over

    为了应对这一转变,开发者需要学习和掌握如线程管理、同步机制、锁、条件变量、信号量等多线程编程技术,以及像OpenMP、MPI(Message Passing Interface)等并行计算框架。同时,理解和运用MapReduce这样的分布式...

    并行程序设计简介文档

    并行程序设计是一种计算机科学领域的技术,它涉及在多个处理器或计算资源上同时执行任务,以提高计算效率和...通过学习OpenMP、MPI等并行编程框架,以及掌握并行算法设计原则,可以有效地编写出高效、可靠的并行程序。

    华南理工大学云计算试卷.pdf

    在并行计算中,可以使用OpenMP或MPI来实现。OpenMP会在共享内存环境中划分任务,MPI则适用于分布式内存环境。对于BSP模型,需要考虑计算、带宽和同步开销。 9. **并行算法性能分析**:计算加速比是并行执行时间与...

    Course_ParallelComputing.rar

    2. **编程模型与接口**:例如OpenMP、MPI(Message Passing Interface)和CUDA等,这些都是实现并行计算的常用工具。OpenMP适合共享内存环境,而MPI则用于分布式系统,CUDA则是NVIDIA GPU并行计算的API。 3. **案例...

    东北大学2018并行程序设计真题图片.zip

    在实际编程中,我们通常会使用并行编程模型和库,如OpenMP(用于共享内存并行)、MPI(Message Passing Interface,用于分布式内存并行)和CUDA(针对GPU编程的并行计算框架)。这些工具提供了一种抽象的方式,使...

    中南并行计算课程实验考试资料以及真题回忆.zip

    1. **并行计算基础概念**:理解并行计算的基本定义、类型(如共享内存并行和分布式内存并行)、并行计算模型(如PRAM、MapReduce、MPI)及其应用场景。 2. **并行算法设计**:学习如何设计并优化并行算法,包括并行...

    电信设备-基于互信息的用于文档分类的并行特征选择方法.zip

    3. 实现并行特征选择的算法或框架,例如MapReduce、OpenMP或MPI。 4. 在电信设备数据集上的实验设置,包括数据预处理、特征提取和评估指标。 5. 实验结果分析,比较并行方法与单线程方法在速度和准确性上的差异。 6....

    并行程序设计导论课后答案(英文版含代码)

    书中可能涵盖了并行算法的基础,如分治策略、MapReduce模型、OpenMP和MPI等并行编程接口,以及数据并行性和任务并行性的概念。 1. **并行算法基础**:并行算法设计的基本原则包括分解问题、并行执行子任务以及合并...

Global site tag (gtag.js) - Google Analytics