CN104156268A - 一种GPU上MapReduce负载分配和线程结构优化方法 - Google Patents
一种GPU上MapReduce负载分配和线程结构优化方法 Download PDFInfo
- 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
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),现场可编程门阵列(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′表示在数据块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-1T
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
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来评估系数的稳定性,差函数如下表示:
在该差函数的离散表面,如果最高点比阀值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′表示在数据块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值就对应最佳的数据块大小和线程结构,因此,就找到满足最优解决方案的数据块大小和线程结构。
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)
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)
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端自适应负载均衡方法 |
-
2014
- 2014-07-08 CN CN201410323420.3A patent/CN104156268B/zh not_active Expired - Fee Related
Patent Citations (2)
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)
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 |