CN117194055B - Gpu显存申请及释放的方法、装置及存储介质 - Google Patents
Gpu显存申请及释放的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN117194055B CN117194055B CN202311462306.4A CN202311462306A CN117194055B CN 117194055 B CN117194055 B CN 117194055B CN 202311462306 A CN202311462306 A CN 202311462306A CN 117194055 B CN117194055 B CN 117194055B
- Authority
- CN
- China
- Prior art keywords
- video memory
- gpu
- block
- idle
- size
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 607
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 128
- 238000009877 rendering Methods 0.000 claims abstract description 97
- 238000004891 communication Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 7
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Landscapes
- Memory System (AREA)
Abstract
本公开实施例公开了一种GPU显存申请及释放的方法、装置及存储介质,该方法可以包括:CPU向GPU发送初始化指令以获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态;CPU向GPU发送渲染指令,根据所述渲染指令中渲染数据的大小确定需要请求显存大小,GPU执行渲染前,根据所述请求显存大小,通过位图算法和伙伴算法查找匹配的空闲显存块;若存在,则CPU向GPU发送显存申请请求,GPU执行分配并在CPU端重置其相应的位图算法的状态标识位;若不存在,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块。
Description
技术领域
本公开实施例涉及计算机图像处理技术领域,尤其涉及一种图形处理器(GraphicProcessing Unit,GPU)显存申请及释放的方法、装置及存储介质。
背景技术
现有的GPU显存申请方案是采用直接显存申请,即通过系统调用直接申请显存块,然后根据返回值判断所述显存块是否申请成功,没有先对所述显存块是否空闲进行判断,如果所述显存块申请成功,则进行下一步的操作,如果所述显存块全被占用或者剩余显存空间的大小不能满足请求显存大小,则会返回失败,系统流程结束,并且对于每次申请的显存块使用完毕则进行释放。此外,对所述直接显存申请执行系统调用前,必须从用户态先切换到内核态,是因为所述用户态是执行在用户空间中,系统调用的相关数据信息需要存储在内核空间中,因此,需要先进行用户态和内核态的切换,然后再执行系统调用。
前述技术方案存在如下缺陷:在直接显存申请的过程中存在系统调用、用户态与内核态切换及GPU通信等,这一过程频繁发生会带来很大的性能开销,并且对于每次申请的显存块使用完毕则进行释放,频繁的进行显存申请、显存释放会产生许多显存碎片,导致整个显存空间不连续,极大地影响了GPU的渲染帧率。
发明内容
有鉴于此,本公开实施例期望提供一种GPU显存申请及释放的方法、装置及存储介质,能够减少系统调用、GPU的通信操作以及减少系统显存碎片,提高GPU的渲染帧率。
本公开实施例的技术方案是这样实现的:
第一方面,本公开实施例提供一种GPU显存申请的方法,包括:
CPU向GPU发送初始化指令以获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态;
CPU向GPU发送渲染指令,GPU执行渲染前,CPU根据所述位图算法的状态标识位和所述渲染指令中渲染数据的大小,通过伙伴算法查找匹配的空闲显存块,其中,根据所述渲染指令中渲染数据的大小确定需要请求显存大小;
若所述空闲块链表中存在满足所述请求显存大小的空闲显存块,则CPU向GPU发送显存申请请求,GPU根据所述显存申请请求分配所述空闲显存块并在CPU端重置其相应的位图算法的状态标识位,其中,所述显存申请请求中至少包括请求显存大小;
若所述空闲块链表中不存在满足所述请求显存大小的空闲显存块,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块。
第二方面,本公开实施例提供一种GPU显存释放的方法,包括:
GPU使用完已分配的显存块,向CPU发送通知消息,其中,所述通知消息中至少包括待释放的显存块的标识;
CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的状态;
CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的伙伴关系块是否空闲,若是,则通知GPU合并所述伙伴关系块并更新合并后的显存块的位图算法的状态标识位;
CPU根据所述待释放的显存块的状态及其伙伴关系块的状态,向GPU发送显存释放请求,GPU通过伙伴算法释放所述待释放的显存块及其伙伴关系块并挂入到相应的空闲块链表。
第三方面,本公开实施例提供一种GPU显存申请的装置,所述装置包括:获取部分、查找部分、申请部分以及划分部分;其中,
所述获取部分,经配置为CPU向GPU发送初始化指令以获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态;
所述查找部分,经配置为CPU向GPU发送渲染指令,GPU执行渲染前,CPU根据所述位图算法的状态标识位和所述渲染指令中渲染数据的大小,通过伙伴算法查找匹配的空闲显存块,其中,根据所述渲染指令中渲染数据的大小确定需要请求显存大小;
所述申请部分,经配置为若所述空闲块链表中存在满足所述请求显存大小的空闲显存块,则CPU向GPU发送显存申请请求,GPU根据所述显存申请请求分配所述空闲显存块并在CPU端重置其相应的位图算法的状态标识位,其中,所述显存申请请求中至少包括请求显存大小;
所述划分部分,经配置为若所述空闲块链表中不存在满足所述请求显存大小的空闲显存块,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块。
第四方面,本公开实施例提供一种GPU显存释放的装置,所述装置包括:通知部分、第一查询部分、第二查询部分以及释放部分;其中,
所述通知部分,经配置为GPU使用完已分配的显存块,向CPU发送通知消息,其中,所述通知消息中至少包括待释放的显存块的标识;
所述第一查询部分,经配置为CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的状态;
所述第二查询部分,经配置为CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的伙伴关系块是否空闲,若是,则通知GPU合并所述伙伴关系块并更新合并后的显存块的位图算法的状态标识位;
所述释放部分,经配置为CPU根据所述待释放的显存块的状态及其伙伴关系块的状态,向GPU发送显存释放请求,GPU通过伙伴算法释放所述待释放的显存块及其伙伴关系块并挂入到相应的空闲块链表。
第五方面,本公开实施例提供了一种计算设备,所述计算设备包括:CPU和GPU以及实现CPU和GPU之间连接通信的系统总线;其中,所述CPU和GPU,经配置以实现第一方面所述GPU显存申请的方法或者实现第二方面所述GPU显存释放的方法。
第六方面,本公开实施例提供一种计算机存储介质,所述计算机存储介质存储有GPU显存申请的程序和/或GPU显存释放的程序;其中,
所述GPU显存申请的程序被至少一个处理器执行时实现第一方面所述GPU显存申请的方法;
所述GPU显存释放的程序被至少一个处理器执行时实现第二方面所述GPU显存释放的方法。
本公开实施例提供了一种GPU显存申请及释放的方法、装置及存储介质,通过CPU向GPU发送初始化指令以使得GPU启动初始化显存并获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态,CPU向GPU发送渲染指令,并在GPU执行渲染前,CPU根据所述渲染指令中渲染数据的大小确定需要请求显存大小,然后根据所述请求显存大小,先查找所述位图算法的状态标识位,再通过伙伴算法查找匹配所述请求显存大小的空闲显存块,若所述空闲块链表中存在满足所述请求显存大小的空闲显存块可被申请,则CPU向GPU发送显存申请请求,GPU根据所述显存申请请求执行分配并重置其相应的位图算法的状态标识位;若不满足,则查找更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块。通过该技术方案在显存申请请求时,需要先判断所述空闲块链表中是否存在满足所述请求显存大小的空闲显存块,减少了系统调用和GPU的通信操作,提高了GPU的渲染帧率。结合所述位图算法和伙伴算法的优势,通过所述位图算法提供了一个高效和紧凑的方式来跟踪显存块的使用情况,通过所述伙伴算法处理显存块的分配以及必要时的分块,所述两种算法结合使用,提供了一种高效、灵活且低碎片化的显存管理策略。
附图说明
图1为本公开实施例提供的计算设备组成示意图;
图2为一种GPU显存申请的流程图;
图3为本公开实施例提供的一种GPU显存申请的方法流程图;
图4为本公开实施例提供的一种GPU显存申请的详细流程图;
图5为本公开实施例提供的一种GPU显存释放的方法流程图;
图6为本公开实施例提供的一种GPU显存申请的装置示意图;
图7为本公开实施例提供的一种GPU显存释放的装置示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
参见图1,其示出了能够实现本公开实施例技术方案的计算设备100的组成示意图,需注意,图1所示出的计算设备是可能的设备的仅一个示例,并且可根据需要在各种设备中的任一设备中实现本公开的实施方案。该计算设备100的组成具体可以为任意类型的计算装置,包括且不限于台式计算机、服务器、工作站、膝上计算机、基于计算机的仿真器、无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器等。如图1所示,计算设备100的组成可以包括中央处理器(Central Processing Unit,CPU),比如图1中示出的CPU10、GPU 20、系统内存30,还包括显示控制器40、显示器41以及通信接口50。显示控制器40可为与GPU 20相同的集成电路(IntegratedCircuit,IC)的部分,也可在包含GPU 20的一或多个IC的外部或可形成于在包含GPU20的IC外部的IC中。
具体来说,CPU 10可包括控制计算设备100运算的通用或专用处理器,其经配置以处理供执行的计算机程序的指令。用户可经由通信接口50与耦合到计算设备100的另一输入装置(未图示)例如:轨迹球、键盘、鼠标、麦克风、触摸垫、触摸屏以及其他类型的装置,例如交换机接口,将输入提供给计算设备100组成中的CPU 10,以使得CPU 10执行至少一或多个软件应用程序11的指令。在CPU 10上执行的软件应用程序11可为利用GPU 20的功能性的任何应用程序,可包括图形用户接口(Graphic User Interface,GUI)应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序或使用2D、3D图形渲染应用程序等,本公开实施例以执行图形渲染应用程序为例,所述图形渲染应用程序也可以简称为应用程序或程序。CPU 10在执行软件应用程序11的过程中,通过显存管理模块13对GPU渲染需要的显存空间进行分配和管理。此外,CPU10上执行的图形渲染应用程序可包含一或多个图形渲染指令(也可以理解为待渲染的画面帧中包含一或多个所述图形),所述图形渲染指令可符合图形应用程序编程接口(Application ProgrammingInterface,API),例如,开放式图形库API(OpenGL API)、开放式图形库嵌入系统(OpenGLES)API、Direct3D API、X3DAPI、RenderMan API、WebGL API、开放式计算语言(OpenCLTM)、RenderScript或任何其它异构计算API或任何其它公用或专有标准图形或计算API,本公开下面的描述中将以OpenGL API为例进行说明。
GPU 20可经配置以执行图形运算,从而将一或多个图形图元渲染到显示器41进行展示。可以理解为,CPU 10通过控制GPU驱动程序12,将渲染指令翻译为GPU 20可读的渲染命令,然后GPU 20根据收到的一或多个图形渲染命令,包括但不限于图形命令和图形数据,所述图形数据可包含绘制命令、状态信息、图元信息、纹理信息等,以使得GPU20执行所述图形渲染命令中的一些或者全部,从而将一或多个图形图元进行渲染并在显示器41上展示出来。GPU 20内部结构包括但不限于图形存储器21以及处理器集群22。在本公开实施例中,图形存储器21可为GPU 20的一部分。因此,GPU 20可在不使用总线的情况下从图形存储器21读取数据且将数据写入到图形存储器21。换句话说,GPU 20可使用本地存储装置而不是芯片外存储器在本地处理数据,此类图形存储器21可被称作芯片上存储器。这允许GPU 20通过消除GPU 20经由总线读取和写入数据的需要来以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。所述图形存储器21可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。在一些示例中,GPU 20可不包含单独的存储器,而是经由总线利用外置的显存31。所述处理器集群22,用于执行图形处理管线,以便对图形渲染命令进行解码,并对图形处理管线进行配置以执行图形渲染命令中所指定的操作。在一些情况下,GPU20可内置有高度并行结构,其提供比CPU 10高效的对复杂图形相关运算的处理。举例来说,GPU 20可包含经配置以并行方式对多个顶点或像素进行运算的多个处理元件。在一些情况下,GPU 20的高度并行性质允许GPU 20比使用CPU10更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器41上。在一些情况下,可将GPU 20集成到目标设备的母板中。在其它情况下,GPU 20可存在于图形卡上,所述图形卡安装在目标设备的母板中的端口中,或可以其它方式并入在经配置以与目标设备互操作的外围装置内。GPU 20可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 20还可包含一或多个处理器核心,使得GPU20可被称作多核处理器。
系统内存30,经配置用于存储能够在CPU 10上运行的应用程序指令、GPU 20执行需要的图形数据以及其运行结果数据。例如,GPU 20可将完全形成的图像存储在系统内存30中。在一些示例中,所述系统内存30可以包括显存31,在具体实施过程中,显存31也可与系统内存30分离,其中,所述显存31可存储经渲染图像数据,例如,像素数据以及任何其它数据,因此,显存31还可被称为帧缓冲器。显存31存储GPU 20的目的地像素。每个目的地像素可与唯一屏幕像素位置相关联。在一些示例中,显存31可存储每个目的地像素的色彩分量和目的地α值。举例来说,显存31可存储每个像素的红色、绿色、蓝色、α(RGBA)分量,其中“RGB”分量对应于色彩值,并且“A”分量对应于目的地α值(例如,用于图像合成的不透明度值)。尽管将显存31和系统内存30说明为单独的存储器单元,但在其它示例中,显存31可以是系统内存30的一部分。此外,显存31还可能够存储除像素之外的任何合适的数据。显示控制器40可从显存31检索图像且输出使显示器41的像素照亮以显示所述图像的值。显示器41可为计算设备100的显示器,其显示由GPU 20产生的图形图像内容。显示器41可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
结合图1所示的计算设备100,基于GPU 20执行所述图形渲染命令中的一些或者全部,从而将一或多个图形图元进行渲染以生成当前帧的渲染结果并存储到显存31对应的存储空间内。对于在GPU 20执行渲染的过程中,如果需要显存申请,参见图2,其示出了一种GPU显存申请的流程图,具体来说,目前的实现方案是通过系统调用直接显存申请,然后根据返回值判断显存块申请是否成功,如果所述显存块申请成功,则进行下一步的操作,如果所述显存块全被占用或者剩余显存空间的大小不能满足请求显存大小,则返回失败,系统流程结束。由于在直接显存申请的过程中存在系统调用、用户态与内核态切换及GPU通信等,若频繁进行显存申请则会影响GPU的执行效率,并且对于每次申请的显存空间使用完毕则进行释放,对于频繁的显存申请、释放会产生许多显存碎片,导致整个显存空间不连续,极大地影响了GPU的渲染帧率。基于此,本公开实施例期望提供一种GPU显存申请及释放的技术方案,通过该技术方案可以减少系统调用、GPU通信操作,提升GPU的渲染帧率。参见图3,其示出了本公开实施例提供的一种GPU显存申请的方法,该方法应用于具有CPU和GPU的计算设备,所述方法包括:
S301:CPU向GPU发送初始化指令以获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态;
S302:CPU向GPU发送渲染指令,GPU执行渲染前,CPU根据所述位图算法的状态标识位和所述渲染指令中渲染数据的大小,通过伙伴算法查找匹配的空闲显存块,其中,根据所述渲染指令中渲染数据的大小确定需要请求显存大小;
S303:若所述空闲块链表中存在满足所述请求显存大小的空闲显存块,则CPU向GPU发送显存申请请求,GPU根据所述显存申请请求分配所述空闲显存块并在CPU端重置其相应的位图算法的状态标识位,其中,所述显存申请请求中至少包括请求显存大小;
S304:若所述空闲块链表中不存在满足所述请求显存大小的空闲显存块,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块。
根据上述方案的描述,本公开实施例通过CPU向GPU发送初始化指令以使得GPU启动初始化显存并获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态,CPU向GPU发送渲染指令,并在GPU执行渲染前,CPU根据所述渲染指令中渲染数据的大小确定需要请求显存大小,然后根据所述请求显存大小,先查找所述位图算法的状态标识位,再通过伙伴算法查找匹配所述请求显存大小的空闲显存块,若所述空闲块链表中存在满足所述请求显存大小的空闲显存块可被申请,则CPU向GPU发送显存申请请求,GPU根据所述显存申请请求执行分配并重置其相应的位图算法的状态标识位;若不满足,则查找更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块。通过该技术方案在显存申请请求时,需要先判断所述空闲块链表中是否存在满足所述请求显存大小的空闲显存块,减少了系统调用和GPU的通信操作,提高了GPU的渲染帧率。结合所述位图算法和伙伴算法的优势,通过所述位图算法提供了一个高效和紧凑的方式来跟踪显存块的使用情况,通过所述伙伴算法处理显存块的分配以及必要时的分块,所述两种算法结合使用,提供了一种高效、灵活且低碎片化的显存管理策略。
针对图3所示的技术方案,在一些可能的实现方式中,所述CPU向GPU发送初始化指令以获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态,具体来说,所述空闲块链表是一种在动态的显存分配方案中使用的数据结构,其操作方式是将未分配的显存块或显存区域链接到一个链表中,使用每个未分配显存块的第一个字节作为指向下一个显存块的指针。所述空闲块链表使显存分配和回收操作非常简单,例如,要释放一个显存块,只需将其链接到空闲块链表。要分配一个显存块,只需从所述空闲块链表的末尾删除一个显存块并使用它。如果显存块的大小是可变的,则需要搜索一个足够大的显存区域,这个操作会导致性能消耗较多。此外,所述空闲块链表通常在系统初始化或GPU初始化时生成,其中,所述系统初始化或GPU初始化是通过CPU端的初始化函数实现的。在初始化过程中,所述初始化函数内部会创建一个高优先级的任务,用于查询GPU中各显存块的状态。所述空闲块链表是基于GPU显存的总大小和伙伴算法的工作原理进行划分的,在所述伙伴算法的初始设置时,显存会被视为一个大的连续块,在GPU执行渲染前,根据渲染数据的大小将所述大的连续块分裂为更小的基础显存块,以满足申请需求。
所述位图算法是基于位映射的算法,对于显存中一段连续的二进制位,其中每一位的值(0或1)代表了值为该二进制位索引的元素是否存在,相当于用bit位来存储数据,所述位图算法可以实现跟踪显存块状态、快速查询、低开销的状态更新以及层次化查找,其中,所述跟踪显存块状态是所述位图算法用于标记每个显存块的状态,例如,通过所述位图算法的状态标识位标识各显存块是空闲还是被占用。所述快速查询是通过查看特定的位,可以迅速确定特定大小的显存块是否可用,而不需要遍历整个显存结构。所述低开销的状态更新是分配或释放显存块时,只需修改相应的位即可。所述层次化查找是所述位图算法可以层次化,使得通过查看高层次的位,可以快速确定一个特定大小范围内的显存块是否可用。详细来说,在本公开实施例中,所述位图算法一般包括64bit的状态标识位,分为8个字节,每个字节中的每个bit标识所述空闲块链表中每个显存块的空闲或被占用状态,其中,所述位图算法的状态标识位为0表示显存块空闲,所述位图算法的状态标识位为1表示显存块被占用。
针对图3所示的技术方案,在一些可能的实现方式中,所述CPU向GPU发送渲染指令,GPU执行渲染前,CPU根据所述位图算法的状态标识位和所述渲染指令中渲染数据的大小,通过伙伴算法查找匹配的空闲显存块,其中,根据所述渲染指令中渲染数据的大小确定需要请求显存大小,包括:
根据所述请求显存大小,通过位图算法的状态标识位确定满足所述请求显存大小的所有空闲态的显存块,其中,所述位图算法的状态标识位为0表示显存块空闲,所述位图算法的状态标识位为1表示显存块被占用;
通过伙伴算法从所述所有空闲态的显存块中查找匹配的空闲显存块。
对于上述实现方式,在一些示例中,所述通过伙伴算法从所述所有空闲态的显存块中查找匹配的空闲显存块,包括:基于所述请求显存大小,所述伙伴算法以2的幂次方大小确定需要查找的空闲显存块。
对于上述示例,在GPU执行渲染前,根据CPU向GPU发送的所述渲染指令中渲染数据的大小确定请求显存大小为3M,由于伙伴算法是基于2的幂次划分的基础显存块,因此,在具体的实施过程中,根据所述伙伴算法的工作原理会查找4M大小的空闲显存块。
需要说明的是,所述伙伴算法是一种用于管理动态显存分配和释放的算法,主要用于在系统中对大块的显存进行管理,可以实现显存块的分裂与合并、优化显存利用以及确定伙伴位置,其中,所述显存块的分裂与合并是所述空闲块链表中如果没有满足所述请求显存大小的空闲显存块时,所述伙伴算法可以将一个大的空闲显存块分裂成两个及以上的伙伴关系块,以满足申请需求。相反,当显存释放时,所述伙伴算法查询是否可以与其伙伴关系块合并成一个更大的空闲显存块。所述优化显存利用是合并相邻的空闲显存块。所述确定伙伴位置是根据所述伙伴算法提供的计算方法,可以迅速确定任何给定显存块的伙伴关系块的位置。
针对图3所示的技术方案,在一些可能的实现方式中,所述若所述空闲块链表中不存在满足所述请求显存大小的空闲显存块,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块,包括:
根据所述请求显存大小,获取显存块大小为 个页面大小的空闲显存块;其中,i值满足 /><m< />,m为请求显存大小,i为空闲显存块大小的指数;
若所述个页面大小的空闲显存块不满足所述请求显存大小,则将所述空闲显存块大小的指数标志i递增,以获取所述空闲块链表中更大的空闲显存块;
将获取到的所述更大的空闲显存块划分为一个或多个伙伴关系块并判断所述伙伴关系块是否满足所述请求显存大小,若否,则继续分块,直到获取到满足所述请求显存大小的空闲显存块。
对于上述实现方式,具体来说,GPU显存中包括多个页面组成的显存块,每个显存块包括2的幂次方个页。当要请求一个块大小为m的空闲显存块时,需从所述空闲块链表中分配一个大小为 的空闲显存块,其中,i满足/><m</>。在一些示例中,假如要分配9个页面大小的空闲显存块,则找到/>(16)个页面大小的空闲显存块,判断/>个页面大小的空闲显存块是否满足所述请求显存大小。若是,则进行分配,否则,将空闲块显存大小的指数标志i递增,即i=i+1,查找大小为/>的空闲显存块,然后将其分为大小相同两个互为伙伴关系的显存块,一个用于分配,另一个链入到所述空闲块链表中。该步骤是为了分裂更大的空闲显存块,因为大小最合适的空闲显存块不存在,只能从更大的显存块中分配请求的显存块。如果大小为 />的空闲显存块中也未找到,则继续向更大的空闲显存块 />, />……提出请求。
需要说明的是,根据所述伙伴算法的工作原理,在GPU分配显存的过程中,若不存在满足所述请求显存大小的空闲显存块,需要查找更大的空闲显存块,将查找到的所述空闲显存块划分为至少两个大小相等的显存块,这两个大小相等的显存块即为伙伴关系块。在具体的实施方式中,具有伙伴关系的显存块的个数是动态分配的,可以根据请求显存大小进行划分。所述伙伴关系块满足3个条件:从同一个大的显存块中拆分出来、大小相同以及物理地址连续。对于所述伙伴关系块通常采用一位二进制数来表示它们的伙伴关系。所述伙伴标识位为0表示两个伙伴关系块都空闲或者都在被使用,所述伙伴标识位为1表示其中一块伙伴关系块在被使用,系统根据该伙伴标识位为0或为1来决定是否使用或者分配该显存块。
针对图3所示的技术方案,参见图4,其示出了本公开实施例提供的一种GPU显存申请的详细流程图,具体步骤如下:
S401:CPU向GPU发送显存初始化指令以获取GPU显存空间的大小和空闲块链表;
GPU接收CPU发送的显存初始化指令并执行GPU初始化,获取GPU显存空间的大小和空闲块链表,同时CPU端初始化显存管理模块。
S402:通过显存管理模块对GPU显存进行管理;
首先,如步骤S4021,获取GPU显存空间的大小和空闲块链表;
其次,如步骤S4022,CPU根据所述渲染指令中渲染数据的大小确定需要请求显存大小,根据所述请求显存大小和GPU显存空间的大小,GPU以2的幂次方确定基础显存块;
再次,如步骤S4023,使用所述伙伴算法管理GPU的显存块;
然后,如步骤S4024,通过所述位图算法的状态标识位标识所述空闲块链表中每个显存块的状态,即显存块是空闲或被占用;
具体来说,CPU通过位图算法的64 bit状态标识位标识所述空闲块链表中的各显存块的空闲或被占用状态,其中,所述位图算法的状态标识位为0表示显存块空闲,所述位图算法的状态标识位为1表示显存块被占用。
S403:CPU向GPU发送渲染指令,GPU执行渲染前,若需要显存申请,CPU通过所述位图算法和所述伙伴算法确定所述空闲块链表中是否有空闲的显存块可被申请,若是,跳转到步骤S404,否则,结束显存申请流程;
GPU执行渲染前,若需要显存申请,CPU根据所述渲染指令中渲染数据的大小确定需要请求显存大小,然后根据所述请求显存大小,先根据所述位图算法的状态标识位确定是否有空闲显存块,再通过所述伙伴算法查找匹配所述请求显存大小的空闲显存块,若所述空闲块链表中存在满足所述请求显存大小的空闲显存块可被申请,则CPU向GPU发送显存申请请求,GPU根据所述显存申请请求执行相应显存块的分配并重置其相应的位图算法的状态标识位,即将所述位图算法的状态标识位由0修改为1,状态由空闲变为被占用。可以理解地,判断所述位图算法的状态标识位是否为0,然后通过所述伙伴算法来确定需要查找的所述空闲块链表中哪个空闲显存块,即判断GPU显存中是否有可以容纳请求显存大小的空闲显存块。如果有,则通过所述伙伴算法进行分配并返回已分配显存块的物理地址。
S404:对已分配的显存块进行系统调用;
S405:如果在所述空闲块链表中未找到满足所述请求显存大小的空闲显存块,则进行下一步的操作。
如果没有满足所述请求显存空闲显存块可被申请,则在更大的空闲显存块中查找,并将获取到的更大的空闲显存块划分为伙伴关系块,通过所述伙伴算法的一位二进制伙伴标识位标识所述伙伴关系块,其中,所述伙伴标识位为0表示伙伴关系块都空闲或者都在被使用,所述伙伴标识位为1表示其中一块伙伴关系块在被使用。判断划分的所述伙伴关系块是否满足所述请求显存大小,若否,则继续划分,直到获取到满足所述请求显存大小的空闲显存块。通过上述的划分操作,如果仍未查找到满足所述请求显存大小的空闲显存块,那么直接执行返回,不进行下一步系统调用,结束显存申请流程。
基于图3所示的技术方案相同的发明构思,参见图5,其示出了本公开实施例提供的一种GPU显存释放的方法,该方法应用于具有CPU和GPU的计算设备,所述方法包括:
S501:GPU使用完已分配的显存块,向CPU发送通知消息,其中,所述通知消息中至少包括待释放的显存块的标识;
S502:CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的状态;
S503:CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的伙伴关系块是否空闲,若是,则通知GPU合并所述伙伴关系块并更新合并后的显存块的位图算法的状态标识位;
S504:CPU根据所述待释放的显存块的状态及其伙伴关系块的状态,向GPU发送显存释放请求,GPU通过伙伴算法释放所述待释放的显存块及其伙伴关系块并挂入到相应的空闲块链表。
根据上述方案的描述,图5所示的技术方案描述了对应于图3所示的技术方案的GPU显存释放的过程,由于在GPU显存申请的过程中,GPU 根据确定的基础显存块,将所述GPU显存空间划分为一个或多个基础显存块并生成空闲块链表,通过所述位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态,在GPU执行渲染前,根据CPU发送的渲染指令中渲染数据的大小确定需要请求显存大小,根据所述请求显存大小,通过所述伙伴算法查找并分配满足所述请求显存大小的空闲显存块。对于GPU显存释放的过程是在GPU使用完已分配的显存块时,向CPU发送通知消息,其中,所述通知消息中至少包括待释放的显存块的标识,CPU根据GPU发送的所述通知消息中携带的待释放的显存块的标识,动态查询所述待释放的显存块的状态以及其伙伴关系块是否空闲,若是,则通知GPU合并所述伙伴关系块并更新合并后的显存块的位图算法的状态标识位,根据所述待释放的显存块的状态及其伙伴关系块的状态,向GPU发送显存释放请求,GPU根据所述显存释放请求,通过所述伙伴算法释放相应的显存块及其伙伴关系块并挂入到相应的空闲块链表中,重置其相应位图算法的状态标识位,以用于下一次的GPU显存申请及释放的流程。
针对图5所示的技术方案,在一些可能的实现方式中,所述GPU使用完已分配的显存块,向CPU发送通知消息,包括:将待释放的显存块的标识、是否使用完成的状态以及显存块大小,通过所述通知消息发送给CPU端初始化函数中的高优先级任务。
对于上述实现方式,在系统初始化时,在CPU端的所述初始化函数内部会创建一个高优先级的任务,通过该任务可以查询GPU中各显存块的状态。当GPU使用完已分配的显存块时,向CPU端的该任务发送通知消息,CPU根据所述通知消息来控制GPU释放相应的显存空间。
对于图3以及图5所示的技术方案,对于显存申请的过程,在GPU执行渲染前,根据CPU发送的渲染指令中渲染数据的大小确定需要请求显存大小,根据所述请求显存大小,先通过所述位图算法判断是否有空闲显存块可被申请,再通过所述伙伴算法查找并分配满足所述请求显存大小的空闲显存块,减少了系统调用和GPU通信操作,提高了GPU显存申请的效率。对于GPU显存释放的过程,GPU使用完已分配的显存块,向CPU发送通知消息,CPU根据所述通知消息中的待释放的显存块的标识,查询所述待释放的显存块的状态及其伙伴关系块的状态,CPU向GPU发送显存释放请求以使得GPU对所述使用完已分配的显存块进行释放。在所述显存申请和显存释放的过程中,通过所述伙伴算法的分块和合并操作,避免了产生过多的显存碎片。
基于前述技术方案相同的发明构思,参见图6,其示出了一种GPU显存申请的装置600,所述装置600包括:获取部分 601、查找部分602、申请部分603以及划分部分604;其中,
所述获取部分 601,经配置为CPU向GPU发送初始化指令以获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态;
所述查找部分602,经配置为CPU向GPU发送渲染指令,GPU执行渲染前,CPU根据所述位图算法的状态标识位和所述渲染指令中渲染数据的大小,通过伙伴算法查找匹配的空闲显存块,其中,根据所述渲染指令中渲染数据的大小确定需要请求显存大小;
所述申请部分603,经配置为若所述空闲块链表中存在满足所述请求显存大小的空闲显存块,则CPU向GPU发送显存申请请求,GPU根据所述显存申请请求分配所述空闲显存块并在CPU端重置其相应的位图算法的状态标识位,其中,所述显存申请请求中至少包括请求显存大小;
所述划分部分604,经配置为若所述空闲块链表中不存在满足所述请求显存大小的空闲显存块,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块。
在一些示例中,所述查找部分602,经配置为:
根据所述请求显存大小,通过位图算法的状态标识位确定满足所述请求显存大小的所有空闲态的显存块,其中,所述位图算法的状态标识位为0表示显存块空闲,所述位图算法的状态标识位为1表示显存块被占用;
通过伙伴算法从所述所有空闲态的显存块中查找匹配的空闲显存块。
在一些示例中,所述查找部分602,经配置为基于所述请求显存大小,所述伙伴算法以2的幂次方大小确定需要查找的空闲显存块。
在一些示例中,所述划分部分604,经配置为:
根据所述请求显存大小,获取显存块大小为 个页面大小的空闲显存块;其中,i值满足/> <m</>,m为请求显存大小,i为空闲显存块大小的指数;
若所述 个页面大小的空闲显存块不满足所述请求显存大小,则将所述空闲显存块大小的指数标志i递增,以获取所述空闲块链表中更大的空闲显存块;
将获取到的所述更大的空闲显存块划分为一个或多个伙伴关系块并判断所述伙伴关系块是否满足所述请求显存大小,若否,则继续分块,直到获取到满足所述请求显存大小的空闲显存块。
相应于图6所示的一种GPU显存申请的装置600,参见图7,其示出了本公开实施例提供的一种GPU显存释放的装置700,所述装置700包括:通知部分 701、第一查询部分702、第二查询部分703以及释放部分704;其中,
所述通知部分 701,经配置为GPU使用完已分配的显存块,向CPU发送通知消息,其中,所述通知消息中至少包括待释放的显存块的标识;
所述第一查询部分702,经配置为CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的状态;
所述第二查询部分703,经配置为CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的伙伴关系块是否空闲,若是,则通知GPU合并所述伙伴关系块并更新合并后的显存块的位图算法的状态标识位;
所述释放部分704,经配置为CPU根据所述待释放的显存块的状态及其伙伴关系块的状态,向GPU发送显存释放请求,GPU通过伙伴算法释放所述待释放的显存块及其伙伴关系块并挂入到相应的空闲块链表。
在一些示例中,所述通知部分 701,经配置为将待释放的显存块的标识、是否使用完成的状态以及显存块大小,通过所述通知消息发送给CPU端初始化函数中的高优先级任务。
可以理解地,上述GPU显存申请的装置600和GPU显存释放的装置700的示例性技术方案,与前述GPU显存申请的方法和GPU显存释放的方法的技术方案属于同一构思,因此,上述GPU显存申请的装置600和GPU显存释放的装置700的技术方案未详细描述的细节内容,均可以参见前述GPU显存申请的方法和GPU显存释放的方法的技术方案的描述,本公开实施例对此不做赘述。
可以理解地,在本实施例中,“部分”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是单元,还可以是模块也可以是非模块化的。
另外,在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机存储介质,所述计算机存储介质存储有GPU显存申请的程序和/或GPU显存释放的程序;
其中,所述GPU显存申请的程序被至少一个处理器执行时实现上述图3所示的GPU显存申请的方法;
所述GPU显存释放的程序被至少一个处理器执行时实现上述图5所示的GPU显存释放的方法。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种GPU显存申请的方法,其特征在于,该方法应用于具有CPU和GPU的计算设备,所述方法包括:
CPU向GPU发送初始化指令以获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态;
CPU向GPU发送渲染指令,GPU执行渲染前,CPU根据所述位图算法的状态标识位和所述渲染指令中渲染数据的大小,通过伙伴算法查找匹配的空闲显存块,其中,根据所述渲染指令中渲染数据的大小确定需要请求显存大小;
若所述空闲块链表中存在满足所述请求显存大小的空闲显存块,则CPU向GPU发送显存申请请求,通过所述伙伴算法进行分配并返回已分配显存块的物理地址,对已分配的显存块进行系统调用,GPU根据所述显存申请请求从所述空闲块链表的末尾分配所述空闲显存块并在CPU端重置其相应的位图算法的状态标识位,其中,所述显存申请请求中至少包括请求显存大小;
若所述空闲块链表中不存在满足所述请求显存大小的空闲显存块,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块;
其中,所述CPU向GPU发送渲染指令,GPU执行渲染前,CPU根据所述位图算法的状态标识位和所述渲染指令中渲染数据的大小,通过伙伴算法查找匹配的空闲显存块,其中,根据所述渲染指令中渲染数据的大小确定需要请求显存大小,包括:
根据所述请求显存大小,通过位图算法的状态标识位确定满足所述请求显存大小的所有空闲态的显存块,其中,所述位图算法的状态标识位为0表示显存块空闲,所述位图算法的状态标识位为1表示显存块被占用;
通过伙伴算法从所述所有空闲态的显存块中查找匹配的空闲显存块。
2.根据权利要求1所述方法,其特征在于,所述通过伙伴算法从所述所有空闲态的显存块中查找匹配的空闲显存块,包括:基于所述请求显存大小,所述伙伴算法以2的幂次方大小确定需要查找的空闲显存块。
3.根据权利要求1所述方法,其特征在于,所述若所述空闲块链表中不存在满足所述请求显存大小的空闲显存块,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块,包括:
根据所述请求显存大小,获取显存块大小为个页面大小的空闲显存块;其中,i值满足/>,m为请求显存大小,i为空闲显存块大小的指数;
若所述个页面大小的空闲显存块不满足所述请求显存大小,则将所述空闲显存块大小的指数标志i递增,以获取所述空闲块链表中更大的空闲显存块;
将获取到的所述更大的空闲显存块划分为一个或多个伙伴关系块并判断所述伙伴关系块是否满足所述请求显存大小,若否,则继续分块,直到获取到满足所述请求显存大小的空闲显存块。
4.一种GPU显存释放的方法,其特征在于,该方法应用于具有CPU和GPU的计算设备,所述方法包括:
GPU使用完已分配的显存块,向CPU发送通知消息,其中,所述通知消息中至少包括待释放的显存块的标识;
CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的状态;
CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的伙伴关系块是否空闲,若是,则通知GPU合并所述伙伴关系块并更新合并后的显存块的位图算法的状态标识位;
CPU根据所述待释放的显存块的状态及其伙伴关系块的状态,向GPU发送显存释放请求,GPU通过伙伴算法释放所述待释放的显存块及其伙伴关系块并挂入到相应的空闲块链表;
其中,所述GPU使用完已分配的显存块,向CPU发送通知消息,包括:将待释放的显存块的标识、是否使用完成的状态以及显存块大小,通过所述通知消息发送给CPU端初始化函数中的高优先级任务,其中,所述高优先级任务用于查询GPU 中各显存块的状态。
5.一种GPU显存申请的装置,其特征在于,所述装置包括:获取部分、查找部分、申请部分以及划分部分;其中,
所述获取部分,经配置为CPU向GPU发送初始化指令以获取GPU显存的空闲块链表,通过位图算法的状态标识位标识所述空闲块链表中每一个显存块的状态;
所述查找部分,经配置为CPU向GPU发送渲染指令,GPU执行渲染前,CPU根据所述位图算法的状态标识位和所述渲染指令中渲染数据的大小,通过伙伴算法查找匹配的空闲显存块,其中,根据所述渲染指令中渲染数据的大小确定需要请求显存大小;
所述申请部分,经配置为若所述空闲块链表中存在满足所述请求显存大小的空闲显存块,则CPU向GPU发送显存申请请求,通过所述伙伴算法进行分配并返回已分配显存块的物理地址,对已分配的显存块进行系统调用,GPU根据所述显存申请请求从所述空闲块链表的末尾分配所述空闲显存块并在CPU端重置其相应的位图算法的状态标识位,其中,所述显存申请请求中至少包括请求显存大小;
所述划分部分,经配置为若所述空闲块链表中不存在满足所述请求显存大小的空闲显存块,则查找所述空闲块链表中更大的空闲显存块并划分伙伴关系块,直到获得满足所述请求显存大小的空闲显存块;
其中,所述查找部分,还经配置为:
根据所述请求显存大小,通过位图算法的状态标识位确定满足所述请求显存大小的所有空闲态的显存块,其中,所述位图算法的状态标识位为0表示显存块空闲,所述位图算法的状态标识位为1表示显存块被占用;
通过伙伴算法从所述所有空闲态的显存块中查找匹配的空闲显存块。
6.一种GPU显存释放的装置,其特征在于,所述装置包括:通知部分、第一查询部分、第二查询部分以及释放部分;其中,
所述通知部分,经配置为GPU使用完已分配的显存块,向CPU发送通知消息,其中,所述通知消息中至少包括待释放的显存块的标识;
所述第一查询部分,经配置为CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的状态;
所述第二查询部分,经配置为CPU根据所述待释放的显存块的标识,查询所述待释放的显存块的伙伴关系块是否空闲,若是,则通知GPU合并所述伙伴关系块并更新合并后的显存块的位图算法的状态标识位;
所述释放部分,经配置为CPU根据所述待释放的显存块的状态及其伙伴关系块的状态,向GPU发送显存释放请求,GPU通过伙伴算法释放所述待释放的显存块及其伙伴关系块并挂入到相应的空闲块链表;
其中,所述通知部分,还经配置为:
将待释放的显存块的标识、是否使用完成的状态以及显存块大小,通过所述通知消息发送给CPU端初始化函数中的高优先级任务,其中,所述高优先级任务用于查询GPU 中各显存块的状态。
7.一种计算设备,其特征在于,包括CPU和GPU以及实现CPU和GPU之间连接通信的系统总线;其中,所述CPU和GPU,经配置以实现权利要求1至3任一项所述GPU显存申请的方法或者实现权利要求4所述GPU显存释放的方法。
8.一种计算机存储介质,其特征在于,所述计算机存储介质存储有GPU显存申请的程序和/或GPU显存释放的程序;
其中,所述GPU显存申请的程序被至少一个处理器执行时实现权利要求1至3任一项所述GPU显存申请的方法;
所述GPU显存释放的程序被至少一个处理器执行时实现权利要求4所述GPU显存释放的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311462306.4A CN117194055B (zh) | 2023-11-06 | 2023-11-06 | Gpu显存申请及释放的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311462306.4A CN117194055B (zh) | 2023-11-06 | 2023-11-06 | Gpu显存申请及释放的方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117194055A CN117194055A (zh) | 2023-12-08 |
CN117194055B true CN117194055B (zh) | 2024-03-08 |
Family
ID=88990935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311462306.4A Active CN117194055B (zh) | 2023-11-06 | 2023-11-06 | Gpu显存申请及释放的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117194055B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117455750B (zh) * | 2023-12-26 | 2024-04-02 | 芯瞳半导体技术(山东)有限公司 | 显存管理方法、装置、系统、介质及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930827A (en) * | 1996-12-02 | 1999-07-27 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
CN101320351A (zh) * | 2008-06-27 | 2008-12-10 | 华中科技大学 | 内存的分配、清理和释放方法及内存管理的装置 |
CN107392835A (zh) * | 2016-05-16 | 2017-11-24 | 腾讯科技(深圳)有限公司 | 一种粒子系统的处理方法及装置 |
CN112650577A (zh) * | 2019-10-12 | 2021-04-13 | 龙芯中科技术股份有限公司 | 内存管理方法和装置 |
CN115858184A (zh) * | 2023-03-03 | 2023-03-28 | 浪潮电子信息产业股份有限公司 | 一种rdma内存管理方法、装置、设备及介质 |
CN116701239A (zh) * | 2023-04-28 | 2023-09-05 | 湖南智领通信科技有限公司 | 基于伙伴算法的碎片回收管理方法、装置和计算机设备 |
-
2023
- 2023-11-06 CN CN202311462306.4A patent/CN117194055B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930827A (en) * | 1996-12-02 | 1999-07-27 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
CN101320351A (zh) * | 2008-06-27 | 2008-12-10 | 华中科技大学 | 内存的分配、清理和释放方法及内存管理的装置 |
CN107392835A (zh) * | 2016-05-16 | 2017-11-24 | 腾讯科技(深圳)有限公司 | 一种粒子系统的处理方法及装置 |
CN112650577A (zh) * | 2019-10-12 | 2021-04-13 | 龙芯中科技术股份有限公司 | 内存管理方法和装置 |
CN115858184A (zh) * | 2023-03-03 | 2023-03-28 | 浪潮电子信息产业股份有限公司 | 一种rdma内存管理方法、装置、设备及介质 |
CN116701239A (zh) * | 2023-04-28 | 2023-09-05 | 湖南智领通信科技有限公司 | 基于伙伴算法的碎片回收管理方法、装置和计算机设备 |
Non-Patent Citations (2)
Title |
---|
刘福岩.《计算机操作系统》.兵器工业出版社,2005,第118-120页. * |
面向异构计算平台的列数据库调度方法研究与实现;罗伟良;李观钊;陈虎;荣霓;;计算机科学(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117194055A (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110928695B (zh) | 一种关于显存的管理方法、装置及计算机存储介质 | |
US10866990B2 (en) | Block-based lossless compression of geometric data | |
US10043235B2 (en) | Method for caching GPU data and data processing system therefor | |
US7797510B1 (en) | Memory management for virtual address space with translation units of variable range size | |
CN111737019B (zh) | 一种显存资源的调度方法、装置及计算机存储介质 | |
US10217183B2 (en) | System, method, and computer program product for simultaneous execution of compute and graphics workloads | |
US9489313B2 (en) | Conditional page fault control for page residency | |
KR101813429B1 (ko) | 공유 데이터 채널들을 가지는 셰이더 파이프라인 | |
US20140267315A1 (en) | Multi-sample surface processing using one sample | |
CN117194055B (zh) | Gpu显存申请及释放的方法、装置及存储介质 | |
CN111209116B (zh) | 一种分配显存空间的方法、装置及计算机存储介质 | |
US20130203496A1 (en) | Online gaming | |
KR102263326B1 (ko) | 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법 | |
KR20130135309A (ko) | 그래픽 프로세싱을 위한 데이터 저장 어드레스 할당 | |
CN113204407A (zh) | 一种内存超配管理方法及装置 | |
CN117058288A (zh) | 图形处理器及方法、多核图形处理系统、电子装置及设备 | |
EP2389671B1 (en) | Non-graphics use of graphics memory | |
CN116740248A (zh) | 图块分发的控制方法、芯片及装置、控制器、设备和介质 | |
US10593103B2 (en) | Method and apparatus for managing graphics layers within a data processing system | |
US20140267356A1 (en) | Multi-sample surface processing using sample subsets | |
KR102657586B1 (ko) | 그래픽스 데이터를 관리하는 방법 및 장치 | |
CN117435521B (zh) | 基于gpu渲染的纹理显存映射方法、装置及介质 | |
CN116860782A (zh) | 图形处理器、系统、装置、设备及方法 | |
CN115803769A (zh) | 线程组创建方法、图形处理单元和电子设备 | |
CN114549727A (zh) | 纹理管理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |