显存管理方法及相关产品

阅读: 评论:0

著录项
  • CN201911190181.8
  • 20191128
  • CN112860423A
  • 20210528
  • 深圳云天励飞技术有限公司
  • 张义
  • G06F9/50
  • G06F9/50

  • 广东省深圳市龙岗区园山街道龙岗大道8288号深圳大运软件小镇17栋1楼
  • 广东(44)
  • 广州三环专利商标代理有限公司
  • 郝传鑫;熊永强
摘要
本申请实施例公开了一种显存管理方法及相关产品,该方法包括:接收显存申请,获取所述显存申请所需的初始显存容量;根据所述初始显存容量确定所需的目标显存容量;根据所述目标显存容量得到与所述显存申请对应的目标显存块;将所述显存申请对应的待缓存文件缓存至所述目标显存块。本申请实施例有利于提高对显存块的利用率。
权利要求

1.一种显存管理方法,其特征在于,包括:

接收显存申请,获取所述显存申请所需的初始显存容量;

根据所述初始显存容量确定所需的目标显存容量;

根据所述目标显存容量得到与所述显存申请对应的目标显存块;

将所述显存申请对应的待缓存文件缓存至所述目标显存块。

2.根据权利要求1所述的方法,其特征在于,所述根据所述初始显存容量确定所需的目标显存容量,包括:

当所述初始显存容量小于等于第一阈值时,采用第一预设计算规则确定所述初始显存容量对应的目标显存容量;

当所述初始显存容量大于所述第一阈值,但小于等于第二阈值时,采用第二预设计算规则确定所述初始显存容量对应的目标显存容量。

3.根据权利要求2所述的方法,其特征在于,所述根据所述目标显存容量得到与所述显存申请对应的目标显存块,包括:

从预先建立的显存块容器池中获取与所述目标显存容量对应的目标索引标识,所述显存块容器池用于管理一个或多个显存块组,每个显存块组包括一个或多个显存容量相同的已释放显存块,每个显存块组对应一个索引标识,所述索引标识用于表征每个显存块组对应的显存容量;

确定与所述目标索引标识对应的目标显存块组中是否存在空闲显存块;

如存在空闲显存块,从所述空闲显存块中选出与所述显存申请对应的目标显存块,所述目标显存块为所述空闲显存块中的任意一个。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

如不存在空闲显存块,调用图像处理器的运行时库的应用程序接口从显存中划分与所述目标显存容量对应的目标显存块。

5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:

在释放所述目标显存块后,将所述目标显存块存放于所述显存块容器池中与所述目标索引标识对应的存放位置。

6.根据权利要求3或4所述的方法,其特征在于,所述在接收显存申请之前,所述方法还包括:

根据所述第一计算规则以及所述第一阈值确定n个第一显存块组以及确定所述n个第一显存块组每个第一显存块组对应的显存容量;

根据所述第二计算规则以及所述第二阈值确定p个第二显存块组以及确定所述p个第二显存块组中每个第二显存块组对应的显存容量;

根据所述n个第一显存块组和所述p个第二显存块组初始化所述显存块容器池所管理显存块组的数量,根据每个第一显存块组对应的显存容量初始化每个第一显存块组对应的索引标识,根据每个第二显存块组对应的显存容量初始化每个第二显存块组对应的索引标识。

7.一种显存管理装置,其特征在于,包括:

获取单元,用于接收显存申请,获取所述显存申请所需的初始显存容量;

显存容量确定单元,用于根据所述初始显存容量确定所需的目标显存容量;

显存块确定单元,用于根据所述目标显存容量得到与所述显存申请对应的目标显存块;

缓存单元,用于将所述显存申请对应的待缓存文件缓存至所述目标显存块。

8.根据权利要求7所述的装置,其特征在于,

在根据所述初始显存容量确定所需的目标显存容量方面,所述显存容量确定单元,具体用于:

当所述初始显存容量小于等于第一阈值时,采用第一预设计算规则确定所述初始显存容量对应的目标显存容量;

当所述初始显存容量大于所述第一阈值,但小于等于第二阈值时,采用第二预设计算规则确定所述初始显存容量对应的目标显存容量。

9.一种电子设备,其特征在于,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行权利要求1-6任一项方法中的步骤的指令。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-6任一项所述的方法。

说明书
技术领域

本申请涉及计算机技术领域,具体涉及一种显存管理方法及相关产品。

随着人工智能技术的发展,对计算性能的要求越来越高,对计算过程中所需的数据进行适配的缓存,是提高计算性能的一个重要途经。在图像处理过程中,会将图像数据缓存到图形处理器(英语:Graphics Processing Unit,GPU)所管理的显存块中,为提高显存的使用效率,提升系统运行的整体性能,采用显存管理模块完成显存块的分配和回收。

显存管理模块通常采用以下两种方式完成显存块的分配和回收,(1)针对系统的显存申请,每次为其分配一个固定大小的显存块,以缓存显存申请对应的文件数据,但是显存块的大小由用户提前设置,如设置过小,当遇到较大的显存申请时,该显存块无法满足缓存需求,如设置过大,当遇到较小的显存申请时,分配的显存块中块内碎片过大;(2)针对系统的申请请求,为其分配等于申请大小的显存块,这种方式会导致在显存申请大小不一样时,会分配出各种大小的显存块,在接收到新的显存申请时,无法复用分配过的显存块,每次都需要重新分配新的显存块,导致对显存块的利用。

现有的显存分配方式单一,对显存块的利用率低。

本申请实施例提供了一种显存管理方法及相关产品,预先建立显存块容器池,通过显存块容器池管理已释放的显存块,从而提高已分配显存块再次被使用的概率,通过计算规则分配显存块的大小,减少已分配的显存块的块内碎片大小。

第一方面,本申请实施例提供一种显存管理方法,包括:

接收显存申请,获取所述显存申请所需的初始显存容量;

根据所述初始显存容量确定所需的目标显存容量;

根据所述目标显存容量得到与所述显存申请对应的目标显存块;

将所述显存申请对应的待缓存文件缓存至所述目标显存块。

第二方面,本申请实施例提供一种显存管理装置,包括:

获取单元,用于接收显存申请,获取所述显存申请所需的初始显存容量;

显存容量确定单元,用于根据所述初始显存容量确定所需的目标显存容量;

显存块确定单元,用于根据所述目标显存容量得到与所述显存申请对应的目标显存块;

缓存单元,用于将所述显存申请对应的待缓存文件缓存至所述目标显存块。

第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如第一方面所述的方法中的步骤的指令。

第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得计算机执行如第一方面所述的方法。

第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机可操作来使计算机执行如第一方面所述的方法。

实施本申请实施例,具有如下有益效果:

可以看出,在本申请实施例中,在接收到显存申请时,先根据该显存申请获取目标显存容量,再查与该目标显存容量对应的目标显存块,由于该目标显存容量与该显存申请匹配,进而保证到的目标显存块的缓存空间(目标显存容量)与该显存申请匹配,从而在使用该目标显存块缓存该显存申请对应的缓存文件时,该目标显存块的缓存空间与该缓存文件适配,尽可能的保证使用目标显存块缓存待缓存文件时块内碎片较小,提高对目标显存块的利用率

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1A为本申请实施例提供的一种显存管理方法的流程示意图;

图1B为本申请实施例提供的一种显存块容器池的结构示意图;

图1C为本申请实施例提供的另一种显存块容器池的结构示意图;

图1D为本申请实施例提供的另一种显存块容器池的结构示意图;

图2为本申请实施例提供的另一种显存管理方法的流程示意图;

图3为本申请实施例提供的另一种显存管理方法的流程示意图;

图4为本申请实施例提供的一种显存管理装置的结构示意图;

图5为本申请实施例提供的一种显存管理装置的功能单元组成框图。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结果或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

参阅图1A,图1A为本申请实施例提供的一种显存管理方法,该方法应用于显存管理装置,该方法包括但不限于以下步骤:

101:显存管理装置接收用户发起的显存申请,获取所述显存申请所需的初始显存容量。

其中,本申请实施例所涉及的显存管理装置可以包括智能手机(如Android手机、iOS手机、Windows Phone手机等)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备MID(Mobile Internet Devices,MID)或穿戴式设备等,上述电子设备仅是举例,而非穷举,包含但不限于上述电子设备,在实际应用中,上述电子设备还可以包括:智能车载终端、计算机设备等等,本申请不对显存管理装置的具体形式做唯一限定。

可选的,用户可以直接向操作系统提交显存容量申请,即用户直接输入具体显存容量的显存申请,直接请求操作系统分配显存块;或者,用户向操作系统提交文件缓存申请,操作系统确定待缓存文件的缓存大小,然后,将该缓存大小作为初始显存容量,并分配与初始显存容量对应的目标显存块。

102:显存管理装置根据所述初始显存容量确定所需的目标显存容量。

当初始显存容量小于等于第一阈值K时,采用第一计算规则(第一计算公式)确定初始显存容量对应的目标显存容量,第一计算规则如下所示:

其中,F(x)为目标显存容量,x为初始显存容量,为向上取整操作,K为第一阈值,且K=2n,n为正整数。

当初始显存容量大于第一阈值,但小于等于第二阈值时,采用第二计算规则(第二计算公式)确定初始显存容量对应的目标显存容量,第二计算公式如下所示:

其中,F(x)为目标显存容量,x为初始显存容量,为向上取整操作,K为第一阈值,且K=2n,H为第二阈值,且H=2m,n和m为正整数,n<m。

103:显存管理装置根据所述目标显存容量得到与所述显存申请对应的目标显存块。

可选的,显存管理装置得到目标显存容量后,首先在显存块容器池中搜索是否存在与目标显存容量对应的显存块,如存在,则将该显存块作为目标显存块,如不存在,则调用图像处理器GPU的运行时库的应用程序接口(Application Programming Interface,API)从该显存装置的显存中划分与该目标显存容量对应的目标显存块。

其中,调用API来动态划分显存为现有技术,不再叙述。

104:显存管理装置将所述显存申请对应的待存储文件缓存至所述目标显存块。

可以看出,在本申请实施例中,在接收到显存申请时,根据计算规则确定该显存申请所需的目标显存容量,然后,先从显存块容器池中查询是否存在匹配的已释放显存块,如存在,则采用该已释放显存块缓存该显存申请对应的待缓存文件,从而提高对已释放显存块的再利用概率,如不存在,则从显存中动态划分与该目标显存容量对应的目标显存块由于目标显存容量由显存申请计算得到,从而提高目标显存块与显存申请的适配程度,从而减少目标显存块的块内碎片,提高对显存块的利用率。

在一些可能的实施方式中,在接收显存申请之前,所述方法还包括:接收输入的第一阈值和第二阈值,根据第一阈值和第二阈值创建显存块容器池;其中,该显存块容器池用于管理一个或多个显存块组,每个显存块组包括一个或多个显存容量相同的已释放显存块,每个显存块组对应一个索引标识,该索引标识用于表征每个显存块组对应的显存容量。

具体来说,根据第一计算规则以及第一阈值确定n个第一显存块组以及确定所述n个第一显存块组每个第一显存块组对应的显存容量;根据所述第二计算规则以及所述第二阈值确定p个第二显存块组以及确定所述p个第二显存块组中每个第二显存块组对应的显存容量;根据所述n个第一显存块组和所述p个第二显存块组初始化所述显存块容器池所管理显存块组的数量,根据每个第一显存块组对应的显存容量初始化每个第一显存块组对应的索引标识,根据每个第二显存块组对应的显存容量初始化每个第二显存块组对应的索引标识。

具体来讲,当0<x≤21时,的取值为1,F(x)=21,当21<x≤22时,的取值为2,F(x)=22,所以,当0<x≤2n(K)时,其总共需要n个显存块组(即n个第一显存块组)来缓存属于该显存容量范围的待缓存文件,且该n个显存块对应的显存容量分别为21、22……2n;当2n<x≤2n+1时,F(x)=(n+1-n+1)*K=2*K,当2n+1<x≤2n+2,则的取值为n+2,F(x)=(n+2-n+1)*K=3*K,故当K<x≤H,F(x)的取值范围为2*K……(m-n+1)*K,则确定对应p(m-n)个第二显存块组,且该p(m-n)个第二显存块组的显存容量分别为2*K……(m-n+1)*K,所以,综上所述该显存块容器池用于管理m(n+m-n)个显存块组,该m个显存块组对应的显存容量分别为21、22……2n(K),2*K……(m-n+1)*K。

参阅图1B,图1B为本申请实施例提供的一种显存块容器池的结构示意图,该vector_0为该容器池的索引标识,用于指示根据第一阈值和第二阈值创建出的第一个容器池vector_0,其中,size_0、size_1、size_2…size_m为该容器池vector_0所管理的显存块组对应的索引标识,当用户输入的第一阈值和第二阈值分别如上述的K和H时,则可将索引标识size_0、size_1、size_2…size_m初始化为21、22……2n(K),2*K……(m-n+1)*K,其中,vector_1中的每个元素为显存块组size_0中的一个显存块,该显存块的显存容量为该索引标识size_0。

可选的,基于上述建立的显存块容器池,根据所述目标显存容量得到与所述显存申请对应的目标显存块的实现过程可以为:从预先建立的显存块容器池中获取与所述目标显存容量对应的目标索引标识,所述显存块容器池用于管理一个或多个显存块组,每个显存块组包括一个或多个显存容量相同的已释放显存块,每个显存块组对应一个索引标识,所述索引标识用于表征每个显存块组对应的显存容量;确定与所述目标索引标识对应的目标显存块组是否存在空闲显存块;如存在空闲显存块,从所述空闲显存块中选出与所述显存申请对应的目标显存块,所述目标显存块为所述空闲显存块中的任意一个。

在本示例中,预先建立显存块容器池,统一管理已释放显存块,当接收到显存申请时,首先查询该显存块容器池中是否存在对应的目标显存块,如是,则不再进行显存块的划分,而是利用已释放的显存块来缓存与缓存该显存申请对应的待缓存文件,提高已释放显存块再次被使用的概率;而且,该显存块容器池为每个显存块组建立相应的索引标识,提高查目标显存块的效率。

可选的,如不存在空闲显存块,调用图像处理器GPU的运行时库的应用程序接口API从显存中划分与所述目标显存容量对应的目标显存块。

在本示例中,根据该目标显存容量对显存进行划分,由于目标显存容量是由初始显存容量计算得到,且两者之间的大小差距较小,所以,划分出的目标显存块在缓存该显存申请对应的待缓存文件时块内碎片较小,提高了对目标显存块的利用率,避免浪费显存块。

在一些可能的实施方式,所述方法还包括:在释放所述目标显存块后,将所述目标显存块存放于所述显存块容器池中与所述目标索引标识对应的存放位置。

具体来讲,如该目标显存块为显存块容器中的已释放显存块,则通过调用GPU的运行时库API接口从该容器池中释放该显存块,其释放过程与现有的释放显存的过程一致,不再详细叙述;如该目标显存块为通过GPU划分出的新显存块,则先对该目标显存块进行释放,获取从该目标显存块释放出的文件的内存大小,根据该内存大小计算该目标显存块对应的显存容量,根据该显存容量查询该目标显存块在该显存块容器池中对应的索引标识,根据该索引标识查询该目标显存块对应的存放位置,将该目标显存块存放于该存放位置处。

需要说明的是,在第一次初始化后,显存块容器池中不存在已释放显存块,所以,在接收到显存申请时,可直接通过GPU的运行时库的API从显存中划分出目标显存块,无需在显存块容器池中查询是否存在对应的目标显存块;另外,随着时间的推移,每个显存块容器池中将会存放大量的已释放显存块,而且,如用户更改第一阈值和第二阈值,则需要重新创建新的显存块容器池,会创建出大量的显存块容器池,极其不利于显存块容器池的管理。

下面提供一种显存块容器池的管理方法,该方法包括但不限于以下步骤:

A1:显存管理装置获取第一次输入的第一阈值和第二阈值。

A2:显存管理装置根据第一次输入的第一阈值和第二阈值创建第一显存容器管理池。

可选的,在创建第一显存块容器池后,在每个显存块组对应的索引标识上添加每个显存块组的工作状态的标识信息,其中,每个显存块组的工作状态包括工作态working和空闲态idle,如图1C所示,size_0_working表示第0个显存块组的工作状态为working。

A3:显存管理装置获取第二次输入的第一阈值和第二阈值对第一显存容器管理池进行调整,得到第二显存容器池。

可选的,基于第二次输入的第一阈值和第二阈值对第一显存容器池进行调整,包括对第一容器池进行扩充或者缩减,具体来说,当第二次输入的第一阈值小于第一次输入的第一阈值时,则确定第二次所需的第一显存块组的数量少于第一次,则可以对第一次的n个第一显存块组进缩减,即将n个第一显存块组需要缩减的第一显存块组的工作状态设置为idle,如图1C所示,当第二次输入的第一阈值K=2r,r=2时,则可将第3~n个第一显存块组的工作状态设置为idle,当第二次输入的第一阈值大于第一次输入的第一阈值时,则确定第二次所需的第一显存块组的数量多于第一次,则可以对第一次的n个第一显存块组进扩充,如图1D所示,当第二次输入的第一阈值K=2n+1,则第二次所需的第一显存块组的数量为n+1,如图1所示,在size_n_working之后扩充一个第一显存块组size_n+1,并将其工作状态标注为working,即得到size_n+1_working。

第二显存块组的管理方式与第一显存块组的管理方式一致,不再详细叙述。

A4:显存管理装置获取每个容器管理池中每个显存组对应的显存块数量,如数量大于第三阈值,则删除大于第三阈值的部分显存块。

其中,第三阈值可以为5、10或者其他值。

在本示例中,对建立的显存块容器池进行管理,有效减少显存块容器池的数量,提高查询目标显存块的效率。

参阅图2,图2为本申请实施例提供的另一种显存管理方法,该方法应用于显存管理装置,该方法包括但不限于以下步骤:

201:显存管理装置接收输入的第一阈值和第二阈值。

202:显存管理装置根据所述第一阈值和所述第二阈值创建显存块容器池。

203:显存管理装置接收显存申请,获取所述显存申请所需的初始显存容量。

204:显存管理装置根据所述初始显存容量确定所需的目标显存容量。

205:显存管理装置从所述显存块容器池中获取与所述目标显存容量对应的目标索引标识。

206:显存管理装置确定与所述目标索引标识对应的目标显存块组是否存在空闲显存块;

如是,执行步骤207;

如否,执行步骤208。

207:显存管理装置从所述空闲显存块中选出与所述显存申请对应的目标显存块,将所述显存申请对应的待缓存文件缓存至所述目标显存块。

208:显存管理装置调用图像处理器GPU的运行时库的应用程序接口API从显存中划分与所述目标显存容量对应的目标显存块,将所述显存申请对应的待缓存文件缓存至所述目标显存块。

可以看出,在本申请实施例中,预先建立显存块容器池来管理已释放显存块,从而实现在接收到显存申请时,先从显存块容器池中查询是否存在匹配的已释放显存块,如存在,则采用该已释放显存块缓存该显存申请对应的待缓存文件,从而提高对已释放显存块的再利用概率;如不存在,根据计算规则确定该显存申请所需的目标显存容量,则从显存中动态划分与该目标显存容量对应的目标显存块由于目标显存容量由显存申请计算得到,提高目标显存块与显存申请的适配程度,减少目标显存块的块内碎片,提高对显存块的利用率。

需要说明的是,图2所示的方法的各个步骤的具体实现过程可参见上述图1A所述方法的具体实现过程,在此不再叙述。

参阅图3,图3为本申请实施例提供的另一种显存管理方法,该方法应用于显存管理装置,该方法包括但不限于以下步骤:

301:显存管理装置接收输入的第一阈值和第二阈值。

302:显存管理装置根据所述第一阈值和所述第二阈值创建显存块容器池。

303:显存管理装置接收显存申请,获取所述显存申请所需的初始显存容量。

304:显存管理装置根据所述初始显存容量确定所需的目标显存容量。

305:显存管理装置从所述显存块容器池中获取与所述目标显存容量对应的目标索引标识。

306:显存管理装置确定与所述目标索引标识对应的目标显存块组是否存在空闲显存块;

如是,执行步骤307;

如否,执行步骤309。

307:显存管理装置从所述空闲显存块中选出与所述显存申请对应的目标显存块,将所述显存申请对应的待缓存文件缓存至所述目标显存块。

308:显存装置调用图像处理器GPU的运行时库的应用程序接口API释放所述目标显存块,将所述目标显存块存放于所述显存块容器池中与所述目标索引标识对应的存放位置。

309:显存管理装置调用图像处理器GPU的运行时库的应用程序接口API从显存中划分与所述目标显存容量对应的目标显存块,将所述显存申请对应的待缓存文件缓存至所述目标显存块。

310:显存装置调用图像处理器GPU的运行时库的应用程序接口API释放所述目标显存块,并计算所述目标显存块对应的目标显存容量,将所述目标显存块存放于所述显存块容器池中与所述目标显存容量对应的存放位置。

可以看出,在本示例中,预先建立显存块容器池来管理已释放显存块,从而实现在接收到显存申请时,先从显存块容器池中查询是否存在匹配的已释放显存块,如存在,则采用该已释放显存块缓存该显存申请对应的待缓存文件,从而提高对已释放显存块的再利用概率;如不存在,根据计算规则确定该显存申请所需的目标显存容量,则从显存中动态划分与该目标显存容量对应的目标显存块由于目标显存容量由显存申请计算得到,提高目标显存块与显存申请的适配程度,减少目标显存块的块内碎片,提高对显存块的利用率;而且,无论是从显存块容器池获取的目标显存块,还是新划分出的目标显存块,在释放后,统一放到显存块容器池中进行汇总管理,从而提高对已释放显存块的利用率。

需要说明的是,图3所示的方法的各个步骤的具体实现过程可参见上述图1A所述方法的具体实现过程,在此不再叙述。

与上述图1A、图2、图3所示的实施例一致的,请参阅图4,图4为本申请实施例提供的一种显存管理装置400的结构示意图,如图4所示,该显存管理装置400包括处理器、存储器、通信接口以及一个或多个程序,且上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行以下步骤的指令:

接收显存申请,获取所述显存申请所需的初始显存容量;

根据所述初始显存容量确定所需的目标显存容量;

根据所述目标显存容量得到与所述显存申请对应的目标显存块;

将所述显存申请对应的待缓存文件缓存至所述目标显存块。

在一些可能的实施方式中,在根据所述初始显存容量确定所需的目标显存容量方面,上述程序具体用于执行以下步骤的指令:

当所述初始显存容量小于等于第一阈值时,采用第一预设计算规则确定所述初始显存容量对应的目标显存容量;

当所述初始显存容量大于所述第一阈值,但小于等于第二阈值时,采用第二预设计算规则确定所述初始显存容量对应的目标显存容量。

在一些可能的实施方式中,在根据所述目标显存容量得到与所述显存申请对应的目标显存块方面,上述程序具体用于执行以下步骤的指令:

从预先建立的显存块容器池中获取与所述目标显存容量对应的目标索引标识,所述显存块容器池用于管理一个或多个显存块组,每个显存块组包括一个或多个显存容量相同的已释放显存块,每个显存块组对应一个索引标识,所述索引标识用于表征每个显存块组对应的显存容量;

确定与所述目标索引标识对应的目标显存块组中是否存在空闲显存块;

如存在空闲显存块,从所述空闲显存块中选出与所述显存申请对应的目标显存块,所述目标显存块为所述空闲显存块中的任意一个。

在一些可能的实施方式中,上述程序还用于执行以下步骤的指令:

如不存在空闲显存块,调用图像处理器的运行时库的应用程序接口从显存中划分与所述目标显存容量对应的目标显存块。

在一些可能的实施方式中,上述程序还用于执行以下步骤的指令:

在释放所述目标显存块后,将所述目标显存块存放于所述显存块容器池中与所述目标索引标识对应的存放位置。

在一些可能的实施方式中,在接收显存申请之前,上述程序还用于执行以下步骤的指令:

根据所述第一计算规则以及所述第一阈值确定n个第一显存块组以及确定所述n个第一显存块组每个第一显存块组对应的显存容量;

根据所述第二计算规则以及所述第二阈值确定p个第二显存块组以及确定所述p个第二显存块组中每个第二显存块组对应的显存容量;

根据所述n个第一显存块组和所述p个第二显存块组初始化所述显存块容器池所管理显存块组的数量,根据每个第一显存块组对应的显存容量初始化每个第一显存块组对应的索引标识,根据每个第二显存块组对应的显存容量初始化每个第二显存块组对应的索引标识。

参阅图5,图5为本申请实施例提供的一种显存管理装置的功能单元组成框图。显存管理装置500包括:获取单元510、显存容量确定单元520、显存块确定单元530和缓存单元540,其中:

获取单元510,用于接收显存申请,获取所述显存申请所需的初始显存容量;

显存容量确定单元520,用于根据所述初始显存容量确定所需的目标显存容量;

显存块确定单元530,用于根据所述目标显存容量得到与所述显存申请对应的目标显存块;

缓存单元540,用于将所述显存申请对应的待缓存文件缓存至所述目标显存块。

在一些可能的实施方式中,在根据所述初始显存容量确定所需的目标显存容量方面,显存容量确定单元520,具体用于:

当所述初始显存容量小于等于第一阈值时,采用第一预设计算规则确定所述初始显存容量对应的目标显存容量;

当所述初始显存容量大于所述第一阈值,但小于等于第二阈值时,采用第二预设计算规则确定所述初始显存容量对应的目标显存容量。

在一些可能的实施方式中,在根据所述目标显存容量得到与所述显存申请对应的目标显存块方面,显存块确定单元530,具体用于:

从预先建立的显存块容器池中获取与所述目标显存容量对应的目标索引标识,所述显存块容器池用于管理一个或多个显存块组,每个显存块组包括一个或多个显存容量相同的已释放显存块,每个显存块组对应一个索引标识,所述索引标识用于表征每个显存块组对应的显存容量;

确定与所述目标索引标识对应的目标显存块组中是否存在空闲显存块;

如存在空闲显存块,从所述空闲显存块中选出与所述显存申请对应的目标显存块,所述目标显存块为所述空闲显存块中的任意一个。

在一些可能的实施方式中,显存块确定单元530,还用于:

如不存在空闲显存块,调用图像处理器的运行时库的应用程序接口从显存中划分与所述目标显存容量对应的目标显存块。

在一些可能的实施方式中,显存块管理装置500还包括释放单元550;

释放单元550,用于在释放所述目标显存块后,将所述目标显存块存放于所述显存块容器池中与所述目标索引标识对应的存放位置。

在一些可能的实施方式中,显存块管理装置500还包括初始化单元560,在接收显存申请之前,初始化单元560,用于:

根据所述第一计算规则以及所述第一阈值确定n个第一显存块组以及确定所述n个第一显存块组每个第一显存块组对应的显存容量;

根据所述第二计算规则以及所述第二阈值确定p个第二显存块组以及确定所述p个第二显存块组中每个第二显存块组对应的显存容量;

根据所述n个第一显存块组和所述p个第二显存块组初始化所述显存块容器池所管理显存块组的数量,根据每个第一显存块组对应的显存容量初始化每个第一显存块组对应的索引标识,根据每个第二显存块组对应的显存容量初始化每个第二显存块组对应的索引标识。

本申请实施例还提供一种计算机存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如上述方法实施例中记载的任何一种显存管理方法的部分或全部步骤。

本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种显存管理方法的部分或全部步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

本文发布于:2023-04-13 16:58:46,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86120.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图