CN110187969A - 一种基于gpu的分布式大数据并行计算方法 - Google Patents
一种基于gpu的分布式大数据并行计算方法 Download PDFInfo
- Publication number
- CN110187969A CN110187969A CN201910463951.5A CN201910463951A CN110187969A CN 110187969 A CN110187969 A CN 110187969A CN 201910463951 A CN201910463951 A CN 201910463951A CN 110187969 A CN110187969 A CN 110187969A
- Authority
- CN
- China
- Prior art keywords
- key
- gpu
- value pair
- thread
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Abstract
本发明涉及一种基于GPU的分布式大数据并行计算方法,包含Map,Group,Reduce步骤,Map步骤对每一个输入的键值对执行用户程序转换成中间键值对,Group步骤对所有中间键值对进行排序和分组,Reduce步骤使用用户程序处理分组后的中间键值对并得到最终计算结果,在Map和Reduce步骤中,每个工作节点对应一个GPU线程,将输入键值对交由不同的GPU线程并行处理。本发明将GPU作为大数据并行计算的分布式工作节点,并在分布式计算过程中对设备内存、线程调度、数据排序进行有效管理和优化,能够有效提高分布式计算的效率。
Description
技术领域
本发明涉及一种并行计算方法,特别涉及一种基于GPU的分布式大数据并行计算方法。
背景技术
MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。Google公司在两篇论文中,公布了MapReduce的基本原理和主要设计思想。Apache Hadoop是一组开源软件实用程序,其基本上是Google的MapReduce框架的开源实现版本。
MapReduce本身的思路并不复杂,其核心思想在于以键值对的方式处理每个阶段的数据。普遍意义上的MapReduce一般分为三个阶段:Map,Group,Reduce。三个阶段的具体输入输出和处理流程如下:
Map阶段的输入是以规定形式存在的键值对数据集。Map的输入阶段对键值对没有特殊要求,键值对可以是任意形式。Map阶段对每一个输入的键值对执行一段特殊的程序(用户程序),该程序通常由MapReduce框架的使用者编写,其内容一般取决于要执行的特定任务。用户程序的输出必须是键值对的形式,可以产生0到多个键值对,且产生的键值对的键要求是具备比较规则,即可以比较大小。所有输入键值对经过Map处理产生的键值对被称作中间键值对,作为下一个阶段Group的输入数据。
Group阶段的输入是Map阶段产生的所有中间键值对。Group的作用就是按照键的大小对所有中间键值对进行分组,将相同键的键值对归为一组。该阶段一般被视为整理阶段,由MapReduce框架内部的分组模块完成,通常不运行特定的用户指定程序,但需要用户提供针对自定义类型的中间键值对的比较规则。
Reduce阶段的输入数据本质上仍然是所有的中间键值对,但其形式发生了变化。对于中间键值对中出现过的每一个唯一的键,其对应的“值”变成了一个集合,该集合是所有键与该键相同的中间键值对的值的集合。每一次Reduce工作将键和对应值的集合交由用户程序,该用户程序类似与Map中的用户程序,仍然以另一种键值对的形式输出需要的计算结果。
由于每个map和reduce执行相对独立的任务,因此使用MapReduce框架,可以把一个复杂的任务分成若干个简单的任务分发到网络上的每个工作节点并行执行,从而实现分布式并行计算。若要提高Map和Reduce阶段的效率,最为直接的方式是增加工作节点的数量,将并行的粒度继续细分。
在现有的分布式并行计算框架中,工作节点都是与CPU的物理核心相对应的。在硬件上,CPU的物理核心较为有限,目前消费级计算机的中高端CPU也通常不超过8个物理核心。如果要增加工作节点的数量,就需要通过网络中的大量CPU实现。这种方式增加的工作节点成本高昂,管理复杂,而且工作节点的数量也远远不足以达到甚至接近键值对级别的并行。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于GPU的分布式大数据并行计算方法,能够将GPU作为大规模数据并行计算的分布式工作节点,提高分布式计算的效率。
为达到上述目的,本发明提供了一种基于GPU的分布式大数据并行计算方法,包含Map,Group,Reduce步骤,Map步骤对每一个输入的键值对执行用户程序转换成中间键值对,Group步骤对所有中间键值对进行排序和分组,Reduce步骤使用用户程序处理分组后的中间键值对并得到最终计算结果,在Map和Reduce步骤中,每个工作节点对应一个GPU线程,将输入键值对交由不同的GPU线程并行处理。
优选地,启动GPU设备的计算任务前,将需要计算的数据提前复制到设备内存中,设备计算的中间数据及计算完成后结果数据同样存储在设备内存,由控制端复制回主机内存中。
优选地,每个GPU设备在执行Map步骤之前,执行一个类似Map的Pre-Map步骤,该步骤并不实际产生中间键值对,仅仅并行统计每个GPU线程所产生的键值对个数和占用的总内存大小;Pre-Map步骤完成后,主机端取得每个GPU设备所有线程的统计信息,为中间键值对的存储预先分配足够大小的内存,再执行Map步骤实际产生中间键值对。
优选地,将每个输入键值对的操作分为两个相对独立的阶段:数据传输和数据在GPU内的计算,分别由主机端两个独立的线程IO线程和任务调度线程管理;
在启动所有任务之前,在GPU设备内存中开启一个内存缓冲区,当缓冲区空间被释放,IO线程读取待处理的数据块传送到该内存缓冲区;当缓冲区已满,IO线程阻塞,文件传输停止;
当一个计算任务完成后,其结果写入到GPU设备的全局共享内存,此时由任务调度线程检测缓冲区中是否存在未被处理的数据,如果还有待处理数据就开始分派下一次计算任务,同时从缓冲区中彻底释放已处理的数据块;在计算任务进行的同时,IO线程将结果数据从GPU设备内存拷贝到主机的内存中。
优选地,采用适用于并行计算的键值对存储结构:
键值对存储区包含三块较大的连续内存区域,分别用来存储键、值和索引;每个索引结构包含四分量,包括该索引对应键值对的键和值相对于各自存储基址的偏移,以及键、值分别占用的内存长度;对整个存储区记录键、值、索引的存储基址以及存储的键值对数量;访问单个键值对时,提供键值对的编号访问索引数组,计算偏移得到存储区的实际地址,从而取得实际的键值对内容。
优选地,GPU在Map步骤输出键值对的时候,采用基于半清洁器排序网络的双调排序方法对键值对排序,具体方法为:
主机端根据GPU线程数确定每次排序网络的数据规模,并且在每个GPU线程上并行执行对相应键数据的比较和交换:初始阶段将每两个键数据分为一组,组内进行双调排序并确保相邻的两组单调性相反,由此可以将相邻的两组合并为一个双调序列并执行双调排序,得到的单调有序序列又可以和相邻的单调性相反的有序序列再次合并为双调序列并执行双调排序,依次类推实现每次排序网络的排序过程。
优选地,在排序操作执行期间,每个GPU线程首先将对应的键数据复制到所在的线程块本地存储区中,然后进行线程同步,确保在访问本地存储时所有的键数据已被复制;在线程块内所有线程都完成比较和交换后,再次进行线程同步,并将更新的本地存储区内容写回到全局存储区中。
有益效果
本发明提出的一种基于GPU的分布式大数据并行计算方法,将GPU作为大数据并行计算的分布式工作节点,并在分布式计算过程中对设备内存、线程调度、数据排序进行有效管理和优化,能够有效提高分布式计算的效率。
附图说明
图1为一种基于GPU的分布式大数据并行计算方法的数据流图;
图2为GPU线程和存储结构示意图;
图3为实施例1基于GPU线程并行的键值对处理示意图;
图4为实施例1的存储方式示意图;
图5为实施例1添加Pre-Map步骤的流程图以及与不添加该步骤的对比;
图6为实施例1采用的多线程流水线方法示意图;
图7为实施例1采用的适用于并行计算的键值对存储结构;
图8为比较器示意图;
图9为规模为6的冒泡排序网络示意图;
图10为规模为8的半清洁器排序网络示意图;
图11为在序列规模为16时双调排序的排序网络示意图。
具体实施方式
下面结合附图,具体说明本发明的优选实施方式。
实施例1具体实现了本发明提出的一种基于GPU的分布式大数据并行计算方法,其数据流图如图1所示。
本实施例基于google MapReduce的设计思想。若要提高Map和Reduce阶段的效率,最为直接的方式是增加工作节点的数量,将并行的粒度继续细分。但是如果通过增加网络中CPU的数量或者增加CPU物理核心的数量增加工作节点,成本高昂,管理复杂,而且工作节点的数量也远远不足以达到甚至接近键值对级别的并行。
GPU是一种大规模并行的计算硬件,其线程架构和存储结构可抽象为图2所示的结构。每个计算设备(Compute Device)存在若干个计算单元(Compute Unit),而每个计算单元下面又有多个处理单元(Processing Elements),每个处理单元通常对应一个最小的GPU线程。每个处理单元或线程都有自己的私有内存,通常以硬件寄存器的形式存在;同一个计算单元的所有线程可以访问该计算单元的本地内存(Local Memory),而所有计算单元的所有线程均可访问整个计算设备的全局内存(Global Memory)和常量内存(ConstantMemory)。通常GPU以计算单元为单位进行任务调度,每个计算单元的所有线程都执行相同的指令而处理不同的数据,以单指令多线程方式工作,而不同的计算单元又可以执行不同的指令。由于现代GPU上通常存在着远大于CPU核心数的计算单元数量,若能将这些处理单元用以并行处理键值对,则可达到接近键值对级别的并行,提升Map/Reduce阶段的效率。
基于此思想,本实施例实现了一种基于GPU的分布式大数据并行计算方法,包括Map,Group,Reduce步骤,Map步骤对每一个输入的键值对执行用户程序转换成中间键值对,Group步骤对所有中间键值对进行排序和分组,Reduce步骤使用用户程序处理分组后的中间键值对并得到最终计算结果,在Map和Reduce步骤中,每个工作节点对应一个GPU线程,将输入键值对交由不同的GPU线程并行处理。将GPU线程作为工作节点,就可以充分利用大量GPU执行单元达到并行的细粒度和规模最大化,如图3所示。
由于GPU的硬件设计和处理模式都和CPU有所不同,设计在GPU上运行的MapReduce框架首先需要考虑的就是尽量避免不适合GPU的工作方式。GPU的硬件特点决定了其与自身相连的设备内存数据交换速率远高于通过PCI-E总线和主机相连的主存的数据交换速率。同时,在设备端分配内存是一个开销较大的操作,因分配内存的操作需要经历由控制端发出命令、设备驱动程序执行、设备实际分配内存、返回分配结果四个步骤。良好设计的GPU程序,通常会将设备端计算的数据提前复制到设备内存中,启动GPU设备的计算任务,计算期间主机负责调度工作和串行操作;设备计算完成后结果同样存储在设备内存中,由控制端复制回主机内存中。这样主机和GPU设备可以同时工作,尽可能地减少相互等待的情况,提高利用率和执行效率。
因此,实施例1中,启动GPU设备的计算任务前,将需要计算的数据提前复制到设备内存中,设备计算的中间数据及计算完成后结果数据同样存储在设备内存,由控制端复制回主机内存中,如图4所示。
按照图3所示,将每个键值对交由一个GPU线程来处理是最理想的情况。而实际运行时,需要处理的键值对数量不可能和可用的GPU线程数量一一对应。在键值对数量超过GPU线程数量时,每个GPU线程仍然需要串行处理多个键值对。而Map和Reduce的本质决定了其输出键值对的数量和输入键值对不存在确定关系,即一个输入键值对经过Map处理可能会产生0至多个中间键值对,总的中间键值对数量在整个Map阶段结束前是未知的。单个Map或Reduce阶段的执行,在确定输入键值对数量的情况下,输出键值对数量由具体执行的应用程序决定。这个特点要求在GPU执行计算的过程中动态分配设备内存以存储中间键值对,而GPU的特点又决定大部分设备无法在执行设备端程序时自主分配内存,分配设备内存的操作需要转移回主机进行,意味着打断正在执行的计算,在主机和设备之间进行频繁的状态切换,使得并行变得毫无意义。若能在GPU分配计算任务之前,确定Map操作产生的键值对所需的存储区域和位置并预先分配,在执行计算时GPU设备就可以直接进行中间键值对的写入,提高执行效率。
基于此思想,实施例1每个GPU设备在执行Map步骤之前,执行一个类似Map的Pre-Map步骤,该步骤并不实际产生中间键值对,仅仅并行统计每个GPU线程所产生的键值对个数和占用的总内存大小;Pre-Map步骤完成后,主机端取得每个GPU设备所有线程的统计信息,为中间键值对的存储预先分配足够大小的内存,再执行Map步骤实际产生中间键值对。由于Pre-Map的统计操作会在所有线程块中并行执行,并且只是针对存储位置的计算,而不实际分配或写入内存内容,所以能够高效地解决在GPU设备中Map/Reduce结果动态存放问题。图5为添加Pre-Map步骤后的流程图以及与不添加该步骤的对比。
在GPU设备上执行MapReduce的另外一个问题就是硬件限制的内存大小。在现今的GPU设备上,设备内存通常远小于主机的内存。对于GPU计算来说,一个不容忽视的问题就是CPU与GPU之间数据传输效率问题。当一次性需要处理的数据量较大时,用于在GPU和主机内存之间传输数据所占的时间甚至可能超过GPU实际的计算时间,由此带来效率上的损失。减少数据传输时间是性能优化的一个重要方面,为了尽可能地减小这种损失,实施例1在主机端使用多线程流水线来控制数据传输与计算过程,如图6所示,将每个输入键值对的操作分为两个相对独立的阶段:数据传输和数据在GPU内的计算,分别由主机端两个独立的线程IO线程和任务调度线程管理:
在启动所有任务之前,在GPU设备内存中开启一个内存缓冲区,当缓冲区空间被释放,IO线程读取待处理的数据块传送到该内存缓冲区;当缓冲区已满,IO线程阻塞,文件传输停止;
当一个计算任务完成后,其结果写入到GPU设备的全局共享内存,此时由任务调度线程检测缓冲区中是否存在未被处理的数据,如果还有待处理数据就开始分派下一次计算任务,同时从缓冲区中彻底释放已处理的数据块;在计算任务进行的同时,IO线程将结果数据从GPU设备内存拷贝到主机的内存中。
采用多线程流水线技术,对于IO时间占比较高的应用来说,用于数据IO的时间会掩盖GPU中的计算时间。反之,对于计算为主导的应用,计算时间会遮掩数据传输时间。在对大型数据块进行分片连续的作业中,这种流水线技术大大提高了时间利用率,将IO操作和计算操作同时进行,能够不间断地进行Map/Reduce处理,相比于将计算和IO串行的实现方法,能显著提高GPU计算Map/Reduce的效能。
实施例1采用了适用于并行计算的键值对存储结构,如图7所示:
键值对存储区包含三块较大的连续内存区域,分别用来存储键、值和索引;每个索引结构包含四分量,包括该索引对应键值对的键和值相对于各自存储基址的偏移,以及键、值分别占用的内存长度;对整个存储区记录键、值、索引的存储基址以及存储的键值对数量;访问单个键值对时,提供键值对的编号访问索引数组,计算偏移得到存储区的实际地址,从而取得实际的键值对内容。
MapReduce运行流程中,Group阶段会对Map函数产生的中间结果按关键字大小进行排序和分组,该过程是由主机端执行的。但是,如果GPU线程在输出键值对的时候,能够对键值对进行排序和分组操作,由于GPU的操作是并行的,则每一次输出的数据块内键值对都是分组有序的,所有输出的数据块只需要由主机进行最后一个阶段的归并排序即可,会提升整体执行效率。
普通的排序算法,不管是简单的冒泡排序、插入排序,还是效率更高的堆排序、归并排序、快速排序等,都是在串行的计算机上实现的。要缩短排序时间,一个可能的方法就是并行化,在同一时间完成多次比较。排序网络(Sorting Networks)可以做到这一点,通过一系列的比较器(Comparators)来调整输入数据的次序,使无序的数据最终变成有序的输出。图8展示了一个基础的比较器,该比较器接收两个线路的输入数据x和y,并总在①线路输出x和y中较小的值,在②线路输出较大的值。
通过多个比较器的并联和串联关系建立起一组比较规则并确保该规则对所有输入均输出有序数列,就可得到一个排序网络。如图9所示的规模为6的冒泡排序网络,该网络中存在15个比较器,串行状态下一次排序需要15次比较操作,但通过调整比较器的位置,使得在同一时间多次比较可以相互不影响地同时运行,所有的比较操作可以被减少为纵向的9个阶段,在具有多个处理单元的硬件上,每个阶段的比较操作可视为常数时间。可见比较器和排序网络的概念类似于集成电路中门的概念,非常容易通过硬件来实现,同时具有高度的并行性,因而适合完成在芯片中的排序任务,无论是专用的集成电路芯片还是图形处理单元。
实施例1中,采用基于排序网络的双调排序方法对键值对排序。双调排序排序方法基于Batcher定理,即将任意一个长为2n的双调序列a分为等长的两半X和Y,将X中的元素与Y中的元素一一按原序比较,即a[i]与a[i+n](i<n)比较,将较大者放入MAX序列,较小者放入MIN序列。则得到的MAX和MIN序列仍然是双调序列,并且MAX序列中的任意一个元素不小于MIN序列中的任意一个元素。对每一次等分得到的双调序列递归执行同样的操作,最终会得到一个有序序列。其中,双调序列(Bitonic Sequence)的定义为:一个序列a1,a2,…,an是双调序列,如果其满足条件(1):存在一个ak(1≤k≤n),使得a1≥…≥ak≤…≤an成立;或者满足条件(2):序列能够循环移位满足条件(1)。双调排序中等分比较的过程可用一种名为半清洁器的特殊排序网络表示,如图10所示。对一个双调序列不断二分并执行对应规模的半清洁器即可得到有序序列。由一个初始无序序列构造双调序列的过程类似于上述过程的反向过程,即初始阶段将每两个元素分为一组,组内进行双调排序并确保相邻的两组单调性相反,由此可以将相邻的两组合并为一个双调序列并执行双调排序,得到的单调有序序列又可以和相邻的单调性相反的有序序列再次合并为双调序列并执行双调排序,依次类推。图11展示了在序列规模为16时基于此思路的排序网络。基于此排序网络可得到利用GPU将算法并行化的思路:
主机端根据GPU线程数确定每次排序网络的数据规模,并且在每个GPU线程上并行执行对相应键数据的比较和交换:初始阶段将每两个键数据分为一组,组内进行双调排序并确保相邻的两组单调性相反,由此可以将相邻的两组合并为一个双调序列并执行双调排序,得到的单调有序序列又可以和相邻的单调性相反的有序序列再次合并为双调序列并执行双调排序,依次类推实现每次排序网络的排序过程。
实施例1采用的并行双调排序方法虽然利用了GPU并行处理每个阶段的比较操作,但仍存在较大问题:实施例1中的键值对索引和键值对实际的数据是分开存储的,访问一个特定键值对,需要首先获取其编号,然后从键值对索引中寻找该编号对应的键值对索引,再根据索引中记录的偏移信息分别在键存储区和值存储区找到对应的键和值。采用这种设计的初衷是考虑到要处理的键和值类型和大小不定,难以统一地为每个键值对分配相同大小的存储空间,同时方便对所有的键值对进行管理。但涉及到在GPU中进行排序时,就导致了每个GPU线程比较键值时都需要访问GPU设备的全局存储区以获取真正的键数据,而单个GPU线程访问全局存储区的时间为数百个GPU周期,相比于访问线程块内本地存储区只需要数十个或数个GPU周期,速度差距明显。针对此问题,实施例1进行了如下优化:
在排序操作执行期间,每个GPU线程首先将对应的键数据复制到所在的线程块本地存储区中,然后进行线程同步,确保在访问本地存储时所有的键数据已被复制;在线程块内所有线程都完成比较和交换后,再次进行线程同步,并将更新的本地存储区内容写回到全局存储区中。
采用实施例1的技术方案,将GPU作为大数据并行计算的分布式工作节点,并在分布式计算过程中对设备内存、线程调度、数据排序进行有效管理和优化,能够有效提高分布式计算的效率。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入本发明权利要求所限定的范围之内。
Claims (10)
1.一种基于GPU的分布式大数据并行计算方法,包含Map,Group,Reduce步骤,Map步骤对每一个输入的键值对执行用户程序转换成中间键值对,Group步骤对所有中间键值对进行排序和分组,Reduce步骤使用用户程序处理分组后的中间键值对并得到最终计算结果,其特征在于:在Map和Reduce步骤中,每个工作节点对应一个GPU线程,将输入键值对交由不同的GPU线程并行处理。
2.根据权利要求1所述的一种基于GPU的分布式大数据并行计算方法,其特征在于:启动GPU设备的计算任务前,将需要计算的数据提前复制到设备内存中,设备计算的中间数据及计算完成后结果数据同样存储在设备内存,由控制端复制回主机内存中。
3.根据权利要求2所述的一种基于GPU的分布式大数据并行计算方法,其特征在于:每个GPU设备在执行Map步骤之前,执行一个类似Map的Pre-Map步骤,该步骤并不实际产生中间键值对,仅仅并行统计每个GPU线程所产生的键值对个数和占用的总内存大小;Pre-Map步骤完成后,主机端取得每个GPU设备所有线程的统计信息,为中间键值对的存储预先分配足够大小的内存,再执行Map步骤实际产生中间键值对。
4.根据权利要求2或3所述的一种基于GPU的分布式大数据并行计算方法,其特征在于:
将每个输入键值对的操作分为两个相对独立的阶段:数据传输和数据在GPU内的计算,分别由主机端两个独立的线程IO线程和任务调度线程管理;
在启动所有任务之前,在GPU设备内存中开启一个内存缓冲区,当缓冲区空间被释放,IO线程读取待处理的数据块传送到该内存缓冲区;当缓冲区已满,IO线程阻塞,文件传输停止;
当一个计算任务完成后,其结果写入到GPU设备的全局共享内存,此时由任务调度线程检测缓冲区中是否存在未被处理的数据,如果还有待处理数据就开始分派下一次计算任务,同时从缓冲区中彻底释放已处理的数据块;在计算任务进行的同时,IO线程将结果数据从GPU设备内存拷贝到主机的内存中。
5.根据权利要求2或3所述的一种基于GPU的分布式大数据并行计算方法,其特征在于,采用适用于并行计算的键值对存储结构:
键值对存储区包含三块较大的连续内存区域,分别用来存储键、值和索引;每个索引结构包含四分量,包括该索引对应键值对的键和值相对于各自存储基址的偏移,以及键、值分别占用的内存长度;对整个存储区记录键、值、索引的存储基址以及存储的键值对数量;访问单个键值对时,提供键值对的编号访问索引数组,计算偏移得到存储区的实际地址,从而取得实际的键值对内容。
6.根据权利要求4所述的一种基于GPU的分布式大数据并行计算方法,其特征在于,采用适用于并行计算的键值对存储结构:
键值对存储区包含三块较大的连续内存区域,分别用来存储键、值和索引;每个索引结构包含四分量,包括该索引对应键值对的键和值相对于各自存储基址的偏移,以及键、值分别占用的内存长度;对整个存储区记录键、值、索引的存储基址以及存储的键值对数量;访问单个键值对时,提供键值对的编号访问索引数组,计算偏移得到存储区的实际地址,从而取得实际的键值对内容。
7.根据权利要求2或3所述的一种基于GPU的分布式大数据并行计算方法,其特征在于,GPU在Map步骤输出键值对的时候,采用基于半清洁器排序网络的双调排序方法对键值对排序,具体方法为:
主机端根据GPU线程数确定每次排序网络的数据规模,并且在每个GPU线程上并行执行对相应键数据的比较和交换:初始阶段将每两个键数据分为一组,组内进行双调排序并确保相邻的两组单调性相反,由此可以将相邻的两组合并为一个双调序列并执行双调排序,得到的单调有序序列又可以和相邻的单调性相反的有序序列再次合并为双调序列并执行双调排序,依次类推实现每次排序网络的排序过程。
8.根据权利要求4-6任一项所述的一种基于GPU的分布式大数据并行计算方法,其特征在于,GPU执行Map任务时,采用基于半清洁器排序网络的双调排序方法对键值对排序,具体方法为:
主机端根据GPU线程数确定每次排序网络的数据规模,并且在每个GPU线程上并行执行对相应键数据的比较和交换:初始阶段将每两个键数据分为一组,组内进行双调排序并确保相邻的两组单调性相反,由此可以将相邻的两组合并为一个双调序列并执行双调排序,得到的单调有序序列又可以和相邻的单调性相反的有序序列再次合并为双调序列并执行双调排序,依次类推实现每次排序网络的排序过程。
9.根据权利要求7所述的一种基于GPU的分布式大数据并行计算方法,其特征在于,在排序操作执行期间,每个GPU线程首先将对应的键数据复制到所在的线程块本地存储区中,然后进行线程同步,确保在访问本地存储时所有的键数据已被复制;在线程块内所有线程都完成比较和交换后,再次进行线程同步,并将更新的本地存储区内容写回到全局存储区中。
10.根据权利要求8所述的一种基于GPU的分布式大数据并行计算方法,其特征在于,在排序操作执行期间,每个GPU线程首先将对应的键数据复制到所在的线程块本地存储区中,然后进行线程同步,确保在访问本地存储时所有的键数据已被复制;在线程块内所有线程都完成比较和交换后,再次进行线程同步,并将更新的本地存储区内容写回到全局存储区中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910463951.5A CN110187969A (zh) | 2019-05-30 | 2019-05-30 | 一种基于gpu的分布式大数据并行计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910463951.5A CN110187969A (zh) | 2019-05-30 | 2019-05-30 | 一种基于gpu的分布式大数据并行计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110187969A true CN110187969A (zh) | 2019-08-30 |
Family
ID=67719012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910463951.5A Pending CN110187969A (zh) | 2019-05-30 | 2019-05-30 | 一种基于gpu的分布式大数据并行计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110187969A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941730A (zh) * | 2019-11-29 | 2020-03-31 | 南京甄视智能科技有限公司 | 基于人脸特征数据偏移的检索方法与装置 |
CN112015366A (zh) * | 2020-07-06 | 2020-12-01 | 中科驭数(北京)科技有限公司 | 数据排序方法、数据排序装置及数据库系统 |
CN112037874A (zh) * | 2020-09-03 | 2020-12-04 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112734583A (zh) * | 2021-01-15 | 2021-04-30 | 深轻(上海)科技有限公司 | 一种寿险精算模型多线程并行计算方法 |
WO2022017167A1 (zh) * | 2020-07-24 | 2022-01-27 | 北京卡普拉科技有限公司 | 一种信息处理方法、系统、电子设备及存储介质 |
CN114595070A (zh) * | 2022-05-10 | 2022-06-07 | 上海登临科技有限公司 | 一种处理器、多线程合并方法及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880509A (zh) * | 2012-09-17 | 2013-01-16 | 北京大学 | 基于cuda的格网数字高程模型邻域分析的系统和方法 |
-
2019
- 2019-05-30 CN CN201910463951.5A patent/CN110187969A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880509A (zh) * | 2012-09-17 | 2013-01-16 | 北京大学 | 基于cuda的格网数字高程模型邻域分析的系统和方法 |
Non-Patent Citations (3)
Title |
---|
CCLAIBRYAN: "《双调排序:从串行到并行,以及OpenCL上的实现》", 17 April 2015 * |
RACHEL-ZHANG: "《从并行排序方法理解并行化思维——冒泡、归并、双调排序的GPU实现》", 14 September 2015 * |
WENBIN FANG等: "Mars: Accelerating MapReduce with Graphics Processors", 《IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941730A (zh) * | 2019-11-29 | 2020-03-31 | 南京甄视智能科技有限公司 | 基于人脸特征数据偏移的检索方法与装置 |
CN112015366A (zh) * | 2020-07-06 | 2020-12-01 | 中科驭数(北京)科技有限公司 | 数据排序方法、数据排序装置及数据库系统 |
CN112015366B (zh) * | 2020-07-06 | 2021-09-10 | 中科驭数(北京)科技有限公司 | 数据排序方法、数据排序装置及数据库系统 |
WO2022017167A1 (zh) * | 2020-07-24 | 2022-01-27 | 北京卡普拉科技有限公司 | 一种信息处理方法、系统、电子设备及存储介质 |
CN112037874A (zh) * | 2020-09-03 | 2020-12-04 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112037874B (zh) * | 2020-09-03 | 2022-09-13 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112734583A (zh) * | 2021-01-15 | 2021-04-30 | 深轻(上海)科技有限公司 | 一种寿险精算模型多线程并行计算方法 |
CN114595070A (zh) * | 2022-05-10 | 2022-06-07 | 上海登临科技有限公司 | 一种处理器、多线程合并方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110187969A (zh) | 一种基于gpu的分布式大数据并行计算方法 | |
Khorasani et al. | Scalable simd-efficient graph processing on gpus | |
Gounaris et al. | Dynamic configuration of partitioning in spark applications | |
Yin et al. | Single-machine batch delivery scheduling with an assignable common due window | |
CN110321222B (zh) | 基于决策树预测的数据并行作业资源分配方法 | |
Grover et al. | Extending map-reduce for efficient predicate-based sampling | |
CN103345514A (zh) | 大数据环境下的流式数据处理方法 | |
CN103593323A (zh) | 一种MapReduce任务资源配置参数的机器学习方法 | |
Pakize | A comprehensive view of Hadoop MapReduce scheduling algorithms | |
CN110187970A (zh) | 一种基于Hadoop MapReduce的分布式大数据并行计算方法 | |
CN101271405A (zh) | 基于QoS约束的双向分级网格资源调度方法 | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
Gandomi et al. | HybSMRP: a hybrid scheduling algorithm in Hadoop MapReduce framework | |
Senthilkumar et al. | A survey on job scheduling in big data | |
Wang et al. | Phase-reconfigurable shuffle optimization for Hadoop MapReduce | |
CN110058882A (zh) | 一种用于cnn加速的opu指令集定义方法 | |
CN106681823A (zh) | 一种处理MapReduce数据倾斜的负载均衡方法 | |
Pandey et al. | A heuristic method towards deadline-aware energy-efficient mapreduce scheduling problem in Hadoop YARN | |
Hu et al. | FlowTime: Dynamic scheduling of deadline-aware workflows and ad-hoc jobs | |
WO2021115082A1 (zh) | 作业调度方法以及作业调度装置 | |
Chakrabarti et al. | Resource scheduling for parallel database and scientific applications | |
CN110222410A (zh) | 一种基于Hadoop MapReduce的电磁环境仿真方法 | |
Wang et al. | On mapreduce scheduling in hadoop yarn on heterogeneous clusters | |
CN109783189A (zh) | 一种静态工作流调度方法与装置 | |
CN110597627A (zh) | 基于虚拟fpga的数据库运算加速装置及加速方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190830 |