一种GPU共享内存的管理方法、装置、设备和存储介质制造方法及图纸

技术编号:37971710 阅读:9 留言:0更新日期:2023-06-30 09:47
本发明专利技术公开一种GPU共享内存的管理方法、装置、设备和存储介质,属于通信技术领域。该方法包括:接收上层应用输入的申请内存块大小;所述上层应用根据所述申请内存块大小,确定预存的内存块大小映射表中是否搜索到与所述申请内存块大小相对应的内存块管理链表;当确定预存的内存块大小映射表中搜索到与所述申请内存块大小相对应的内存块管理链表时,所述上层应用从所述内存块管理链表中获取内存块,并分配所述内存块。分配所述内存块。分配所述内存块。

【技术实现步骤摘要】
一种GPU共享内存的管理方法、装置、设备和存储介质


[0001]本专利技术涉及通信
,尤其涉及一种GPU共享内存的管理方法、装置、设备和存储介质。

技术介绍

[0002]GPU(英语:graphics processing unit,图形处理器)是一种专门在个人电脑、工作站、游戏机、平板电脑、智能手机等计算机系统上做图像和图形相关运算工作的图像计算单元。
[0003]在计算机系统的图像处理工作中,会使用到GPU进行计算加速。为了传递计算加速工作需要的数据(主要是要处理的图像数据),就需要申请共享内存(GPU和CPU都可以访问的),用于传递图像数据,在基于Linux内核的计算机操作系统(包括Android系统)中,GPU共享内存的申请和释放通常是由GPU驱动程序提供,GPU驱动程序则由各GPU厂商提供。
[0004]在手机,平板,计算服务器等多种计算机系统中,很多应用都需要使用大量的图像处理算法进行图像处理,这些图像处理算法通常作为一个功能模块来使用,如夜景模式,长曝光模式,美颜模式,AI的图片预处理,这些图像处理通常都会大量使用GPU进行加速,要使用GPU进行计算处理,需要申请GPU和CPU都可以使用的共享内存来保存和传递图像数据,使得GPU里的代码可以处理,并返回处理后的结果。
[0005]在OpenCL规范(GPU运算的标准规范)中,对于GPU共享内存管理提供并没有明确规定,只是规定了相关的调用接口。在产业界的实践中,GPU共享内存的管理通常都由GPU驱动来实现和提供(Android系统,服务器Linux系统基本都是如此),各芯片厂商都提供针对该厂商GPU芯片的OpenCL驱动,保持接口一致,但内部的功能实现则各不一样,而且,即便是同一厂商,在不同的芯片上,提供的GPU驱动在共享内存的管理上,也不尽相同。
[0006]总的来说,这些OpenCL驱动主要有如下常见问题:
[0007]1.有的OpenCL驱动提供的共享内存接口,申请速度较慢;
[0008]2.有的OpenCL驱动提供的共享内存接口,释放速度较慢;
[0009]3.有的OpenCL驱动提供的共享内存接口,申请和释放速度都较慢;
[0010]4.容易碎片化,开始还可以分到较大块的内存,程序运行时间长了,就分配不到大块的内存(在系统还有很多空余内存的情况下),导致内存分配失败,程序功能不正常。
[0011]此外,在GPU共享内存的使用中,对GPU共享内存进行频繁的申请和释放,通常会有如下问题:
[0012]1.内存碎片化,无法分配出大块的内存;
[0013]2.内存释放速度特别慢,影响处理速度。

技术实现思路

[0014]本专利技术实施例的主要目的在于提出一种GPU共享内存的管理方法、装置、设备和存储介质,旨在通过对上层应用申请和释放的GPU共享内存进行缓冲管理,来解决碎片化和释
放速度慢的问题。
[0015]为实现上述目的,本专利技术实施例提供了一种GPU共享内存的管理方法,所述方法包括以下步骤:
[0016]接收上层应用输入的申请内存块大小;
[0017]所述上层应用根据所述申请内存块大小,确定预存的内存块大小映射表中是否搜索到与所述申请内存块大小相对应的内存块管理链表;
[0018]当确定预存的内存块大小映射表中搜索到与所述申请内存块大小相对应的内存块管理链表时,所述上层应用从所述内存块管理链表中获取内存块,并分配所述内存块。
[0019]为实现上述目的,本专利技术实施例提供了一种GPU共享内存的管理装置,所述装置包括:
[0020]接收模块,用于接收上层应用输入的申请内存块大小;
[0021]确定模块,用于根据所述申请内存块大小,确定预存的内存块大小映射表中是否搜索到与所述申请内存块大小相对应的内存块管理链表;
[0022]分配模块,用于当确定预存的内存块大小映射表中搜索到与所述申请内存块大小相对应的内存块管理链表时,从所述内存块管理链表中获取内存块,并分配所述内存块。
[0023]为实现上述目的,本专利技术实施例还提出了一种GPU共享内存的管理设备,所述设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现前述方法的步骤。
[0024]为实现上述目的,本专利技术提供了一种存储介质,用于计算机可读存储,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述方法的步骤。
[0025]本专利技术提出的一种GPU共享内存的管理的方法、装置、设备和存储介质,其通过构建一个共享内存池,上层应用的GPU共享内存分配通过该内存池进行,解决释放速度慢和内存碎片化的问题。相比传统的内存池技术,具有初始化速度快,分配尺寸自由,对内存浪费小,适合模块化使用等特点;对于图像处理算法的速度,使用便利性,稳定性都有很好的帮助。
附图说明
[0026]图1是本专利技术实施例提供的一种GPU共享内存的管理方法的流程图;
[0027]图2是本专利技术实施例提供的一种GPU共享内存的管理装置的示意图;
[0028]图3是本专利技术实施例提供的GPU共享内存库的应用结构图。
具体实施方式
[0029]应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0030]在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本专利技术的说明,其本身没有特有的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
[0031]本专利技术主要管理GPU共享内存,将通过GPU驱动分配的GPU共享内存进行管理,提高
分配速度,避免内存分配碎片,为各种算法应用提供更好的性能。本专利技术主要用于图像处理的算法加速,本专利技术主要作为一个支撑库使用,可以方便的与各种图像算法一起编译和链接,通过固定的函数接口就可以进行调用。
[0032]比如相机里面的夜景处理,长曝光处理,视频景深,视频抠像等等,所有使用GPU进行计算加速的图像处理算法都可以适用。
[0033]实施例一
[0034]图1是本专利技术实施例提供的一种GPU共享内存的管理方法的流程图,如图1所示,该方法包括以下步骤:
[0035]步骤S101:接收上层应用输入的申请内存块大小;
[0036]步骤S102:所述上层应用根据所述申请内存块大小,确定预存的内存块大小映射表中是否搜索到与所述申请内存块大小相对应的内存块管理链表;
[0037]步骤S103:当确定预存的内存块大小映射表中搜索到与所述申请内存块大小相对应的内存块管理链表时,所述上层应用从所述内存块管理链表中获取内存块,并分配所述内存块。
[0038]本专利技术实施例还包括:当确定预存的内存块大小映射表中未搜索到与所述申请内存块大小相对应的内存块管理链表时,则所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种GPU共享内存的管理方法,其特征在于,所述方法包括:接收上层应用输入的申请内存块大小;所述上层应用根据所述申请内存块大小,确定预存的内存块大小映射表中是否搜索到与所述申请内存块大小相对应的内存块管理链表;当确定预存的内存块大小映射表中搜索到与所述申请内存块大小相对应的内存块管理链表时,所述上层应用从所述内存块管理链表中获取内存块,并分配所述内存块。2.根据权利要求1所述的GPU共享内存的管理方法,其特征在于,还包括:当确定预存的内存块大小映射表中未搜索到与所述申请内存块大小相对应的内存块管理链表时,则所述上层应用从操作系统的OpenCL驱动程序中分配与所述申请内存块大小相应的内存块。3.根据权利要求1所述的GPU共享内存的管理方法,其特征在于,所述上层应用从所述内存块管理链表中获取内存块,并分配所述内存块包括:所述上层应用检查所述内存块管理链表是否为空;当所述上层应用检查所述内存块管理链表不为空时,从所述内存块管理链表中获取并分配第一个内存块,并将所述第一个内存块从所述内存块管理链表中删除;当所述上层应用检查所述内存块管理链表为空时,从操作系统的OpenCL驱动程序中分配与所述申请内存块大小相应的内存块。4.根据权利要求1所述的GPU共享内存的管理方法,其特征在于,还包括:在上层应用调用GPU共享内存释放接口后,接收上层应用输入的释放内存块大小;所述上层应用根据所述释放内存块大小,确定预存的内存块大小映射表中是否搜索到与所述释放内存块大小相应的内存块管理链表;当确定预存的内存块大小映射表中未搜索到与所述释放内存块大小相应的内存块管理链表时,所述上层应用创建新的内存块管理链表,并将所述新的内存块管理链表和所述释放内存块大小作为新的映射表项添加到所述内存块大小映射表中,以便从所述内存块大小映射表中获取与所述释放内存块大小相应的内存块管理链表;当确定预存的内存块大小映射表中搜索到与所述释放内存块大小相应的内存块管理链表时,所述上层应用获取与所述释放内存块大小相应的内存块管理链表。5.根据权利要求4所述的GPU共享内存的管理方法,其特征在于,所述上层应用获取与所述释放内存块大小相应的内存块管理链表之后,还包括:...

【专利技术属性】
技术研发人员:蒋鲲鹏
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:

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

1