研究文章|开放获取
索尔嵇康,Keon唱Yeon Lee Myung李, ”性能比较的OpenMP, MPI和MapReduce的实际问题”,多媒体的发展, 卷。2015年, 文章的ID575687年, 9 页面, 2015年。 https://doi.org/10.1155/2015/575687
性能比较的OpenMP, MPI和MapReduce的实际问题
文摘
有问题的规模和复杂性增加,几个并行和分布式编程模型和框架已经开发有效地处理这些问题。本文简要综述了并行计算模型和描述三个公认的并行编程框架:OpenMP, MPI, MapReduce。OpenMP是并行编程的事实上的标准共享内存系统。MPI是事实上的工业标准的分布式内存系统。MapReduce框架已经成为大规模数据密集型应用程序的事实上的标准。定性每个框架的优点和缺点,但量化性能指标帮助得到一个好照片的框架使用的应用程序。基准问题比较这些框架,选择两个问题:all-pairs-shortest-path问题和数据连接问题。介绍了并行程序的问题上实现三个框架,分别。它展示了实验结果计算机集群上。它还讨论了正确的工具工作的分析范式的特点和性能。
1。介绍
我们经常遇到问题需要重计算或数据密集型处理。因此,一方面,我们试图开发高效算法的问题。另一方面,随着硬件和并行计算和分布式计算技术的进步,我们感兴趣的是利用高性能计算资源来处理它们。
并行和分布式计算技术都集中在如何最大化固有并行性使用多核/许多核心处理器和网络计算资源(1- - - - - -6]。各种计算架构和硬件技术已经开发出来,如对称多处理器(SMP)体系结构中,非均匀内存访问(NUMA)架构,同步多线程(SMT)体系结构中,单指令多数据(SIMD)体系结构、图形处理单元(GPU),通用图形处理单元(GPGPU),和超标量处理器(1,7]。
各种软件技术开发利用的硬件能力和有效地开发并行和分布式应用程序(2,8]。丰富的并行和分布式计算框架,这将是很大的帮助性能比较研究的框架我们可以考虑。
本文关注于性能研究的三种并行编程框架:OpenMP, MPI, MapReduce。比较研究已经进行两个问题集:all-pairs-shortest-path问题和加入大型数据集的问题。OpenMP [9是事实上的标准模型从共享内存系统,MPI (10)是分布式内存系统的事实上的标准,和MapReduce (11)被认为是事实上的标准框架用于大数据处理。对于每个问题,并行程序开发的三个模型,并观察他们的表现。
本文的其余部分组织如下:部分2简要综述了并行计算模型和部分3介绍了选择的详细编程框架。部分4解释问题的并行程序开发三个框架。部分5展示了实验结果和最后部分6得出的结论。
2。并行计算模型
在并行计算内存架构,有共享内存,分布式内存和混合共享分布式内存(12]。共享内存体系结构允许所有处理器访问所有的记忆随着全球内存空间。他们通常被划分为统一的内存访问(UMA)和NUMA。乌玛机器通常被称为SMP,假设所有的处理器是相同的。NUMA机器通常是由物理连接两个或两个以上的smp的不是所有的处理器都有平等的访问时间所有的记忆。
在分布式内存体系结构,处理器都有自己的内存,但没有全球所有处理器的地址空间。他们有一个通信网络连接处理器的记忆。
混合共享分布式内存同时使用共享和分布式内存架构。在多核集群或许多核心处理器,核心处理器共享内存和多个共享内存机器联网数据从一台机器转移到另一个。
有几个并行编程模型允许用户指定并发性和高水平位置:线程,消息传递,数据并行和单一项目多个数据(SPMD)和多个项目多个数据(MPMD)模型(12]。
线程模型组织一个重量级的过程与多个重量轻的线程并发执行。POSIX线程库(也称为pthreads) [13]和OpenMP [9这个模型的典型实现。
在消息传递模型中,应用程序由一组任务,使用自己的本地内存,可以位于同一台机器上或在一定数量的机器。任务交换数据的发送和接收消息的任务。MPI (10是事实上的行业标准消息传递。
数据并行模型,也称为分区全局地址空间(pga)模型(14),为每个进程提供了一个全局内存的观点即使记忆是分布在整个机器。它使得区分本地和全局内存引用的控制下的程序员。编译器和运行时照顾远程内存访问转化为进程间消息传递操作(7]。有几个数据并行的实现模型:Coarray Fortran,统一并行C, X10和教堂12]。
SPMD模式是一个高水平的编程范式,多次执行相同的程序与不同的数据。这可能是最常用的并行编程模型为集群的节点(12]。MPMD模型是一个高水平的编程范式,它允许多个程序运行在不同的数据。随着通用图形处理单元(GPGPU),混合并行计算模型已经开发利用的许多核心GPU执行大量计算主机的控制下线程运行在主机CPU (15]。
当数据量很大,要求内存容量可能会阻碍它的操作和处理。处理这种情况下,大数据处理框架如Hadoop和森林女神已经开发利用多个分布式机器。Hadoop MapReduce应用程序编程模型,抽象为两个阶段的Map和Reduce (16]。森林女神结构顶点的计算为一个有向图对应一个任务和边缘是数据传输的通道17]。
3所示。OpenMP, MPI和MapReduce
3.1。OpenMP
OpenMP是一个共享内存多处理应用程序推理(API),可以轻松地开发共享内存并行程序(9]。它提供了一组编译器指令创建线程同步的操作和管理共享内存pthreads。程序使用OpenMP编译成多线程程序,在线程共享相同的内存地址空间,因此可以非常高效的线程之间的通信。
相比使用pthreads和使用互斥锁和条件变量,OpenMP是更容易使用,因为编译器负责将顺序代码转换为并行代码根据指令(12]。因此,程序员可以编写多线程的程序没有严重的多线程机制的理解。它的运行时维护线程池和提供了一组库(7]。
它使用结构方法之间切换顺序和并行部分,它遵循fork / join模型。条目的并行块,一个线程的控制分为若干线程时,和一个新的顺序线程开始当所有分离线程完成。其指令允许细粒度的控制线程。它在各种平台上支持像UNIX, LINUX和Windows和各种语言(如C、c++和Fortran (12]。
3.2。MPI
MPI是一个消息传递库规范定义了一个扩展并行消息传递模型,分布式编程在分布式计算环境中10]。实际上这不是一个特定的实现的并行编程环境,及其等实现了OpenMPI, MPICH, GridMPI [7]。在MPI模型中,每个进程有自己的地址空间和交流其他进程访问别人的地址空间。程序员负责工作负载分区和映射任务的任务是计算每个进程。
MPI提供点对点,集体、片面和并行I / O通信模型(10]。点对点通信使两个匹配的进程之间交换数据。集体交流是一个广播消息从一个过程到其他人。片面的通信方便远程内存访问远程节点上没有匹配的过程。三个片面的库可用于远程读、远程写,和远程更新(9]。MPI提供各种库函数协调消息传递在各种模式下阻塞和畅通无阻的消息传递。它可以发送消息流程之间的字节大小。
MPI实现在各种平台,像Linux OS X、Solaris和Windows。大多数MPI实现使用一些网络文件存储。网络文件存储、网络文件系统(NFS),可以使用Hadoop的HDFS。因为MPI并行编程的高级抽象,程序员可以很容易地构造并行和分布式处理应用程序没有深刻理解底层机制的创建和同步过程。为了利用多核处理器,MPI进程可以组织有多个线程。基于mpi程序可以在一台计算机上执行或一个计算机集群(18]。
3.3。MapReduce
MapReduce编程范式使用Hadoop,被认为是一个代表大数据处理框架(11]。Hadoop集群包含成千上万的商品电脑和提供一个分布式文件系统叫做HDFS容错的方式可以适应大数据量(19]。集群成为计算资源来促进大数据处理(20.,21]。
MapReduce应用程序组织成一对(或双序列)的Map和Reduce函数。它假设输入的函数来自HDFS文件(s)和输出保存到HDFS文件。数据文件包含的记录,每一个都可视为一个键-值对。输入数据是由地图分区和加工过程,及其处理结果的成键-值对,减少任务根据关键。映射过程是相互独立的,因此他们可以并行执行之间的协作。减少过程发挥作用的聚合具有相同键的值。
MapReduce运行时启动Map和Reduce过程考虑数据本地化。程序员不需要考虑数据分区,进程创建和同步。相同的Map和Reduce函数在执行机器。因此,MapReduce范式可以被视为一种SPMD模式。
MapReduce范式是一个不错的选择,大数据处理因为MapReduce处理数据记录,记录不完整的数据加载到内存中,除了程序并行执行集群(20.]。它非常方便使用MapReduce因为Hadoop提供了开发大数据处理程序所需的一切背后的分布式和并行处理程序不需要知道的场景。
4所示。并行程序All-Pairs-Shortest-Path问题和一个连接问题
本文涉及比较性能的研究OpenMP MPI, MapReduce。OpenMP和MPI已经在早些时候相比3,22),但他们通常没有比MapReduce因为MapReduce不承担任何特殊的内存架构。随着大数据越来越浓的兴趣,许多从业者有兴趣使用MapReduce处理大数据量和有时计算密集型问题[20.]。
一旦你了解他们的设计原理和基本机制的框架,你可能会想,情况似乎更好。本研究旨在获得定量数据对他们的性能。这里我们选择基准问题两个问题:all-pairs-shortest-path问题作为一个计算密集型和加入问题作为一个数据密集型。
4.1。基准问题
all-pairs-shortest-path问题是找到所有成对的节点之间的最短路径图。这个问题发生在域的通信网络,物流规划、布局设计、导航、等等。Floyd-Warshall算法是最好的已知算法这一问题,考虑迭代搜索最短路径的中间节点(一个接一个23]。算法1显示Floyd-Warshall算法,表示包含距离矩阵节点之间和,是包含信息的优先级矩阵节点之间的最短路径,是发现的距离获得通过使用节点集吗作为中间节点节点的前身吗从节点的最短路径来通过使用节点集为中间节点。
|
||||||||||||||||||
第二基准问题,我们选择相关的任务找到英语维基百科页面关键词出现在韩国的维基百科页面,然后将英语单词的超链接韩国维基百科页面发现英文维基百科的页面。维基百科是一个有287个语言版本的免费网络百科全书(截至2014年8月)。图1(一)朝鲜维基百科页面显示“并行计算”这个词的内容主要是写在朝鲜和一些值得注意的诸如“并行计算”用英语放入括号。图1 (b)显示了对应的英文维基百科页面“并行计算。“我们想要超链接从“并行计算”页面的图1(一)页面的图1 (b)。
(一)
(b)
超链接建设问题可以被看作是一个连接问题:韩国的维基百科页面进行了综述的表对英语单词(s)和相应的页面内容,和英文页面也回顾了的表对他们的标题和URL。两个表之间的内连接给超链接建设需要的所有信息。基准问题,我们有英文维基百科的4664819篇文章的XML档案大小4.04 g和韩国维基百科XML档案大小1.35 gb的529997篇文章。因此,问题是数据密集型处理大量的数据。
4.2。分布式All-Pairs-Shortest-Path规划问题
比较性能的OpenMP, MPI和MapReduce all-pairs-shortest-path问题模型,分布式程序开发基于每个模型如下。所有的程序实际上实现Floyd-Warshall算法并行执行代码。
算法2显示了解决all-pairs-shortest-path问题的伪代码基于OpenMP。在代码中,“平行开始”表明并行执行指令,生成一组线程需要照顾的循环在分区的方式。“平行”显示所有线程的地方一起到一个单独的线程。
|
||||||||||||||||||||||||||
算法3显示了基于mpi的伪代码all-pairs-shortest-path问题。在代码中,“MPI Init”表明加载和初始化MPI库,和“MPI完成”是部分总结MPI处理。根据进程ID“pid”,每个进程负责分配的部分,发送和接收的中间结果和从其他流程。
|
||||||||||||||||||||||||||||||
算法4显示了基于MapReduce的伪代码模型。MapReduce抽象工作Map和Reduce函数模型。Map函数应用于每个记录输入文件的一行包含一个记录。减少函数接受整个地图的输出函数和聚合为最终结果。实现MapReduce应用程序反复重复这些阶段多达输入图中节点的数量。在代码中,“司机()”的角色协调调用MapReduce迭代周期。一个输入记录地图功能意味着迄今为止从节点最短的距离来是和前面的节点的节点在最短路径,“写“显示操作写出来一个记录与关键和价值HDFS文件。
|
||||||||||||||||||||||||||||||||
4.3。分布式程序连接问题
在连接的问题,有两个XML文件:一个韩国维基百科XML文件和一个英文维基百科文件。首先,我们需要从韩国维基百科中提取英语术语文件并创建一个表的记录,每一个都是由英语术语(s)和原始页面的内容以后使用。英文维基百科文件转化为一个表的记录组成页面的标题和URL的页面。之后,两个表连接添加超链接获取信息。
算法5显示了连接问题得到的伪代码通过使用OpenMP构造超链接信息。这两个文件太大,无法适应主内存。因此,分区和大文件(即。,English Wikipedia file) is sequentially read into the memory one by one just once, and the partitions of the smaller file are read sequentially as many as the number of partitions of the larger files.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
算法6显示了MPI的伪代码连接问题。在代码中,“发送”和“接收”表示MPI通讯api进行数据交换。每个进程负责分区工作和逐行读取文件支持大量数据由操作系统,如Linux。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
算法7显示了两个映射函数的MapReduce代码为韩国维基百科文章和英文维基百科的文章和Reduce函数。朝鲜维基百科Map函数从每个韩国页面提取英语单词(s)和生产记录的词(s)和整篇文章。英文维基百科映射函数提取英文页面的标题和URL并生成记录。Reduce函数接收输出的地图和发现配对在韩国建立超链接的信息词页面英语页面。图2显示配置的Map和Reduce函数来提取超链接信息的两个文件。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5。实验
两个基准的问题,实现了并行程序使用OpenMP, MPI,分别和MapReduce。在实验中,一群5个人电脑使用,每个有英特尔酷睿i7 - 4770 3.40 GHz CPU和16 GB的RAM和安装centos - 6.4 LINUX 64位。对于MapReduce应用程序,Hadoop的HDFS,纱被安装在集群HDFS是Hadoop分布式文件系统和纱线是一个资源和应用程序管理器。MPICH是MPI的实现,是安装在每台机器在纱线和HDFS。OpenMP是安装在一个节点,因为它只支持共享内存模型但不是分布式内存模型。
all-pairs-shortest-path问题,三个样品图是随机生成的节点的数量是10,100年和1000年,分别。生成时,每个节点设置为与其他节点的一半。最终结果写时,就存在一个瓶颈如果使用单个文件作为输出。因此,公平的比较,每一个进程或线程允许其输出写入自己的out-file。
表1显示在all-pairs-shortest-path问题实验中获得的执行时间。对于这个计算密集型的问题,OpenMP程序提供了最佳的性能,10个线程使用。MPI程序在单个机器上执行,在集群中的5个机器上共有10流程。由于计算开销,集群MPI程序显示表现不佳。在实验设置,通信瓶颈严重即使1 Gbps的机器连接交换中心。MPI在单个机器上的表现并不与OpenMP,因为OpenMP线程共享全局地址空间但MPI过程使用消息传递协议进行通信。如果一些应用程序可以运行在一个高端单机,MPI OpenMP是首选。MapReduce computational-intensive不是一个选择和迭代计算all-pairs-shortest-path问题等问题。
|
|||||||||||||||||||||||||||||||||||||||||
表2显示了加入实验结果的问题。执行时间根据不同的执行上下文网络带宽和资源管理操作系统,因此相同的实验已经进行了三次为每个设置。公平的比较,没有特别像B +树索引结构(23)被用于实现连接操作。然而,同样的逻辑是每个框架上实现。MapReduce-based程序是最好的之一的三个模型。在连接操作,我们只需要英文维基百科页面的标题和URL,因此MPI的实现和OpenMP只是扫描英文页面的流和保持整个组对标题和URL的记忆。然后,韩国的维基百科页面读取一个接一个为了检查英语术语出现。OpenMP给更好的性能比MPI加入问题,因为英语的策划信息页面被加载到内存中,没有通信开销和OpenMP线程访问内存。从这些观察中,我们看到,MapReduce的最佳选择是数据密集型处理大数据量。
|
|||||||||||||||||||||||
6。结论
OpenMP, MPI和MapReduce是最广泛认可的并行或分布式编程框架。每一个据说是事实上的标准计算模型。评估他们的表现,我们实现了项目all-pairs-shortest-path问题和加入的问题从两个文件中提取超链接使用三个框架,分别。每个模型的性能测量的执行时间。
从实验结果,我们发现以下的事情。如果一个问题是小到可以容纳和计算资源如内核和内存足够,OpenMP是一个不错的选择。当数据大小适中,问题是计算密集型,MPI可以考虑框架。当数据规模大、任务不需要迭代处理,MapReduce可以是一个很好的框架。OpenMP是最容易使用,因为没有需要特别注意,因为我们只需要一些指令的顺序代码的地方。MapReduce是相对容易使用一旦我们可以抽象成Map和Reduce应用程序的步骤。程序员不需要考虑工作负载分区和同步。MapReduce程序,然而,花费相当大的时间问题需要迭代,像all-pairs-shortest-path问题。比MapReduce MPI允许更灵活的控制结构;因此MPI是一个很好的选择当一个程序需要执行与复杂的并行和分布式的方式之间的协调过程。
本研究没有考虑CUDA(统一计算设备架构)模型是gpu的并行计算平台和编程模型(24]。这将是有趣的比较与讨论CUDA编程模型的一些额外的实际问题集。
利益冲突
没有潜在的利益冲突与本文相关的报道。
承认
这项研究得到了MSIP(科技部、ICT和未来规划),韩国,在期(信息技术研究中心)支持程序(NIPA - 2013 - h0301 - 13 - 4009)监督的海椰子(国家信息产业促进机构)。
引用
- d·e·卡勒,j·p·辛格和a·古普塔并行计算机体系结构:硬件/软件的方法,1999年海湾专业。
- a·c·Sodan“消息传递和数据编程models-wish与现实,”诉讼19国际研讨会的高性能计算系统和应用程序(手持电脑' 05)2005年5月,页131 - 139。视图:出版商的网站|谷歌学术搜索
- k·m·李和k·m·李,“对识别使用locality-sensitive散列技术类似,”6日学报》国际会议上软计算和智能系统,和13日高级情报系统(国际研讨会者/伊希斯的12),第2119 - 2117页,2012年。视图:谷歌学术搜索
- h . Lee-Kwang k . a . Seong和k·m·李“nonstructured并发系统的分层分区,”IEEE系统,人,和控制论B部分:控制论,27卷,不。1,第108 - 105页,1997。视图:出版商的网站|谷歌学术搜索
- h·s·w·李,j . t . Kim王et al .,”网的体系结构为实时上下文感知系统网络硬件加速器,“在计算机科学的课堂讲稿卷,4251年,第408 - 401页,2006年。视图:谷歌学术搜索
- b·k·s·w·李,j . t . Kim孙,k·m·李,j·w·琼和s·李,实时系统级芯片架构基于规则的上下文感知计算卷,3681在计算机科学的课堂讲稿,2005年。
- j·迪亚兹,c . Munoz-Caro和A·尼诺”的调查多并行编程模型和工具,许多核心的时代,“IEEE并行和分布式系统,23卷,不。8,1369 - 1386年,2012页。视图:出版商的网站|谷歌学术搜索
- s . c . Ravela”比较基于共享内存的并行编程模型,“技术。众议员msc - 2010 - 01, Blekinge理工学院,2010。视图:谷歌学术搜索
- OpenMP架构评审委员会”,OpenMP应用程序界面,”2008年,http://www.openmp.org/mp-documents/spec30.pdf。视图:谷歌学术搜索
- w·Gropp s Huss-Lederman a Lumsdaine et al .,MPI:完整的参考,MPI-2扩展,卷2,麻省理工学院出版社,1998年。
- j·迪恩和美国格玛沃特,“MapReduce:简化数据处理大型集群,”ACM的通信,51卷,不。1,第113 - 107页,2008。视图:出版商的网站|谷歌学术搜索
- b·巴尼介绍了并行计算,2007岁的劳伦斯利弗莫尔国家实验室https://computing.llnl.gov/tutorials/parallel_comp/。
- 2014年POSIX-IEEE标准协会,http://standards.ieee.org/develop/wg/POSIX.html。
- C . Coarfa y Dotsenko, j . Mellor-Crummey et al .,“全球地址空间的评价语言:co-array fortran和统一并行C”第十届ACM SIGPLAN学报》研讨会上并行编程的原理和实践2005年6月,页36-47,。视图:出版商的网站|谷歌学术搜索
- m .马其顿,GPU输入计算的主流,“电脑,36卷,不。10日,106 - 108年,2003页。视图:出版商的网站|谷歌学术搜索
- Ewen a . Alexandrov s, m . Heimel et al .,”MapReduce和PACT-comparing数据并行编程模型”14会议程序数据库系统业务,技术和Web(顺便说一句‘11),25岁至44岁,2011页。视图:谷歌学术搜索
- m . Isard m . Budiu y, a·博雷尔和d . Feterly“森林女神:分布式方式来表述数据并行处理程序从序列构建块,”ACM SIGOPS操作系统复习第41卷。。3,59 - 72年,2007页。视图:谷歌学术搜索
- g . Jost h·金、d .最大经济产量和f·哈塔,“比较OpenMP, MPI和混合编程范式在SMP集群”第五届欧洲研讨会OpenMP学报》(EWOMP ' 03),2003年。视图:谷歌学术搜索
- 格玛沃特,h . Gobioff, S.-T。梁,“谷歌文件系统”19 ACM学报》研讨会上操作系统原理(SOSP ' 03)2003年10月,页29-43,。视图:出版商的网站|谷歌学术搜索
- c .管理员r·拉格拉曼a . Penmetsa g . Bradski和c . Kozyrakis“评估多核、多处理器系统的MapReduce”学报13 IEEE国际研讨会高性能计算机体系结构(HPCA ' 07)美国亚利桑那州斯科茨代尔,页24里面,,2007年2月。视图:出版商的网站|谷歌学术搜索
- s . j . Plimpton和k·d·迪瓦恩”MapReduce MPI对大规模图算法”,并行计算,37卷,不。9日,第632 - 610页,2011年。视图:出版商的网站|谷歌学术搜索
- m . Resch b·桑德,i Loebich”比较OpenMP和MPI并行计算流体动力学测试用例,”学报第一欧洲研讨会OpenMP,第75 - 71页,1999年。视图:谷歌学术搜索
- t·h·科尔曼、c . e .雷瑟尔森r·l·莱维斯特和c·斯坦,算法导论,麻省理工学院出版社,2009年。视图:MathSciNet
- j . Nickolls巴克,m .花环,k . Skadron“可伸缩的CUDA并行编程,”队列》第六卷,没有。2,40-53,2008页。视图:出版商的网站|谷歌学术搜索
版权
版权©2015年索尔嵇康等。这是一个开放的分布式下文章知识共享归属许可,它允许无限制的使用、分配和复制在任何媒介,提供最初的工作是正确引用。