一种基于多特征耦合的CUDA程序一体化性能预测方法与流程

文档序号:17441816发布日期:2019-04-17 04:51阅读:285来源:国知局
本发明涉及一种cuda程序一体化性能预测方法,属于电子与信息
技术领域
:。
背景技术
::程序性能预测是并行程序设计过程中的重要环节,它在定位程序性能瓶颈,优化程序性能等方面起着重要作用。串行程序运行时间的增长数量级与问题规模间的关系可以由算法时间复杂度来描述。然而由于gpu(graphicsprocessingunit图形处理器)程序的指令执行机制专门为并行而设计,且与设备硬件架构密切相关,加之cuda(computeunifieddevicearchitecture,统一计算设备架构)程序运行状态还会受到计算指令延迟、内存带宽、内核执行配置、同步次数等因素的影响,使其性能难以用基于问题规模分析串行程序性能的传统方法进行预测。评估并行程序及算法性能优化水平的经典理论有amdahl定律和gustafson定律,它们描述了串行程序并行化后所能取得的性能提升上界,加速比和并行效率用于衡量并行程序性能优化效果。其他性能度量指标有work+step复杂度、计算复杂度、访存复杂度等,它们借鉴了算法时间复杂度的思想,但度量结果较为粗糙(精准度低)。为对cuda程序性能水平进行精确预测,一系列与性能有关的高层次特征及度量,各种性能预测或分析模型被相继提出。高层次特征是对基本特征的整合,也是对算法逻辑、程序结构或硬件架构的高度抽象,它们是建立具体评估方法的基础要素。预测分析模型则使用数学方法对程序的执行过程进行分析或建模,建立特征输入和性能输出间的准确函数关系。基于统计学习方法的模型因为无法获取全面的数据集导致模型泛化能力低。此外,数据法或模拟法也可以被用来评估程序性能,但数据法对并行程序适用性不强,模拟法的时间开销过大。目前有关gpu通用高性能计算的大多数研究都热衷于开发加速应用,而gpu性能预测问题尚缺少成熟的解决方案,相关技术仍需进一步完善。技术实现要素:本发明为解决现有技术对cuda程序性能预测精准度较低的问题,提供了一种基于多特征耦合的cuda程序一体化性能预测方法。本发明所述一种基于多特征耦合的cuda程序一体化性能预测方法,通过以下技术方案实现:步骤一、提取数据、程序、gpu硬件的固有特征;具体包括:获取cuda程序内核单位warp运行时间wtime、warp大小wsize,设计内核执行配置参数dg、db,依据db计算线程块包含的warp数目nbw;计算线程应用的寄存器数量rpt,以及单位线程块应用的共享内存大小smpb;获取gpu设备的计算能力capability、cudacore数量ncc、流多处理器sm数量nsm;warp为线程束,gpu调度的基本单元;core为硬件核心;步骤二、使用占有率计算器结合db、rpt、smpb、capability计算gpu最大激活状态warp数目naw;再结合nsm计算设备并行空间dps;利用特征dg、nbw、nsm计算内核warp总数nkw;步骤三、以warp为研究单位,利用步骤一中获取到的ncc、nbw、wsize、nsm特征,获得可绝对并行的线程块数目apdg;结合步骤二中得到的dps与nkw计算设备并行空间闲置度dpsid;通过nkw、nbw、nsm得到smwarp负载nsmw;步骤四、通过比较dg与apdg,以及dpsid与1的数值关系,判定cuda程序内核状态并获得对应的内核持续时间体积kdtv;步骤五、针对步骤四中判定的结果,得到此时的内核持续时间kdt,完成预测。本发明最为突出的特点和显著的有益效果是:本发明所涉及的一种基于多特征耦合的cuda程序一体化性能预测方法,以warp负载均衡型cuda程序内核函数为研究对象,将程序运行时间作为性能分析指标,从分析gpuwarp调度机制入手,结合gpu硬件参数特征以及cuda内核函数固有属性,定义了设备并行空间(dps)、设备并行空间闲置度(dpsid)、smwarp负载(nsmw)以及并行效应因子(pef)等高层次性能相关特征;基于上述特征,构建了一种基于多特征耦合的cuda程序内核函数一体化性能预测方法来精准预测cuda程序内核函数执行性能;能够恰当地描述cuda内核在不同执行配置参数下的运行时间规律;基于内核kdt指标,还可以进一步计算出加速比,指令吞吐量等性能指标。本发明预测准确度高且具有通用性,多个内核实验的结果验证了本发明方法对现有程序性能的平均预测准确率达到94.73%,对并行算法性能也能做出合理的定性预测。附图说明图1为本发明特征值计算流程图;图2为本发明中由算得的特征值进行性能预测的流程图;图3为实施例中基准程序imgfiltert=10的kdt曲线及散点图;图4为实施例中基准程序vecaddx3的kdt曲线及散点图;图5为实施例中基准程序matmul的kdt曲线及散点图;图6为实施例中基准程序transpose的kdt曲线及散点图;图7为实施例中基准程序vecaddx3在不同nsmw数值下的pef特征值分布图;图8为实施例中基准程序imgfiltert=10在不同nsmw数值下的pef特征值分布图;图9为实施例中基准程序transpose在不同nsmw数值下的pef特征值分布图;图10为实施例中基准程序matmul在不同nsmw数值下的pef特征值分布图;图11为实施例中vecaddx3程序用例在dg≤apdg时的kdtv实际值和预测值对比图;图12为实施例中imgfiltert=10程序用例在dg≤apdg时的kdtv实际值和预测值对比图;图13为实施例中vecaddx3程序用例在dg>apdg且dpsid≥1时的真实kdtv分布图;图14为实施例中imgfiltert=10程序用例在dg>apdg且dpsid≥1时的真实kdtv分布图;图15为实施例中imgfiltert=20程序用例在dg>apdg且dpsid≥1时的真实kdtv分布图;图16为实施例中matmul程序用例在dg>apdg且dpsid≥1时的真实kdtv分布图;图17为实施例中imgfiltert=10程序用例在dg>apdg且dpsid<1时的kdtv实际值和预测值对比图;其中,predict表示预测值;图18为实施例中imgfiltert=20程序用例在dg>apdg且dpsid<1时的kdtv实际值和预测值对比图;图19为实施例中matmul程序用例在dg>apdg且dpsid<1时的kdtv实际值和预测值对比图;图20为实施例中transpose程序用例在dg>apdg且dpsid<1时的kdtv实际值和预测值对比图。具体实施方式具体实施方式一:结合图1对本实施方式进行说明,本实施方式给出的一种基于多特征耦合的cuda程序一体化性能预测方法,具体包括以下步骤:步骤一、提取数据、程序(或算法)、gpu硬件的固有特征;具体包括:获取cuda程序内核单位warp运行时间wtime、warp大小wsize,设计内核执行配置参数<<<dg,db>>>,依据db计算线程块包含的warp数目nbw(numberofblockwarps);计算线程应用的寄存器数量rpt(registerperthread),以及单位线程块应用的共享内存大小smpb(sharedmemoryperblock);获取gpu设备的计算能力capability、cudacore数量ncc(numberofcudacores)、流多处理器sm数量nsm(numberofstreamingmultiprocessors);warp为线程束core为硬件核心;步骤二、使用nvida提供的占有率计算器结合db、rpt、smpb、capability计算gpu最大激活状态warp数目naw(numberofactivewarps);再结合nsm计算设备并行空间dps(deviceparallelismspace);利用特征dg、nbw、nsm计算不内核warp总数nkw(numberofkernelwarps);步骤三、以warp为研究单位,利用步骤一中获取到的ncc、nbw、wsize、nsm特征,获得可绝对并行的线程块数目apdg(absoluteparalleldg);结合步骤二中得到的dps与nkw计算设备并行空间闲置度dpsid(dpsidledegree);通过nkw、nbw、nsm得到smwarp负载nsmw(numberofsmwarps)高层次性能相关特征;步骤四、通过比较dg与apdg,以及dpsid与1的数值关系,判定cuda程序内核状态并获得对应的内核持续时间体积kdtv(kerneldurationvolume);步骤五、针对步骤四中判定的结果,得到此时的内核持续时间kdt(kerneldurationtime),完成预测。其他步骤及参数与具体实施方式一相同。具体实施方式二:本实施方式与具体实施方式一不同的是,步骤二中所述naw的具体计算过程为:naw=calculator(db,rpt,smpb,capability)(1)实际的nkw(dg×nbw)个warp不能被评分到sm上,所以用上式计算修正nkw,使基于nkw计算的nsmw表示内核负载(等价于被分配到最大warp数目的负载)。其他步骤及参数与具体实施方式一相同。具体实施方式三:本实施方式与具体实施方式一不同的是,步骤二中所述计算设备并行空间dps的具体过程为:dps=naw×nsm(2)其他步骤及参数与具体实施方式一或二相同。具体实施方式四:本实施方式与具体实施方式一不同的是,步骤二中所述nkw具体为:nkw=ceil(dg,nsm)×nbw(3)其中,函数ceil(·,·)表示将参数向上舍入为最接近的指定基数的倍数。其他步骤及参数与具体实施方式一、二或三相同。具体实施方式五:本实施方式与具体实施方式一不同的是,步骤三中所述获得可绝对并行的线程块数目apdg的具体过程为:其中,函数floor(·)表示向下取整。其他步骤及参数与具体实施方式一至四相同。具体实施方式六:本实施方式与具体实施方式一不同的是,步骤三中所述dpsid具体为:其他步骤及参数与具体实施方式一至五相同。具体实施方式七:本实施方式与具体实施方式一不同的是,步骤三中所述nsmw具体为:其他步骤及参数与具体实施方式一至六相同。具体实施方式八:本实施方式与具体实施方式一不同的是,步骤五中所述kdt的具体计算为:kdt=kdtv×wtime(7)其他步骤及参数与具体实施方式一至七相同。具体实施方式九:本实施方式与具体实施方式一至八不同的是,如图2所示,步骤四具体包括以下过程:比较dg与apdg的数值关系,如果dg≤apdg,则令kdtv=1;如果dg>apdg,继续比较dpsid与1的数值关系:若dpsid≥1,dpsid特征有效,则结合nsmw、dpsid、wload、nsmb获得kdtv值:kdtv=scenraio2(nsmw,dpsid,wload,nsmb)其中,wload为单个warp负载;nsmb(numberofsmblocks)为sm被分配到的最大线程块数;若dpsid<1,则dpsid特征无效,选取该状态(情境)下的程序样本,并通过运行获取其kdt样本,进而计算程序样本的并行效应因子pef集合,并将pef平均值记为spef(stablepef),然后采用公式(9)获得kdtv值:kdtv=nsmw×spef(9)其他步骤及参数与具体实施方式一至八相同。具体实施方式十:本实施方式与具体实施方式九不同的是,步骤四中所述计算程序样本的并行效应因子pef集合的具体过程包括:先将运行获取的kdt样本与单位warp运行时间wtime做商,计算得到kdtv(kerneldurationvolume)特征,压缩kdt数值范围,计算公式为:然后将kdtv与nsmw做商,计算并行效应因子pef(parallelismeffectfactor),pef用于表示gpu对内核warp的并行效果,计算公式为:其他步骤及参数与具体实施方式一至九相同。实施例采用以下实施例验证本发明的有益效果:为进一步检验框架性能评估原理的科学性,基于表1中的基准程序进行两方面实验。一方面,通过总结程序运行时间规律,就nsmw,spef两个特征以及框架结构的合理性进行验证;另一方面,应用框架对现有程序内核在不同情境下的运行时间进行预测,通过对比kdt的真实值和预测值,验证框架的通用性和预测结果准确性。表1基准程序列表实验设计:实验测试对象为表1中4个具有代表性的基准程序,根据内核wload与线程块大小和问题规模的关系,基准程序被分为四类,其功能和类型见表1,表1第4、5列的意义为基准程序wload是否受线程块尺寸或问题规模的影响。实验所采用的基准程序涉及了多种指令类型,不同复杂程度的程序流程以及计算总量,应用了相对全面的cuda编程技术,旨在保证实验的可信性和完整性。其中,vecaddx3程序对两个输入向量重复相加三次,避免因单次向量加执行时间过短影响实验观察效果;matmul为应用共享内存的分块矩阵乘经典程序,每个线程相当于计算两个向量的点积结果;transpose程序把矩阵元素拷贝到共享内存中,在共享内存中实现了转置操作,同时还保证了对全局内存的合并访问,每个线程处理一个矩阵元素;imgfilter内核实现了一个图像各向异性扩散滤波方法,主要涉及了一个应用于每个图像像素的迭代方程,如公式(12)所示:其中,i代表图像,t是迭代次数,用来控制滤波程度,it表示第t次迭代图像;λ表示决定扩散速率的常数;cnx,y,csx,y,cex,y,cwx,y分别表示四个方向上的扩散系数;表示像素ix,y四个方向上的梯度;k表示热传导系数;实验通过改变t实现成比例地修改warp计算量。设备型号为nvidiagtx940mx,该设备内置3个sm,每个sm配有128个cudacores,显存为4gb,cuda版本为cuda8.0。为获取kdt,将每个程序用例重复运行10次,借助nvidia提供的程序性能分析工具nvvp收集内核运行时间信息,然后取10次用时的平均值记为该用例的kdt,以降低测量误差。程序用例可以表示为一个三元组(kernel,dg,db),kernel代表该用例的内核函数,dg,db即为内核的执行配置参数。dg×db为线程总数,同时也代表了问题的规模。对于具体的基准程序,实验在保证wload恒定的前提下,通过修改内核dg,db生成大量程序用例。在获取程序用例的kdt数据后,从数据中观察基于特征构建的框架方法是否能准确预测kdt。1.特征选择合理性验证(1)nsmw特征合理性表1中基准程序的kdt曲线及散点如图3~图6所示。图3和图4以nbw为横坐标,绘制了程序用例在不同nbw和dg下的kdt曲线。kdt曲线在dg介于[(p-1)×nsm+1,p×nsm],p∈n+之间时基本重合,kdt重合的程序用例nsmw特征相同。图5和6以nsmw为横坐标,从图中可以看出,当nsmw相同时,程序用例的kdt散点大量重合,kdt散点间的差异是因为受到了dpsid等其他性能特征的影响。由此可验证nsmw能代表sm以及gpu的计算负载。(2)spef特征存在性验证不同基准程序pef随nsmw增大的变化趋势如图7~图10所示。程序用例pef散点分布情况存在共性,即当nsmw小于某个阈值时,pef处在变化当中;其中imgfiltert=10内核的波动幅度还很大。但当nsmw大于某个阈值后,pef总会稳定于某个常数附近,验证了本发明定义的spef符合客观规律。2.框架性能预测效果验证(1)在dg≤apdg时的情境验证当程序用例dg≤apdg时,vecaddx3与imgfiltert=10内核真实kdt与框架预测的kdt对比情况如图11和图12所示。在本实验环境下,处于dg≤apdg情境的程序用例小于10个。图11和图12所示程序用例kdtv分别在1±0.11区间和1±0.04内,验证了该情境下框架令kdtv为1的策略预测结果最大误差为0.11×kdtv。(2)在dg>apdg且dpsid≥1时的情境验证当程序用例dg>apdg且nsmw≤naw时。不同基准程序内核在不同nsmw下的真实kdtv散点分布如图13~图16所示。kdtv会同时受到dpsid,nsmw,nsmb以及wload的影响,即dpsid大,nsmw小,nsmb大的程序用例对应的kdtv小,反之kdtv大。由于imgfilter内核没有应用共享内存等优化技术,内核wload优化不够好,其kdtv与nsmw的平均正相关系数apcc较其他内核更大。(3)在dg>apdg且dpsid<1时的情境验证当程序用例dpsid<1时,基准程序内核在不同nsmw下的kdtv预测值与实际kdtv散点如图17~图20所示。图17~图20中4个基准程序的wtime估值,spef和执行配置信息见表2:表2基准程序参数表图17、图18、图19分别对应了表2中前三个内核的实验结果,图20合并了表2中后两个内核的实验结果。整体上,kdtv与nsmw为线性相关关系,相关系数为spef。采用式(13)计算的kdtv平均预测准确率为94.73%,从而验证了本发明的科学性。本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1