【技术实现步骤摘要】
用于对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]根据 ...
【技术保护点】
【技术特征摘要】
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所述的方法,其中,循环执行以下内存对象分配过程,直至生成第二数量的分配序列:将所述内存对象序列中未分配的其他内存对象分配至各个内存段中,以生成由所述各个内存对象和所述各个内存段构成的分配序列包括:循环...
【专利技术属性】
技术研发人员:赵军平,
申请(专利权)人:支付宝杭州信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。