论文部分内容阅读
GPU因其卓越的并行计算能力已经被应用到许多领域,但GPU架构的复杂性使得程序员很难充分利用GPU上的所有计算资源和存储带宽。同时,GPU内存层次的复杂性和GPU多种形式的并行处理,使得找到GPU应用程序的性能瓶颈非常具有挑战性。尽管目前已存在一些模拟器或分析工具,但它们只提供大量的、程序员无法很好理解的数据信息,需要具备很强的专业知识才能对数据进行进一步分析。也有一些研究使用数学建模方法来进行性能分析,但这些方法通常过于复杂,而且需要依赖各种监控工具来获取分析数据,耗时很长,不易于用户使用。 针对上述性能分析方法存在的问题,提出了一种将决策树算法与理论分析模型相结合的性能评估方法GPUPerfML,来快速准确地定位GPU应用的性能瓶颈,并指导应用程序优化。利用决策树算法对通过nvprof工具获取的应用性能特征数据进行学习和训练,构建出能够表征应用性能特征重要度的决策树。基于决策树的特征选择,可以从大量特征中提取对应用性能影响较大的性能特征集合。同时,将这些特征根据对性能的影响程度进行排序,能鉴别出影响性能的几个关键因素、以及它们的重要程度。提出的基于程序的理论分析模型根据GPU架构及GPU应用运行情况的相关性,将性能问题分为计算相关、内存相关、同步相关三大问题,并建立了性能特征与这些性能问题之间的映射关系,从而快速直接地识别出GPU应用的性能瓶颈,通过理论分析来指导决策树的构建和特征分析,保证和提高了该方法用于性能评估的准确性。 基于Linux操作系统和CUDA平台,实现的基于决策树和理论分析的性能评估方法分析四种常用且具有代表性的GPU应用程序(Matrix Transpose,Parallel Reduce,BFS和SPMV),识别其性能瓶颈并基于此对其进行优化。实验结果表明,该性能评估方法能准确鉴别出不同应用程序的性能瓶颈问题,判断出的影响程度与实际相符,而且据此进行的优化达到了12%~144%的性能提速。