用于对GPU显存复用方案进行优化的方法及装置制造方法及图纸

技术编号:33248475 阅读:72 留言:0更新日期:2022-04-27 18:05
本说明书实施例提供了用于对GPU显存复用方案进行优化的方法及装置。在该方法中,确定应用程序运行所需访问的内存对象以及各个内存对象的访问次序和数据量;根据访问次序的先后顺序以及数据量大小顺序对各个内存对象进行排序,以得到内存对象序列;从内存对象序列中选择第一数量的数据量最大的内存对象;根据所选择的内存对象的数据量将GPU显存划分为包括第一数量的内存段;循环执行以下内存对象分配过程,直至生成第二数量的分配序列:将内存对象序列中未分配的其他内存对象分配至各个内存段中,以生成分配序列;以及利用遗传算法以及数据迁移量对多个分配序列进行处理,以选出数据迁移量最小的分配序列作为GPU显存复用方案。方案。方案。

【技术实现步骤摘要】
用于对GPU显存复用方案进行优化的方法及装置


[0001]本说明书实施例涉及计算机
,具体地,涉及用于对GPU显存复用方案进行优化的方法及装置。

技术介绍

[0002]GPU是一种广泛使用的能够减少对CPU依赖、并进行部分原本CPU工作的微处理器,并且具有高性能计算加速特点,广泛用于AI(Artificial Intelligence)、机器学习以及在线服务等。GPU在应用程序运行过程中,大多数的功能任务都运行在GPU上,GPU为运行在其上的功能任务提供显存,以供各个功能任务正常运行。
[0003]由于GPU显存的局限性,无法将应用程序中需要访问的所有内存对象都同时存储在GPU显存中,因此,为了提高访问内存对象的效率且实现对GPU显存的充分利用,需要对GPU显存进行复用。目前,有的应用程序(比如,机器学习)中需要访问的内存对象数量较大,较大数量的内存对象可以通过不同的复用方案来实现对GPU显存的复用。比如,在GPU显存中给定一个显存地址空间,在某一时刻将待访问的内存对象R1存储至该显存地址空间中,在该内存对象R1访问完成后,将其迁移至CPU内存中,并将下一时刻待访问的内存对象R2存储至该显存地址空间中,以此方式来复用GPU显存。

技术实现思路

[0004]鉴于上述,本说明书实施例提供了用于对GPU显存复用方案进行优化的方法及装置。通过本说明书实施例的技术方案,能够基于全局选出最优的GPU显存复用方案,减少GPU显存复用过程中的数据迁移量,从而提升机器学习的性能。
[0005]根据本说明书实施例的一个方面,提供了一种用于对GPU显存复用方案进行优化的方法,包括:确定应用程序运行所需访问的内存对象以及各个内存对象的访问次序和数据量;根据所述访问次序的先后顺序以及所述数据量大小顺序对所述各个内存对象进行排序,以得到所述各个内存对象按照数据量从大到小的顺序排列的内存对象序列;从所述内存对象序列中选择第一数量的数据量最大的内存对象,其中,所选择的内存对象的数据量之和不大于所述GPU显存;根据所选择的内存对象的数据量将所述GPU显存划分为包括所述第一数量的内存段,其中,所划分的内存段与所选择的内存对象一一对应,各个内存段的存储空间大小与对应的内存对象的数据量大小相同;循环执行以下内存对象分配过程,直至生成第二数量的分配序列:将所述内存对象序列中未分配的其他内存对象分配至各个内存段中,以生成由所述各个内存对象和所述各个内存段构成的分配序列,其中,不同轮次的内存对象分配过程所生成的分配序列不同,被分配在同一内存段中的各个内存对象复用该内存段的存储空间;以及利用遗传算法以及数据迁移量对由多轮内存对象分配过程所生成的多个分配序列进行处理,以选出数据迁移量最小的分配序列作为GPU显存复用方案。
[0006]根据本说明书实施例的另一方面,还提供一种用于对GPU显存复用方案进行优化的装置,包括:内存对象确定单元,确定应用程序运行所需访问的内存对象以及各个内存对
象的访问次序和数据量;内存对象排序单元,根据所述访问次序的先后顺序以及所述数据量大小顺序对所述各个内存对象进行排序,以得到所述各个内存对象按照数据量从大到小的顺序排列的内存对象序列;内存对象选择单元,从所述内存对象序列中选择第一数量的数据量最大的内存对象,其中,所选择的内存对象的数据量之和不大于所述GPU显存;内存段划分单元,根据所选择的内存对象的数据量将所述GPU显存划分为包括所述第一数量的内存段,其中,所划分的内存段与所选择的内存对象一一对应,各个内存段的存储空间大小与对应的内存对象的数据量大小相同;内存对象分配单元,将所述内存对象序列中未分配的其他内存对象分配至各个内存段中,以生成由所述各个内存对象和所述各个内存段构成的分配序列,其中,不同轮次的内存对象分配过程所生成的分配序列不同,被分配在同一内存段中的各个内存对象复用该内存段的存储空间;以及分配序列处理单元,利用遗传算法以及数据迁移量对由多轮内存对象分配过程所生成的多个分配序列进行处理,以选出数据迁移量最小的分配序列作为GPU显存复用方案,其中,所述内存对象分配单元循环执行,直至生成第二数量的分配序列。
[0007]根据本说明书实施例的另一方面,还提供一种电子设备,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上述任一所述的用于对GPU显存复用方案进行优化的方法。
[0008]根据本说明书实施例的另一方面,还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的用于对GPU显存复用方案进行优化的方法。
[0009]根据本说明书实施例的另一方面,还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上任一所述的用于对GPU显存复用方案进行优化的方法。
附图说明
[0010]通过参照下面的附图,可以实现对于本说明书实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
[0011]图1示出了根据本说明书实施例的用于对GPU显存复用方案进行优化的方法的一个示例的流程图。
[0012]图2A示出了根据本说明书实施例的各个内存对象进行排序的一个示例的示意图。
[0013]图2B示出了根据本说明书实施例的各个内存对象进行排序的另一个示例的示意图。
[0014]图3示出了根据本说明书实施例的GPU显存划分的一个示例的示意图。
[0015]图4示出了根据本说明书实施例的由第二数量的分配序列构成的候选种群的一个示例的示意图。
[0016]图5示出了根据本说明书实施例的内存对象分配过程的一个示例的流程图。
[0017]图6示出了根据本说明书实施例的属于同一内存段的各个内存对象复用该内存段的一个示例的示意图。
[0018]图7示出了根据本说明书实施例的利用遗传算法确定GPU显存复用方案的一个示
例的流程图。
[0019]图8示出了根据本说明书实施例的利用交叉算法对分配序列进行处理的一个示例的流程图。
[0020]图9示出了根据本说明书实施例的利用交叉算法对两个分配序列进行处理的一个示例的示意图。
[0021]图10示出了根据本说明书实施例的利用变异算法对分配序列进行处理的一个示例的流程图。
[0022]图11示出了根据本说明书实施例的利用变异算法对分配序列进行处理的一个示例的示意图。
[0023]图12示出了根据本说明书实施例的用于对GPU显存复用方案进行优化的装置的一个示例的方框图。
[0024]图13示出了根据本说明书实施例的分配序列处理单元的一个示例的方框图。
[0025]图14示出了根据本说明书实施例的内存对象排序单元的一个示例的方框图。
[0026]图15示出了根据本说明书实施例的内存对象分配单元的一个示例的方框图。
[0027]图16示出了本说明书实施例的用于本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于对GPU显存复用方案进行优化的方法,包括:确定应用程序运行所需访问的内存对象以及各个内存对象的访问次序和数据量;根据所述访问次序的先后顺序以及所述数据量大小顺序对所述各个内存对象进行排序,以得到所述各个内存对象按照数据量从大到小的顺序排列的内存对象序列;从所述内存对象序列中选择第一数量的数据量最大的内存对象,其中,所选择的内存对象的数据量之和不大于所述GPU显存;根据所选择的内存对象的数据量将所述GPU显存划分为包括所述第一数量的内存段,其中,所划分的内存段与所选择的内存对象一一对应,各个内存段的存储空间大小与对应的内存对象的数据量大小相同;循环执行以下内存对象分配过程,直至生成第二数量的分配序列:将所述内存对象序列中未分配的其他内存对象分配至各个内存段中,以生成由所述各个内存对象和所述各个内存段构成的分配序列,其中,不同轮次的内存对象分配过程所生成的分配序列不同,被分配在同一内存段中的各个内存对象复用该内存段的存储空间;以及利用遗传算法以及数据迁移量对由多轮内存对象分配过程所生成的多个分配序列进行处理,以选出数据迁移量最小的分配序列作为GPU显存复用方案。2.如权利要求1所述的方法,其中,利用遗传算法以及数据迁移量对由多轮内存对象分配过程生成的多个分配序列进行处理,以选出数据迁移量最小的分配序列作为GPU显存复用方案包括:循环执行下述过程,直至满足循环结束条件:利用遗传算法中的交叉算法和/或变异算法对待处理的多个分配序列中的至少部分分配序列进行处理,以将所述至少部分分配序列对应转换成新的分配序列;在满足所述循环结束条件时,从所述新的分配序列以及未处理的分配序列中选择数据迁移量最小的分配序列作为GPU显存复用方案;以及在未满足所述循环结束条件时,根据所述数据迁移量从所述新的分配序列以及未处理的分配序列中选择第三数量的数据迁移量最小的分配序列予以保留;以及随机生成若干个分配序列,以使所述若干个分配序列和所保留的分配序列作为下一循环过程中待处理的多个分配序列。3.如权利要求2所述的方法,其中,利用遗传算法中的交叉算法对待处理的多个分配序列中的至少部分分配序列进行处理,以将所述至少部分分配序列对应转换成新的分配序列包括:从待处理的多个分配序列中选择至少两个分配序列;以及利用所述交叉算法将所述至少两个分配序列中针对同一内存段中的部分内存对象在所述至少两个分配序列之间进行交换,以对应形成新的分配序列。4.如权利要求2所述的方法,其中,利用遗传算法中的变异算法对待处理多个分配序列中的至少部分分配序列进行处理,以将所述至少部分分配序列对应转换成新的分配序列包括:根据变异概率从待处理的多个分配序列中选择待变异的分配序列;以及针对所选择的各个分配序列,将该分配序列中的属于不同内存段的至少两个内存对象进行交换,以形成新的分配序列,其中,进行交换的各个内存对象的数据量不大于交换后所
属的内存段的存储空间大小。5.如权利要求4所述的方法,其中,执行交换操作的所述不同内存段以随机方式选择,和/或执行交换操作的各个内存对象在所属内存段中以随机方式选择。6.如权利要求4所述的方法,其中,所述变异概率随着循环轮次增大而增大。7.如权利要求2所述的方法,其中,所述循环结束条件包括以下中的至少一种:循环轮次达到指定轮次;循环执行时长达到指定时长;和连续的指定数量轮次中的数据迁移量的变化小于指定阈值。8.如权利要求1所述的方法,其中,根据所述访问次序的先后顺序以及所述数据量大小顺序对所述各个内存对象进行排序,以得到所述各个内存对象按照数据量从大到小的顺序排列的内存对象序列包括:针对所述各个内存对象,当该内存对象存在多次访问时,将满足第一访问次序合并条件的访问次序合并,以作为该内存对象对应的访问次序子序列,其中,所述第一访问次序合并条件包括:待合并的访问次序在该内存对象的访问次序序列中相邻、且在该相邻的至少两个访问次序之间的时间段未访问其他内存对象;和/或将所述各个内存对象中数据量小于指定数据量阈值、且对应的访问次序满足第二访问次序合并条件的多个内存对象合并,以得到合并内存对象,其中,所述合并内存对象的数据量等于所合并的多个内存对象的数据量之和,所述合并内存对象对应的访问次序序列包括所合并的各个内存对象的访问次序,所述第二访问次序合并条件包括:在由待合并的各个内存对象的访问次序所构成的访问次序子序列对应的时间段内未访问其他内存对象;以及根据对应的访问次序和/或访问次序子序列的先后顺序以及数据量大小顺序对经过合并处理的内存对象进行排序,以得到由经过合并处理的各个内存对象按照数据量从大到小的顺序排列的内存对象序列。9.如权利要求1所述的方法,其中,从所述内存对象序列中选择第一数量的数据量最大的内存对象包括:从所述内存对象序列中选择第一数量的数据量最大且各个数据量不同的内存对象;或者从所述内存对象序列中选择第一数量的最高排位的内存对象。10.如权利要求1所述的方法,其中,循环执行以下内存对象分配过程,直至生成第二数量的分配序列:将所述内存对象序列中未分配的其他内存对象分配至各个内存段中,以生成由所述各个内存对象和所述各个内存段构成的分配序列包括:循环...

【专利技术属性】
技术研发人员:赵军平
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:

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

1