有了OpenMP,MPI,为什么还要MapReduce? (转载)

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的人研究出来的一个模型,开发的一个针对大规模群组中的海量数据处理的分布式编程模型

以上为转载!

时间: 2024-10-03 11:52:40

有了OpenMP,MPI,为什么还要MapReduce? (转载)的相关文章

Smith-waterman算法 openmp+mpi实现

//此Smith-Waterman 算法分别用mpi与openmp实现是没问题的,但是两个混合编程的时候就会出各种问题,希望懂的能够给指条明路...万分感谢 #include <omp.h> #include <time.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <mpi.h> /*Fil

分布式机器学习的故事

王益博士,称得上机器学习领域的资深从业者,本人之前有幸拜读过王益博士的一些paper和slides,对其从事的"分布式机器学习"方向尤感兴趣. 王益博士之前写过一篇<分布式机器学习的故事>,总结了自己从业多年的经验和感悟.可惜的是,这篇原始博文已经删除了,现在能找到的是原始的六篇讲稿素材:A New Era:Infrequent itemset mining:Application Driven:Implement Your MapReduce:Deep Learning:

MIC C编程(offload模式)

MIC C编程(offload模式) 编程特点 简单---隐藏大量细节,语法与OpenMPI类似(不需要开辟空间) 灵活---OpenMP MPI(但是用的不多)pThread等多种方式 传统---与CPU编程一脉相承 MIC C扩展语言结构 编译指导方式(#pragma) offload --表示之后的代码段将使用offload模式运行 运行在其他设备上(MIC) --标识内存传递参数,传递过程对用户透明 不需要手动写代码控制何时传入.何时传出 不需要手动申请卡上内存空间 不需要讲卡上内存与主

分布式系统

Distributed systems: for fun and profit (http://book.mixu.net/distsys/index.html) 链接:https://www.zhihu.com/question/23645117/answer/124708083 这篇文章主要试图回答以下两个个问题:1. 近些年分布式系统领域都在做些什么.2. 为什么现在投入分布式系统的学习和研究是值得的.我会尽可能多的去介绍更 "实用" 的分布式系统知识. 什么是实用?例如:Pax

分布式系统学习

两个帖子:知乎, Quora @严林 推荐的三篇论文 1.Sinfonia: A New Paradigm for Building Scalable Distributed Systems,这篇论文是SOSP2007的Best Paper,阐述了一种构建分布式文件系统的范式方法,个人感觉非常有用.淘宝在构建TFS.OceanBase和Tair这些系统时都充分参考了这篇论文. 2. The Chubby lock service for loosely-coupled distributed s

微博估计要火一阵的SleepSort之Shell及C实现

今日在微博看到如此神奇的代码,居然还有新的sort算法,对于我这种渣渣必须研究一下,代码如下: #!/bin.bash function f() { sleep "$1" //sleep 这么多s echo "$1" } while [ -n "$1" ] //第一个参数不为空 do f "$1" & //后台运行,相当于fork一个进程去执行f, 父进程同时继续下去 shift //输入参数左移,也即覆盖掉第一个参数

我的分布式机器学习故事

我的分布式机器学习故事 从毕业加入Google开始做分布式机器学习,到后来转战腾讯广告业务,至今已经七年了.我想说说我见到的故事和我自己的实践经历.这段经历给我的感觉是:虽然在验证一个新的并行算法的正确性的时候,我们可以利用现有框架,尽量快速实现,但是任何一个有价值的机器学习思路,都值得拥有自己独特的架构.所以重点在有一个分布式操作系统,方便大家开发自己需要的架构(框架),来支持相应的算法.如果你关注大数据,听完我说的故事,应该会有感触. 大数据和分布式机器学习 特点 说故事之前,先提纲挈领的描

大数据组件原理总结-Hadoop、Hbase、Kafka、Zookeeper、Spark

Hadoop原理 分为HDFS与Yarn两个部分.HDFS有Namenode和Datanode两个部分.每个节点占用一个电脑.Datanode定时向Namenode发送心跳包,心跳包中包含Datanode的校验等信息,用来监控Datanode.HDFS将数据分为块,默认为64M每个块信息按照配置的参数分别备份在不同的Datanode,而数据块在哪个节点上,这些信息都存储到Namenode上面.Yarn是MapReduce2,可以集成更多的组件,如spark.mpi等.MapReduce包括Job

7种深度学习工具介绍

1)TensorFlow TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理. –Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从图像的一端流动到另一端的计算过程. –TensorFlow是将复杂的数据结构,传输至人工智能神经网中进行分析和处理过程的系统. TensorFlow表达了高层次的机器学习计算,可被用于语音识别或图像识别等多项机器深度学习领域. –TensorFl