并行编程方式:OpenMP + MPI +Mapreduce

http://redtreewood.blogspot.com/2009/10/openmp-mpi-mapreduce.html


OpenMP:

OpenMp是线程级别的,共享是存储,只适应用于共享总线与内存,单一操作系统映像的SMP机器和DSM机器。可扩展性比较差,对机器的要求比较高。一般双核的机器(很多CPU共享内存条)适合用OpenMP,可以提高一定的运行速度。这个在科学计算方面应用比较多一些。


MPI:
MPI是进程级的并行粒度,分布式存储,数据分配方式是显示的,具有很好的扩展性。适合于各种机器,但其编程模型比较复杂:
1、需要分析计划分计算任务,并将任务映射到分布式进程集合中去计算。由于MPI是基于消息的,至于是基于任务划分还是数据划分,没有任何限制。具有很强的划分灵活性,这也就引起了复杂性,灵活也意味着复杂呀。简约的灵活才是硬道理。
2、由于是进程级别的,就需要解决通信延迟和负载不平衡问题。要不效率也会大大折扣了。
3、另外就是程序调试起来比较费劲。
4、可靠性比较差。一个进程挂了,整个程序都错了。

OpenMP+MPI的组合也是一个应用研究方向。


MapReduce:
MapReduce是通过把对数据集的大规模操作分散到网络节点上实现可靠性;每个节点会周期性的巴完成的工作和状态的更新报告回来。如果一个节点保持沉默超过一个预设的时间间隔,主节点记录下这个节点状态为死亡状态。然后把分配给这个节点的任务发到别的节点上。
从上可见,Mapreduce是完全基于数据划分的角度来构建并行计算模型的。具有很好的容错能力,也很容易学习。可用于分布排序,web日志分析,构建索引,文档聚类,给予统计的机器学习(Mahout)等等了。
Hadoop是一个基于JAVA实现了MapReduce计算模型的分布式并行编程框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值