CN104156268A - 一种GPU上MapReduce负载分配和线程结构优化方法 - Google Patents

一种GPU上MapReduce负载分配和线程结构优化方法 Download PDF

Info

Publication number
CN104156268A
CN104156268A CN201410323420.3A CN201410323420A CN104156268A CN 104156268 A CN104156268 A CN 104156268A CN 201410323420 A CN201410323420 A CN 201410323420A CN 104156268 A CN104156268 A CN 104156268A
Authority
CN
China
Prior art keywords
mapreduce
gpu
time
function
thread
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.)
Granted
Application number
CN201410323420.3A
Other languages
English (en)
Other versions
CN104156268B (zh
Inventor
郭兵
沈艳
王继禾
陈辉
马群
杨奔
盛志远
黄勇
张放
陈英超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN201410323420.3A priority Critical patent/CN104156268B/zh
Publication of CN104156268A publication Critical patent/CN104156268A/zh
Application granted granted Critical
Publication of CN104156268B publication Critical patent/CN104156268B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

为实现数据密集型应用程序并降低并行编程的复杂性,MapReduce提供了一组简单的编程接口。由于采用大规模并行架构,GPU在并行计算平台中逐渐占据主导地位。然而,设计GPU上的高性能MapReduce框架却是一项具有挑战性的任务。本发明描述了一种GPU上的高性能MapReduce框架,并着眼于该框架的工作负载与线程结构两个参数,这两个参数属于该框架的一级参数。本框架采用的是一种分层搜索方法,结合了负载分配与线程结构优化并对两者进行了协调。由于基于高效而精确的采样和多项式拟合方法,本框架能够快速搜索其设计空间,速度比穷举法快860倍,且准确率可达99.7%。在实际应用程序中,本框架的性能可达到当前GPU上最先进MapReduce框架的7.7倍(平均4.04倍)。

Description

一种GPU上MapReduce负载分配和线程结构优化方法
所属技术领域
本发明涉及嵌入式系统以及数据并发领域,尤其是涉及一种基于GPU上MapReduce的负载分配和线程结构优化方法。 
背景技术
各种高性能计算加速器的成功,图形处理单元(GPU),现场可编程门阵列(FPGA),以及英特尔Xeon处理器(Intel Xeon Phi)。由于加速器在计算能力、内存带宽、高度并行和能效等方面的优势,从数据中心领域到嵌入式系统领域,这些加速器已经越来越受到重视。然而,在这些平台上编程仍然具有很大的挑战性。开发商必须使用特定加速器的编程语言,例如CUDA,OpenCL和Verilog等。 
近年来,上述加速器中,GPU在高性能计算和嵌入式计算领域中获得了很大的成功。由于采用大规模并行架构,GPU线程能够成百上千地并发执行。GPU的计算能力已应用到包括图像处理、电子自动化设计、密码学等在内的众多方法中。 
本发明的研究重点是使用MapReduce模型来设计高性能的GPU应用程序。设计GPU上的高性能MapReduce框架并非易事,主要难点在于性能调整和设计参数的选择。在MARS(目前GPU上最先进的MapReduce框架)中,线程结构(例如线程块数、每块的线程数)由占用率确定。占用率定义为GPU上的活动线程数与允许的最大线程数之比。使用占用率为衡量标准,MARS趋向于高度的并行性。然而,最近的一项研究表明,高度的并行可能会获得次优的性能。由于GPU性能取决于单个线程的性能以及多个线程的并行程度,而高并行可能会导致单个线程占用的计算资源较低,从而降低了单个线程的性能,如果高并行产生的性能不足以弥补单个线程所损失的性能,则整体性能就能会降低。此外,并行程度高,还可能会导致严重的资源争用,例如共享cache和内存,从而降低单线程性能和整体性能。 
MapReduce通常用于数据密集型应用,处理大量的输入数据。由于受到内存大小的限制,当数据量较大时,MapReduce需要多轮处理,每轮处理一个数据块数据。本发明将负载分配定义为选择最佳的数据块大小来提高性能。数据块大小决定每轮处理的时间和需要处理的总轮数。数据块小可能会使得GPU利用率低,而数据块大则可能会导致资源争用。因此,在GPU中负载分配是非常重要的。然而,MARS框架忽略了负载分配的重要性。 
负载分配和线程结构需要协同考虑,才能使得GPU取得最佳性能。当我们将这两方面结合起来时,发现这是一个巨大的设计空间。例如,考虑大小为1TB的数据和一个可以执行多达数千个线程块、每个块1024个线程的现代GPU,假设每个线程都可以处理1KB的数据,则 总设计空间包含大约10^7个解决方案。强力搜索(即运行或模拟每个解决方案)最优解是不可能的。同时,我们观察到这样的设计空间其实是非常不规则、不平滑的,所以不太可能会有非常好的性能模型能够直接模拟这种设计空间。 
针对这些难点,本发明提出了一种新的方法。该方法能够非常有效而准确地为MapReduce框架找出数据块大小和线程结构两个性能参数。我们观察到,当负载分配固定时,性能与线程结构间的关系可以精确地建模为表面平滑的多项式函数。在此时间函数的基础上,本发明设计一个结合数据块大小和线程结构的分层搜索方法。 
发明内容
本发明的目的在于提供一种基于GPU上MapReduce的负载分配和线程结构优化方法。 
本发明解决其技术难题所采用的技术方案的步骤如下: 
1)heir-archical搜索方法的提出 
定义MapReduce框架的输入数据大小为H。由于在GPU有限的内存空间,将H分割(split)为许多块,每次处理一个块。定义数据块大小为D,因此,总共需要次来处理整个数据H。假定只有一个GPU,处理每个块的时间为tDtD,则输入数据H的总处理时间为[H/d]×tDtD。对于一个特定的基于MapReduce框架的应用程序,其线程的负载(数据大小)一般由程序员决定。用d表示每个线程的负载(工作量),则可以得出D/d=x×y,其中x和y是线程块的数量和每个块中线程的数量。 
给出数据块大小D,当一个MapReduce框架的GPU使用(x,y)线程结构时,可以使用时间函数f(x,y)表示出其运行时间。因此,已知D时,可以得出最优解tD=minxy=D/d(f(x,y))。通过实验,发现f(x,y)是平滑而又连续的曲线拟合函数,当xy(D/d)在一定范围内增加时,f(x,y)的值也连续递增。通过有效的取样,使用多项式拟合方法建立f(x,y)函数。对于每一个数据块大小D,通过不用的研究不同的线性结构,都可以使用f(x,y)函数找出其最优解tD。最后,选择D以及与之相匹配的线程结构最小值[H/d]×tD。 
2)搜索模型的建立 
将[xmin,xmax]定义为线程块数量范围,将[ymin,ymax]定义为每个线程块包含线程数量范围,其中x,y都为整数。图1给出时间函数模型的主要思想和搜索解决方案。粗体边缘曲面St对应在GPU上执行MapReduce应用程序的时间函数f(x,y),曲面在x,y轴上的投影为平面Sp。边缘曲面Sd表示满足x×y=D/d的线程结构设置。找到适当的(x,y)值就可以计算出最小运行时间,文中首先定义曲线l′公式如下, 
l ′ : t = f ( x , y ) xy = D / d x ∈ [ x min , x max ] , y ∈ [ y min , y max ] - - - ( 1 )
曲线l′表示在数据块D固定情况下x和y不同组合的执行时间。定义l为曲面Sd和Sp的交线,其中相交线可以用来获得实际x和y值,Sd和Sp相互垂直。l是l′在平面Sp上的投影。然后,本发明定义点集P为所有在Sp上离l最近的所有离散点的集合。因为l上的点大部分不是离散的整数点,所以取离l最近的整数点表示线程结构。为了找到最接近的离散点,引入附加的对角线,该对角线是两个相邻曲线l的离散点的连线。该方法能够选出所有沿l分布的最近离散点。 
定义工作量分配和线程结构优化问题 
s.t.   tD=minxy=D/d(f(x,y))  (2) 
       xy∈[xminymin,xmaxymax
3)最优性能下数据块大小和线性结构的决策方法 
利用执行时间的几个采样值来找出适应时间函数的参数值,并且基于该时间函数搜索最佳设置。采样点通过迭代选取,以改进时间函数并最终稳定。本发明设计了一个多项式拟合方法决定时间函数的阶,然后采样数据被反复用于计算多项式系数直到足够的精度值。时间函数生成后,本发明使用搜索方法找到最优的数据块大小和线程结构。具体方法如下: 
数据:nx,ny为两个方向的实例值,X,Y为任何可能的线程块和线程平均块。 
1  xp_list[nx]←x_Execute(app,Y,nx); 
2  yp_list[ny]←y_Execute(app,X,ny); 
3  Ox=Order(xp_list),Oy=Order(yp_list); 
4  pn=(Ox+1)(Oy+1); 
5  while Stability(coef_list)>STAth do 
6  RPL,P,T,A=0 
7  RPL[pn]←pn random points 
8  Produce pn×pn maxtrix P 
9  T[pn]←Execute(app,RPL) 
10 A=P-1
11  coef_list←coef_list∪Normal(A) 
12  Setup time function f(x,y)with coef_list,Ox and Oy
13  for D∈Diagonal_Path do 
14  CPL=0 
15  for point∈Curve_Path(D)do 
16  CPL←CPL∪(point,f(point.x,point.y)) 
17  tD=MIN(CPL) 
18   DPL ← DPL ∪ ( H D × t D , point , D )
19return MIN(DPL) 
1-4行确定x和y在多项式时间函数f(x,y)中的阶,即Ox,Oy,通过采样MapReduce应用程序执行时间的方法。函数x_Execute负责将该配置下的运行时间存储在取样列表xp_list中,当取样列表xp_list和yp_list生成后,通过Order函数可以计算出x和y对应的最优阶数,确定多项式阶的方法应保证阶数足够高以保持足够的信号信息,同时避免过高的阶增加计算时间。得到Ox和Oy后,通过行4中的公式可计算出多项式系数的个数pn。 
行5-11实现一个迭代过程,以逐渐细化多项式时间函数。不断产生新的时间函数,并结合循环迭代产生精度最高的时间函数。不断迭代以上三个步骤,直到达到指定的稳定性阀值(STAth)。 
第13-19行使用生成的时间函数f(x,y)通过等式2解决优化问题。因为它不涉及任何GPU上执行的MapReduce应用程序,所以运行很快。第13行的外部循环主要迭代对角线上的点,第15行的内部循环迭代每条曲线上的点,并将这些点存储在曲线点列表CPL中,见行16。第17行将曲线上的最低点收集起来。第18行中,将当前曲线的最低点存储到一个对角点列表DPL中。最后,在DPL中的点,满足最小的H/D×tD值就对应最佳的数据块大小和线程结构,因此,本发明就找到满足最优解决方案的数据块大小和线程结构。 
Order函数的输入是一个一维的采样时间列表xp_list(v[n],t[n]),yp_list(v[n],t[n]),其中v[n]表示第n个采样的线程结构,t[n]表示第n个采样的执行时间。对于一个固定的D,执行时间可以被视为一个平滑和离散的信号函数,该方法的主要思想就是不断增加阶数or直到多项式拟合产生一个错误,错误的条件是达到了设定的足够小的阀值δor。 
Stability函数的输入是一个系数列表[A0,A1,…,Am],其中Ai是系数阵列中的第i 次迭代的结果。定义表示整个数组列表的平均值数组,用表示除去Am数组后整个数组列表的平均值数组。然后,用表示多项式函数在系数列表在插入数组Am之前的值, 表示插入Am之后的值。本发明通过构造一个差函数em来评估系数的稳定性,差函数如下表示: 
e m ( x , y ) = | f A ‾ m ( x , y ) - f A ‾ m - 1 ( x , y ) | - - - ( 3 )
在该差函数的离散表面,如果最高点比阀值STAth低,我们就认为该多项式函数是稳定的,退出循环。 
附图说明
图1时间函数模型 
图2ARES与MARS的加速比性能比较 
图3不同数据块下的加速情况 
具体实施方式
1)平台与实现。 
本发明用到的GPU采用NVIDIA的GeForce GTX770。该GPU拥1563个内核工作频率为1189MHz。主机内存为32GB,而设备内存2GB。 
使用8个比较基准评估本发明提出的框架。在MARS这种国家的最先进的MapReduce框架[8]中也使用到了这8个基准。它们包括:倒排索引(II),K-均值(Km),矩阵乘法(MM),页浏览计数(PVC),页浏览排名(PVC),相似性分值(SS),字符串匹配(SM)和字数(WC)。其中,Km被广泛用于机器学习,MM是一个基本的矩阵操作,剩下的基准点是用于云服务的通用方法。对于所有的基准测试,使用MARS的GPU实现平均比四核CPU(英特尔酷睿2四核)快5.4倍。 
2)性能 
图2显示了本发明与MARS的关于所有基准的加速比性能之间的比较。当两者使用相同的GPU时,本发明的加速比性能比MARS平均高4.04倍(最高可达7.7倍)。因为MARS趋于选择高并行度,这导致了其次优性能。 
使用PVC为例,说明数据块大小D对性能的影响。图3描述不同D下的加速情况。可以看出,给定一个D,本发明的时间函数模型与实际执行时间匹配得很好。同时,对于大D(超过1.3X105)会导致性能的损失。导致这种情况有两个原因:1)当GPU的线程过多,严重的资源竞争(如缓存)使并行计算效率不高;2)候选线程数量较少导致缺乏潜在的优化。这可以 使用图1中进一步解释。在对角线路径的两个端部,该曲线点在时间函数曲面上收缩和会聚,这导致较短的曲线路径和较少的线程。对于PVC,通过该发明的解决方案中找到最好的D为57212。 
3)精度与探索 
通过多项式拟合,该模型的精度依赖于采样点的数量。在本框架中,可以通过减少方法1第5行的STAth来增加采样点的数量。这里使用R-square衡量方法的精度。R-square从实际数据和模型数据计算测定值拟合的系数。一个100%的R-square表示拟合精度最高。如表1所示,当采样点的数目小于27,部分的基准表现出低精度(R-square<95%)。对于这些基准,如果我们增加采样点的数目到50左右,其精度增加(R-square>99%)。表1显示在本框架中使用的模型的平均精度为99.7%。最后,表1中的ESR列给出了设计空间搜索与穷举法相比的加速情况。从结果可以看出本框架能以高达1214倍的速度(平均860倍)加速搜索过程。 
表1:精度与探测结果 
基准 样例点数 ESR R-square
II 27 1214X 99.89%
Km 27 1214X 99.74%
MM 51 643X 99.03%
PVC 37 886X 99.74%
PVR 51 643X 99.99%
SS 51 643X 99.93%
SM 51 643X 99.31%
WC 33 993X 99.69%

Claims (1)

1.一种基于GPU上MapReduce的负载分配和线程结构优化方法,其特征在于该方法的步骤如下:
1)heir-archical搜索方法的提出
定义MapReduce框架的输入数据大小为H,将H分割为多块,每次处理一个块,定义数据块大小为D,总共需要次来处理整个数据H,用d表示每个线程的负载(工作量),则可以得出D/d=x×y,其中x和y是线程块的数量和每个块中线程的数量,
给出数据块大小D,当一个MapReduce框架的GPU使用(x,y)线程结构时,使用时间函数f(x,y)表示其运行时间,得出最优解tD=minxy=D/d(f(x,y)),当xy(D/d)在一定范围内增加时,f(x,y)的值也连续递增,通过有效的取样,选择D以及与之相匹配的线程结构最小值[H/d]×tD
2)搜索模型的建立
将[xmin,xmax]定义为线程块数量范围,将[ymin,ymax]定义为每个线程块包含线程数量范围,其中x,y都为整数,找到适当的(x,y)值就计算出最小运行时间,定义曲线l′公式
l &prime; : t = f ( x , y ) xy = D / d x &Element; [ x min , x max ] , y &Element; [ y min , y max ] - - - ( 1 )
曲线l′表示在数据块D固定情况下x和y不同组合的执行时间,定义l为曲面Sd和Sp的交线,其中相交线可以用来获得实际x和y值,Sd和Sp相互垂直,l是l′在平面Sp上的投影,定义点集P为所有在Sp上离l最近的所有离散点的集合,引入附加的对角线,选出所有沿l分布的最近离散点;
定义工作量分配和线程结构优化问题
s.t.  tD=minxy=D/d(f(x,y))  (2)
      xy∈[xminymin,xmaxymax]
3)最优性能下数据块大小和线性结构的决策方法
一个多项式拟合方法决定时间函数的阶,采样数据被反复用于计算多项式系数直到足够的精度值,时间函数生成后,使用搜索方法找到最优的数据块大小和线程结构,具体方法如下:
●确定x和y在多项式时间函数f(x,y)中的阶,即Ox,Oy,通过采样MapReduce应用程序执行时间的方法,函数x_Execute负责将该配置下的运行时间存储在取样列表xp_list中,通过Order函数计算出x和y对应的最优阶数,确定多项式阶的方法应保证阶数足够高以保持足够的信号信息,得到Ox和Oy后,计算出多项式系数的个数pn;
●实现迭代过程,以逐渐细化多项式时间函数,不断产生新的时间函数,并结合循环迭代产生精度最高的时间函数,直到达到指定的稳定性阀值(STAth);
●使用生成的时间函数f(x,y)通过等式2解决优化问题,迭代对角线上的点,循环迭代每条曲线上的点,将这些点存储在曲线点列表CPL中,将曲线上的最低点收集起来,将当前曲线的最低点存储到一个对角点列表DPL中,在DPL中的点,满足最小的H/D×tD值就对应最佳的数据块大小和线程结构,因此,就找到满足最优解决方案的数据块大小和线程结构。
CN201410323420.3A 2014-07-08 2014-07-08 一种GPU上MapReduce的负载分配和线程结构优化方法 Expired - Fee Related CN104156268B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410323420.3A CN104156268B (zh) 2014-07-08 2014-07-08 一种GPU上MapReduce的负载分配和线程结构优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410323420.3A CN104156268B (zh) 2014-07-08 2014-07-08 一种GPU上MapReduce的负载分配和线程结构优化方法

Publications (2)

Publication Number Publication Date
CN104156268A true CN104156268A (zh) 2014-11-19
CN104156268B CN104156268B (zh) 2017-07-07

Family

ID=51881773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410323420.3A Expired - Fee Related CN104156268B (zh) 2014-07-08 2014-07-08 一种GPU上MapReduce的负载分配和线程结构优化方法

Country Status (1)

Country Link
CN (1) CN104156268B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111768329A (zh) * 2019-04-01 2020-10-13 维塔科技(北京)有限公司 采集内核执行时间的方法、装置、存储介质及电子设备
CN115237605A (zh) * 2022-09-19 2022-10-25 四川大学 Cpu与gpu间的数据传输方法及计算机设备
CN117215802A (zh) * 2023-11-07 2023-12-12 四川并济科技有限公司 一种针对虚拟化网络功能的gpu管理及调用方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110040952A1 (en) * 2008-04-22 2011-02-17 Nec Corporation Simd parallel computer system, simd parallel computing method, and control program
CN102629219A (zh) * 2012-02-27 2012-08-08 北京大学 并行计算框架中的Reduce端自适应负载均衡方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110040952A1 (en) * 2008-04-22 2011-02-17 Nec Corporation Simd parallel computer system, simd parallel computing method, and control program
CN102629219A (zh) * 2012-02-27 2012-08-08 北京大学 并行计算框架中的Reduce端自适应负载均衡方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111768329A (zh) * 2019-04-01 2020-10-13 维塔科技(北京)有限公司 采集内核执行时间的方法、装置、存储介质及电子设备
CN111768329B (zh) * 2019-04-01 2024-03-15 维塔科技(北京)有限公司 采集内核执行时间的方法、装置、存储介质及电子设备
CN115237605A (zh) * 2022-09-19 2022-10-25 四川大学 Cpu与gpu间的数据传输方法及计算机设备
CN117215802A (zh) * 2023-11-07 2023-12-12 四川并济科技有限公司 一种针对虚拟化网络功能的gpu管理及调用方法
CN117215802B (zh) * 2023-11-07 2024-02-09 四川并济科技有限公司 一种针对虚拟化网络功能的gpu管理及调用方法

Also Published As

Publication number Publication date
CN104156268B (zh) 2017-07-07

Similar Documents

Publication Publication Date Title
Wise et al. ENZO+ MORAY: radiation hydrodynamics adaptive mesh refinement simulations with adaptive ray tracing
CN104317772B (zh) 一种基于空间网格分割的蒙特卡罗粒子输运快速几何处理方法
CN105359163A (zh) 用于将基元形状拟合到3d点的集合的方法
CN106709503B (zh) 一种基于密度的大型空间数据聚类算法k-dbscan
RU2013112926A (ru) Устройство для создания расчетных данных, способ создания расчетных данных и программа для создания расчетных данных
CN104156268A (zh) 一种GPU上MapReduce负载分配和线程结构优化方法
CN106250102A (zh) 交错网格有限差分正演模拟优化的方法
Hernández-Lobato et al. Designing neural network hardware accelerators with decoupled objective evaluations
Graillat et al. PROMISE: floating-point precision tuning with stochastic arithmetic
Kao et al. Using particle swarm optimization to establish a local geometric geoid model
Nagahata et al. Reactivity boundaries for chemical reactions associated with higher-index and multiple saddles
CN106503386A (zh) 评估光功率预测算法性能优劣的方法及装置
Billoire et al. Cumulative overlap distribution function in realistic spin glasses
HAMMER Exploiting the space filling curve ordering of particles in the neighbour search of Gadget3
Bhat et al. Scalable SDE filtering and inference with Apache Spark
Arab et al. Enhancing weighted uniform simulation for structural reliability analysis
Wang et al. An improved artificial fish swarm algorithm and its application
CN103646282B (zh) 基于混合优化算法的并行处理方法
CN105426626A (zh) 基于相似数据样式聚类的多点地质统计学建模方法
CN108268982A (zh) 一种大规模有源配电网分解策略评价方法和装置
CN103091708A (zh) 一种三维地震构造曲率性能优化方法
Younes et al. A novel fuzzy parameter for ground flash density
Abeyratne et al. Optimal fast multipole method data structures
RU2611892C1 (ru) Способ трехмерного моделирования заданного гидрогеологического объекта, реализуемый в вычислительной системе
CN103345491A (zh) 一种应用哈希Hash划分桶快速获得邻域的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170707

Termination date: 20210708

CF01 Termination of patent right due to non-payment of annual fee