基于流式有序显存分配的显存复用方法、设备及存储介质与流程

摘要: 本发明涉及芯片设计,特别是涉及基于流式有序显存分配的显存复用方法、设备及存储介质。背景技术:1、流式有序显存分配(streamorderedmemoryallo...
基于流式有序显存分配的显存复用方法、设备及存储介质与流程

本发明涉及芯片设计,特别是涉及基于流式有序显存分配的显存复用方法、设备及存储介质。

背景技术:

1、流式有序显存分配(stream ordered memory allocator,soma)是一种面向流式数据处理与计算任务的显存分配策略,它依据数据的动态流动特性,在程序运行期间实时、按需地分配和释放显存空间,以适配流式处理模型,减少显存碎片。其允许应用程序将显存分配和释放操作与处于相同cuda流中的其他任务按照它们发出的顺序执行。

2、基于soma的显存分配方法包括同步和异步两种模式。对于异步模式,用户需要指定申请或者释放的显存大小以及该显存所属的流(stream),用户在流上发送需要执行的操作,如内核驱动模块执行(kernel launch)、显存复制、显存申请、显存释放等,同一个流上的操作会按照cpu下发的顺序在gpu上执行。其中,内核驱动模块的执行用于实现虚拟地址到物理地址的映射。通常在流上发送的某个操作是异步的,例如,当调用显存申请接口时不代表会立即申请显存,当调用显存释放接口时也不代表立即释放显存,调用了这两个接口仅表示已经下发了相关的任务,host侧不必等待流上操作执行完成,当gpu侧执行完相应的任务之后才表示完成了相应的申请和释放。

3、基于soma的显存分配方法,当在某个流上依次发生了以下异步操作:调用显存申请接口分配虚拟地址va1,将va1映射到物理地址上,调用显存申请接口分配虚拟地址va2,将虚拟地址映射到物理地址上,标记释放va1的显存,标记释放va2的显存,调用显存申请接口分配虚拟地址va3,将va3映射到物理地址上,标记释放va3的显存。其中va1和va2的释放均早于va3,va3的虚拟地址空间大于va1和va2的虚拟地址空间之和,理论上,va3可以复用va1和va2的显存空间。但前提是ptr1和ptr2的虚拟地址必须是连续的,然而现有的显存分配方式无法保证虚拟地址va1和va2连续。因为每个虚拟显存都需要独立申请,受当前进程其他线程同一时刻的显存申请及gpu驱动底层分配算法的影响,无法保证虚拟地址连续性和关联性,因此导致va3无法复用va1和va2的虚拟地址空间及其与物理地址之间的映射关系,其复用率低。因此,亟需一种能够复用多个虚拟地址以提高复用率的显存复用方法。

技术实现思路

1、针对上述技术问题,本发明采用的技术方案为:一种基于soma的显存复用方法,所述方法包括如下步骤:

2、s100,为当前进程的每个任务分别预先分配一块连续的虚拟地址空间,得到每个任务的虚拟地址空间。

3、s300,当第i个任务发起第j次显存分配请求mreqi,j时,调用虚拟地址申请接口为所述mreqi,j分配虚拟地址段vai,j,所述虚拟地址申请接口在调用时执行以下步骤包括:

4、s310,获取mreqi,j请求分配的显存大小sizei,j和第i个任务预先分配的虚拟地址空间vai。

5、s320,当所述vai中存在大于等于所述sizei,j的可分配虚拟地址段时,为所述mreqi,j分配所述可分配虚拟地址段中的虚拟地址得到目标虚拟地址段vai,j;其中,所述可分配虚拟地址段包括可复用虚拟地址,所述可复用虚拟地址为已与物理地址建立映射关系且被标记为释放的地址。

6、s500,根据所述vai,j查询虚拟地址与物理地址的映射表,获取所述vai,j中已与物理地址建立映射关系的可复用虚拟地址段。

7、s700,所述第一类虚拟地址段直接复用已建立的所述映射关系,得到所述vai,j的物理地址段pai,j,完成显存复用。

8、此外,本发明还提供了一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现上述方法。

9、此外,本发明还提供了一种电子设备,包括处理器和上述非瞬时性计算机可读存储介质。

10、本发明至少具有以下有益效果:

11、本发明提供的基于流式有序显存分配的显存复用方法、设备及存储介质,其通过虚拟地址申请接口申请当前任务预先分配的虚拟地址空间中的虚拟地址,该虚拟地址申请接口仅申请虚拟地址,不会自动分配物理地址;当申请的虚拟地址为已与物理地址建立映射关系且被标记为释放的可复用虚拟地址时,则直接复用已建立的所述映射关系,完成复用。由于当前任务每次申请虚拟地址都是从预先分配的虚拟地址空间中申请,大幅降低虚拟地址空间不连续的概率。且通过复用已建立的所述映射关系不仅能够提高显存申请的效率,而且由于不需要重新建立映射关系,大幅度节省了系统的资源开销。

1.基于流式有序显存分配的显存复用方法,其特征在于,所述方法包括如下步骤:

2.根据权利要求1所述的方法,其特征在于,s320中,所述vai,j的起始地址为查找到的第一个可分配虚拟地址段的起始地址。

3.根据权利要求1所述的方法,其特征在于,s320中,所述vai,j的起始地址的获取步骤包括:查找所有大于等于所述sizei,j的可分配虚拟地址段,获取所述每个所述可分配虚拟地址段的大小与所述sizei,j的差值,将差值最小的所述可分配虚拟地址段的起始地址作为所述vai,j的起始地址。

4.根据权利要求1所述的方法,其特征在于,s500中,所述vai,j中还包括未与物理地址建立映射关系的空闲虚拟地址段;所述方法还包括:

5.根据权利要求4所述的方法,其特征在于,s600中还包括:s610,当无法申请指定大小的显存时,将物理地址的申请单位调整为最小申请单位。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:s1000,当第i个任务发起第r次显存分配请求mreqi,r复用所述vai,j时,若所述mreqi,r请求分配的显存大小sizei,k小于所述sizei,j,则释放所述vai,j的多余显存。

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

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

9.一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,其特征在于,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-8中任意一项的所述方法。

10.一种电子设备,其特征在于,包括处理器和权利要求9中所述的非瞬时性计算机可读存储介质。