首页> 中国专利> CPU‑GPU异构环境中对GPU应用的性能评估方法及系统

CPU‑GPU异构环境中对GPU应用的性能评估方法及系统

摘要

本发明公开了一种CPU‑GPU异构环境中对GPU应用的性能评估方法及系统,属于GPU性能评估领域。方法具体为:基于机器学习中的决策树算法,对GPU架构上运行的各类应用的执行情况学习,建立决策树模型;在决策树匹配过程中依次获得对应用执行时间影响最大的监控特征,即对特征的重要度排序;依次将筛选出的特征集与四类应用常见的问题对应,主要是指计算相关、内存相关、占用率相关、同步相关四大常见问题,由此初步得到待分析应用的性能瓶颈所在的问题方向。本发明通过结合决策树模型和分析建模的方法,提供了一种通用的、相对准确的、快速的、简单易用的对GPU上的资源和应用进行性能评估的方法。

著录项

  • 公开/公告号CN107908536A

    专利类型发明专利

  • 公开/公告日2018-04-13

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN201711146155.6

  • 发明设计人 廖小飞;郑然;胡清月;金海;

    申请日2017-11-17

  • 分类号G06F11/34(20060101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人李智;曹葆青

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2023-06-19 05:00:54

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-19

    授权

    授权

  • 2018-05-08

    实质审查的生效 IPC(主分类):G06F11/34 申请日:20171117

    实质审查的生效

  • 2018-04-13

    公开

    公开

说明书

技术领域

本发明属于GPU性能评估领域,更具体地,涉及一种CPU+GPU混合异构环境中对GPU上的资源和应用结合机器学习和分析建模进行性能评估的方法及系统。

背景技术

随着科学技术的不断发展,各方面对高性能计算提出了更高的要求。GPU具有强大的计算能力、高存储带宽、低功耗以及较好的可编程性,但对逻辑方面的处理并不好,使得CPU-GPU异构成为一种必然趋势。然而,CPU-GPU异构计算节点可达到的性能虽高,但实际性能往往不够理想,不能有效利用计算资源和存储带宽。性能下降的原因在于多个方面,包括任务分配不均导致负载不均衡、SM利用率低;不好的访存模式导致带宽的低效利用;冗余传输导致通信带宽的低效利用等等。而架构中无序的执行、复杂的内存层次、多种形式的并行处理等复杂的因素,却让我们难以找出性能下降的根本原因。对于性能的提升而做出的优化措施,大多数也只能是根据自身的经验进行启发式的大量尝试,耗时又费力。因此,对性能评估方法的研究尤为重要。

目前,传统的性能评估方法是从GPU架构或应用本身问题或应用可优化措施方面出发,通过分类建立不同的指标体系,比较获得最需优化的指标,来反映性能瓶颈和指导优化。而各个指标的建立,是利用各种监控仿真工具获取的数据进行建模。近年来,利用机器学习方法训练模型进行特征选择和分类,来预测kernel执行时间、kernel在不同配置下的性能变化趋势等研究也相继出现。

然而,上述方法存在一定的缺陷。传统的性能分析模型,虽然准确度较高,但需要对硬件架构知识有详细的了解,获取数据的方法和建模方法都非常复杂,往往耗时很长,模型很难用;或是为特定架构或应用而构建,不能通用。而基于机器学习的方法虽简单易用,但是其准确度强烈依赖训练数据集,也依赖于模型本身对特征值的选取;并且使用该方法进行性能评估的研究尚少,主要用于性能预测,不能反映性能瓶颈和指导应用优化。

发明内容

针对现有方法的缺陷,本发明的目的在于提供一种通用的、相对准确的、快速的、简单易用的对GPU上的资源和应用进行性能评估的方法及系统。

为实现本发明技术目的,本发明采用如下技术方案:

CPU-GPU异构环境中对GPU应用的性能评估方法,包括离线决策树构建部分和在线性能评估部分:

所述离线决策树构建部分包括以下步骤:

(S1)提取不同GPU应用在运行过程中的多条样本监控记录组成样本监控数据集,每条样本监控记录包含多个表征GPU应用运行状态的特征;(S2)从样本监控数据集中筛选出对GPU性能影响最大的特征,将其作为根节点;按照根节点取值大小将样本监控数据集划分为多个子集,从每一子集中分别筛选出对GPU性能影响次大的特征,将其作为第一层子节点;按照上述相同的方式筛选出余下层次的子节点,从而构建按照对GPU性能影响大小对特征排序的决策树;

所述在线性能评估部分包括以下步骤:

(T1)从待分析GPU应用的运行过程中提取待分析监控记录;

(T2)将待分析监控记录与所述离线构建的决策树进行匹配,得到对GPU性能影响的特征排序组合;

(T3)根据步骤(T2)得到的特征排序组合,在特征排序组合与GPU性能关注点的映射关系进行查询,得到待分析监控记录对应的GPU性能关注点。

进一步地,所述步骤(S2)筛选根节点的具体实施方式为:

(S21)计算样本监控数据集的信息熵;

(S22)针对每一特征,按照其不同取值将样本监控数据集划分为多个子集,计算每个子集的信息熵,对每个子集的信息熵进行加权求和得到该特征的信息熵;

(S23)分别计算样本监控数据集的信息熵与各特征的信息熵的差值得到各特征的信息增益;

(S24)将信息增益最大的特征作为根节点。

进一步地,所述步骤(S22)中加权求和的权重系数为子集中的记录数占样本监控数据集的记录数的比例。

CPU-GPU异构环境中对GPU应用的性能评估系统,包括离线决策树构建部分和在线性能评估部分:

所述离线决策树构建部分包括以下模块:

样本特征提取模块,用于提取不同GPU应用在运行过程中的多条样本监控记录组成样本监控数据集,每条样本监控记录包含多个表征GPU应用运行状态的特征;

决策树构建模块,用于从样本监控数据集中筛选出对GPU性能影响最大的特征,将其作为根节点;按照根节点取值大小将样本监控数据集划分为多个子集,从每一子集中分别筛选出对GPU性能影响次大的特征,将其作为第一层子节点;按照上述相同的方式筛选出余下层次的子节点,从而构建按照对GPU性能影响大小对特征排序的决策树;

所述在线性能评估部分包括以下模块:

待评估特征提取模块,用于从待分析GPU应用的运行过程中提取待分析监控记录;

特征匹配模块,用于将待分析监控记录与所述离线构建的决策树进行匹配,得到对GPU性能影响的特征排序组合;

查询模块,用于根据特征匹配模块得到的特征排序组合,在特征排序组合与GPU性能关注点的映射关系进行查询,得到待分析监控记录对应的GPU性能关注点。

进一步地,所述决策树构建模块包括:

信息熵计算子模块,用于计算样本监控数据集的信息熵;

特征信息熵计算子模块,用于按照其不同取值将样本监控数据集划分为多个子集,计算每个子集的信息熵,对每个子集的信息熵进行加权求和得到该特征的信息熵;

特征信息增益计算子模块,用于分别计算样本监控数据集的信息熵与各特征的信息熵的差值得到各特征的信息增益;

根节点构建子模块,用于将信息增益最大的特征作为根节点。

进一步地,所述特征信息熵计算子模块中加权求和的权重系数为子集中的记录数占样本监控数据集的记录数的比例。

进一步地,还对样本监控记录进行归一化处理。

进一步地,所述性能关注点包括计算、内存、同步、资源;所述计算包括线程分歧和负载不均衡两个子问题;所述内存包括全局内存中的非规则访问、共享内存中的bankconflict、cache命中率低三个子问题,所述同步指各种stall导致的等待时间过长的问题;所述资源指GPU资源占用率低,反映出来的应用程序执行时并行度低的问题。

通过本发明构思的以上技术方案,与现有技术相比,本发明具有以下的优点和有益效果:

(1)本发明结合了机器学习算法与传统分析建模方法来进行性能评估,先使用决策树训练,对应用监控特征进行重要度排序,再利用分析模型建立的监控特征和应用问题的映射关系,可直接在利用决策树分析的时候输出应用问题,反映性能瓶颈,既利用了决策树模型的快速,也利用了分析建模的准确,而且很直观地反映了应用问题和瓶颈。

(2)本发明只需要利用决策树算法对重要监控数据进行逐层选择,从而获得不同特征对执行时间的影响程度排序,而不需要利用训练出的模型进行预测,从而避免了机器学习算法中常见的由于训练数据集较少、过拟合等因素引起的匹配度不高、准确度不高等问题。

(3)本发明中使用的决策树算法是通过信息论基础建立的,新添加的特征只会在已建立的决策树中添加一层,该节点的子树不受任何影响,对特征值的选择影响较小,使得模型的可扩展性很好。同时,模型所需数据集是通过很多不同的应用在同一架构上运行获得的,只有在换了新的GPU架构时才需要重新建模,而对于同一架构上的不同应用的分析,都可以直接利用该模型,从而保证了模型的通用性。

(4)本发明中使用到的分析建模方法只需提供特征与应用待优化问题之间的映射关系,而不需要通过建立复杂的数学模型来形成不同的指标体系,同时,只需利用hardwareperformance counter提供的原始参数作为监控数据,而不需要使用各种复杂的监控和仿真工具,使得模型的复杂度大大减小,缩短了获取各项数据所需的时间,提高了模型的易用性。

附图说明

图1是本发明中对GPU应用的性能评估方法的总体架构图。

图2是本发明中GPU应用性能评估方法中离线决策树构建模块的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1所示,CPU-GPU异构环境中对GPU应用的性能评估方法,包括离线决策树构建部分和在线性能评估部分:

所述离线决策树构建部分包括以下步骤:

(S1)提取不同GPU应用在运行过程中的多条样本监控记录组成样本监控数据集,每条样本监控记录包含多个表征GPU应用运行状态的特征;(S2)从样本监控数据集中筛选出对GPU性能影响最大的特征,将其作为根节点;按照根节点取值大小将样本监控数据集划分为多个子集,从每一子集中分别筛选出对GPU性能影响次大的特征,将其作为第一层子节点;按照上述相同的方式筛选出余下层次的子节点,从而构建按照对GPU性能影响大小对特征排序的决策树。

所述在线性能评估部分包括以下步骤:

(T1)从待分析GPU应用的运行过程中提取待分析监控记录;

(T2)将待分析监控记录与所述离线构建的决策树进行匹配,得到对GPU性能影响的重要特征排序组合;

(T3)根据步骤(T2)得到的重要特征排序组合,在重要特征排序组合与GPU性能关注点的映射关系进行查询,得到待分析监控记录对应的GPU性能关注点。

下面对所述离线决策树构建部分的各步骤详细说明:

(S1)提取不同GPU应用在运行过程中的多条样本监控记录组成样本监控数据集,每条样本监控记录包含多个表征GPU应用运行状态的特征

使用监控工具监控不同benchmark应用在GPU同一架构不同输入数据集下的各项监控数据,每条记录对应一条完整的包含所有监控特征的数据。

不同benchmark应用是指rodinia_3.1版本和parboil两个benchmark中的应用,其中rodinia benchmark中包含21个GPU应用,如图计算领域bfs、线性代数领域Gaussian、数据挖掘领域Kmeans、医学成像领域HeartWall等,parboil benchmark中包含11个应用,如矩阵向量乘Spmv、矩阵乘法MM、网格计算Stencil等。

监控特征记录,是指监控工具nvprof可以监控的所有特征的数据记录(即访问hardware performance counter获得的数值),主要包括直接得到的基础数据events,如指令条数、内存访问次数、cache命中次数等特征的数值,以及通过基础数据计算获得的metrics,如指令吞吐量、内存访问效率等特征的数值。

监控特征记录的指数据格式为[执行时间,监控特征1,监控特征2,监控特征3,……],其中执行时间为记录的标记值。

在本步骤中,为了便于后续的计算,还需要去除所有记录中数据的单位,做归一化处理,生成新的完整数据集。归一化处理是指针对每一项监控特征的数据,将其重新计算生成0到1之间的一个数字,重新计算该项特征值的公式为(当前值-最小值)/(最大值-最小值)。

(S2)从样本监控数据集中筛选出对GPU性能影响最大的特征,将其作为根节点;按照根节点取值大小将样本监控数据集划分为多个子集,从每一子集中分别筛选出对GPU性能影响次大的特征,将其作为第一层子节点;按照上述相同的方式筛选出余下层次的子节点,从而构建按照对GPU性能影响大小对特征排序的决策树。

更具体的实施方式为:

(21)初始化一颗空树,设置树高的最大值和叶子节点中最小的记录数。

树高的最大值,是指在建立决策树模型时树的最大高度,是用于决定模型停止的条件。叶子节点中最小的记录数,是指书中每个节点中记录数的最小值,也是用于决定模型停止的条件。

(22)处理树的第一层,实例化根节点。

(221)计算样本监控数据集的信息熵。数据集的信息熵,是指累加所有记录的标记值中每个可能的值出现的概率*概率的以2为底的对数。

(222)针对每一特征,按照其不同取值将样本监控数据集划分为多个子集,计算每个子集的信息熵,对每个子集的信息熵进行加权求和得到该特征的信息熵;加权求和的权重系数为子集中的记录数占样本监控数据集的记录数的比例。

(223)分别计算样本监控数据集的信息熵与各特征的信息熵的差值得到各特征的信息增益。

(224)将信息增益最大的特征作为根节点。

(23)处理树的第二层:

依次对每个子集做如下处理:

当子集中记录的个数小于叶子节点中最小的记录数时,不再处理该子集;当子集中记录的个数大于叶子节点中最小的记录数时,对该子集计算信息熵。

针对每一特征,按照其不同取值将子集再划分为多个第二子集,计算每个第二子集的信息熵,对每个第二子集的信息熵进行加权求和得到该特征的第二信息熵。

分别计算子集的信息熵与各特征的第二信息熵的差值得到各特征的第二信息增益;

将第二信息增益最大的特征作为第二层的一个节点。

(24)按照上述相同防暑,处理树的余下层次,直到当树的高度超过树高的最大值时或不产生新的叶子节点。

下面对所述在线性能评估部分的各步骤详细说明:

(T1)从待分析GPU应用的运行过程中提取待分析监控记录。与步骤(S1)的提取方式相同。

(T2)将待分析监控记录与所述离线构建的决策树进行匹配,得到对GPU性能影响的重要特征排序组合。

(T3)根据步骤(T2)得到的重要特征排序组合,在重要特征排序组合与GPU性能关注点的映射关系进行查询,得到待分析监控记录对应的GPU性能关注点。

其中,重要特征排序组合与GPU性能关注点的映射关系通过经验知识对GPU应用的各项特征和GPU应用的性能问题进行分析来构建得到。比如,对于全局内存而言,如果指令所需的访存次数远远小于实际上的访存次数,且L1cache命中率较高时,说明同一条访存指令反复执行了很多遍,即全局内存中存在非合并的访存模式,对应于全局内存的非规则访问问题。

根据监控特征集中包含的所有特征,判断是否可以指向共同的性能关注点,即四类常见性能关注点中的一类。

其中,四类常见问题是指计算相关、内存相关、同步相关和占用率相关问题。系统执行一个应用的耗时Ttotal=Tcompute+Tmemory+Tsync,因此可以将影响应用执行时间的问题具体分为应用相关、内存相关和同步相关的耗时。此外,对于系统而言,整体的资源利用率与应用特性无关,但是影响应用的执行,即占用率相关的问题。

其中,计算相关问题又分为线程分歧、负载不均衡两个子问题,内存相关问题又分为全局内存中的非规则访问、共享内存中的bank conflict、cache命中率低三个子问题,占用率相关是指GPU资源占用率低,反映出来的应用程序执行时并行度低的问题,同步相关是指各种stall导致的等待时间过长的问题。

获知性能关注点后,用户可根据子节点中记录的特征值的取值变化,建议对特征值做何种优化调整,输出性能瓶颈及参考优化建议。

其中,性能瓶颈是指已经通过数学模型确认的应用性能瓶颈问题。优化建议是指根据决策树中所有特征值或部分特征值的取值变化提出的对特征值的优化调整。用户也可以根据子问题自行确定优化策略。

本发明通过决策树算法对不同应用在同一GPU架构上的应用执行情况进行学习,获取对待分析应用执行时间影响较大的监控特征重要度排序,再利用监控特征集与常见应用问题之间的映射关系,反映出待分析应用的最大问题,从而获得应用的性能瓶颈所在,并指导程序员进行应用程序优化,提供一种通用的、相对准确的、快速的、简单易用的对GPU上的资源和应用进行性能评估的方法。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号