当前位置: 首页 > 专利查询>四川大学专利>正文

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

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

【技术实现步骤摘要】
一种GPU上MapReduce的负载分配和线程结构优化方法所属
本专利技术涉及嵌入式系统以及数据并发领域,尤其是涉及一种基于GPU上MapReduce的负载分配和线程结构优化方法。
技术介绍
各种高性能计算加速器的成功,图形处理单元(GPU),现场可编程门阵列(FPGA),以及英特尔Xeon处理器(IntelXeonPhi)。由于加速器在计算能力、内存带宽、高度并行和能效等方面的优势,从数据中心领域到嵌入式系统领域,这些加速器已经越来越受到重视。然而,在这些平台上编程仍然具有很大的挑战性。开发商必须使用特定加速器的编程语言,例如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′表示在数据块D固定情况下x和y不同组合的执行时间。定义l为曲面Sd和Sp的交线,其中相交线可以用来获得实际x和y值,Sd和Sp相互垂直。l是l′在平面Sp上的投影。然后,本专利技术定义点集P为所有在Sp上离l最近的所有离散点的集合。因为l上的点大部分不是离散的整数点,所以取离l最近的整数点表示线程结构。为了找到最接近的离散点,引入附加的对角线,该对角线是两个相邻曲线l的离散点的连线。该方法能够选出所有沿l分布的最近离散点。定义工作量分配和线程结构优化问题3)最优性能下数据块大小和线性结构的决策方法利用执行时间的几个采样值来找出适应时间函数的参数值,并且基于该时间函数搜索最佳设置。采样点通过迭代选取,以改进时间函数并最终稳定。本专利技术设计了一个多项式拟合方法决定时间函数的阶,然后采样数据被反复用于计算多项式系数直到足够的精度值。时间函数生成后,本专利技术使用搜索方法找到最优的数据块大小和线程结构。具体方法如下:数据:nx,ny为两个方向的实例值,X,Y为任何可能的线程块和线程平均块。1xp_list[nx]←x_Execute(app,Y,nx);2yp_list[ny]←y_Execute(app,X,ny);3Ox=Order(xp_list),Oy=Order(yp_list);4pn=(Ox+1)(Oy+1);5whileStability(coef_list)>STAthdo6RPL,P,T,A=07RPL[pn]←pnrandompoints8Producepn×pnmaxtrixP9T[pn]←Execute(app,RPL)10A=P-1T11coef_list←coef_list∪Normal(A)12Setuptimefunctionf(x,y)withcoef_list,OxandOy13forD∈Diagonal_Pathdo14CPL=015forpoint∈Curve_Path(D)do16CPL←CPL∪(point,f(point本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201410323420.html" title="一种GPU上MapReduce负载分配和线程结构优化方法原文来自X技术">GPU上MapReduce负载分配和线程结构优化方法</a>

【技术保护点】
一种基于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′:t=f(x,y)xy=D/dx∈[xmin,xmax],y∈[ymin,ymax]---(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值就对应最佳的数据块大小和线程结构,因此,就找到满足最优解决方案的数据块大小和线程结构。...

【技术特征摘要】
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),即线程的总数量,其中x和y是线程块的数量和每个块中线程的数量,数据块大小为D,d表示每个线程的负载即工作量,在一定范围内增加时,f(x,y)的值也连续递增,通过有效的取样,选择D以及与之相匹配的线程结构最小值[H/d]×tD;2)搜索模型的建立将[xmin,xmax]定义为线程块数量范围,将[ymin,ymax]定义为每个线程块包含线程数量范围,其中x,y都为整数,找到适当的(x,y)值就计算出最小运行时间,定义曲线l′公式曲线l′表示在数据块D固定情况下x和y不同组合的执行时间,定义l为曲面Sd和Sp的交线,其中Sd是满足x×y=D/d的线结构设置,Sp是St在x-y坐标平面上的投影,St是GPU上特定MapReduce应用程序的时间函数f(x,y),其中相交线可以用来获得实际x和y值,Sd和Sp相互垂直,l是l′在平面Sp上的投影,定义点集P为所有在Sp上离l最近的所有...

【专利技术属性】
技术研发人员:郭兵沈艳王继禾陈辉马群杨奔盛志远黄勇张放陈英超
申请(专利权)人:四川大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1