GPU加速方法和装置制造方法及图纸

技术编号:15392488 阅读:42 留言:0更新日期:2017-05-19 05:19
本发明专利技术提供一种GPU加速方法和装置,其中,该方法包括:通过EXA驱动中的连续物理内存分配函数调用内核中的GPU驱动,控制GPU为EXA驱动分配一段物理地址连续的缓冲区;在物理地址连续的缓冲区中填写欲加速的数据;通过EXA驱动将物理地址连续的缓冲区的物理地址和相应的加速指令提交给GPU驱动,控制GPU对数据进行加速处理。本发明专利技术提供的技术方案,省去了一次缓冲区分配操作和大量的memcpy操作,有效的缩短了加速指令提交到GPU的时间,提高了GPU加速的效率。

GPU acceleration method and apparatus

The present invention provides a method and apparatus for accelerating GPU, wherein, the method comprises the following steps: driven by the continuous physical memory allocation EXA driver function calls in the GPU kernel, GPU control for the EXA drive buffer allocated a continuous physical address; fill in acceleration data in the physical address of the continuous buffer; through EXA will drive the physical address buffer contiguous physical addresses and corresponding acceleration instruction submitted to the GPU drive, GPU control to accelerate the processing of the data. The technical proposal provided by the invention omits the primary buffer allocation operation and a large number of memcpy operations, effectively shortens the time when the acceleration instruction is submitted to the GPU, and improves the efficiency of the GPU acceleration.

【技术实现步骤摘要】
GPU加速方法和装置
本专利技术涉及硬件加速技术,尤其涉及一种GPU加速方法和装置。
技术介绍
图形加速结构(Ex-kaaaXelerationArchitecture,EXA)驱动是Linux图形系统中显卡与X窗口系统的接口,是Linux图形系统实现GPU硬件加速的接口层,其工作在X窗口系统中的图形接口服务器Xserver之下、显卡的内核图形处理器(GraphicsProcessingUnit,GPU)驱动之上,X窗口系统通过EXA驱动实现所有Linux图形系统的2D显卡加速。在目前的图形加速方案中,Xserver通过EXA驱动调用GPU执行一次加速操作前,会先在用户态空间为EXA驱动分配一段不连续的内存缓冲区来存储欲加速的数据,再通过EXA驱动调用GPU在独立显存中分配一段显存缓冲区,然后再调用memcpy函数将EXA驱动中的内存缓冲区数据复制到显存缓冲区中,通过GPU对数据进行加速操作。现有的这种加速方案,在每次调用GPU进行加速操作前都要进行两次缓冲区分配操作和大量的memcpy操作,这样延迟了GPU加速操作的执行,使得GPU加速效率低下。
技术实现思路
针对现有技术的上述缺陷,本专利技术提供一种GPU加速方法和装置,用于提高GPU加速效率。本专利技术提供一种GPU加速方法,该方法包括:通过图形加速结构EXA驱动中的连续物理内存分配函数调用内核中的图形处理器GPU驱动,控制GPU为EXA驱动分配一段物理地址连续的缓冲区,物理地址连续的缓冲区用于GPU调用以进行数据加速;在物理地址连续的缓冲区中填写欲加速的数据;通过EXA驱动将物理地址连续的缓冲区的物理地址和相应的加速指令提交给GPU驱动,控制GPU对数据进行加速处理。在本专利技术的一实施例中,通过EXA驱动中的连续物理内存分配函数调用内核中的GPU驱动,控制GPU为EXA驱动分配一段物理地址连续的缓冲区,具体包括:通过连续物理内存分配函数进行系统调用来调用GPU驱动,控制GPU从图形转换表GTT中分配一段物理地址连续的缓冲区;在内核将物理地址连续的缓冲区映射到用户态空间后,存储内核返回的物理地址连续的缓冲区的物理地址和物理地址连续的缓冲区对应的用户态程序地址。在本专利技术的一实施例中,物理地址连续的缓冲区的物理地址按照GPU硬件访问要求对齐,在物理地址连续的缓冲区中填写欲加速的数据,具体包括:根据用户态程序地址在对应的物理地址连续且首地址按照GPU硬件访问要求对齐的缓冲区中填写欲加速的数据。在本专利技术的一实施例中,连续物理内存分配函数包括用于记录GPU驱动设备节点信息的参数、欲分配的缓冲区地址对齐要求的参数、欲分配的缓冲区大小的参数、欲分配的缓冲区类型的参数和分配的缓冲区首地址的参数。在本专利技术的一实施例中,EXA驱动包括连续物理内存释放函数;该方法还包括:通过连续物理内存释放函数进行系统调用来调用内核中的GPU驱动,控制GPU从GTT中释放缓冲区。在本专利技术的一实施例中,连续物理内存释放函数包括用于记录GPU驱动设备节点信息的参数、分配的缓冲区大小的参数、分配的缓冲区类型的参数和分配的缓冲区首地址的参数。本专利技术还提供一种GPU加速装置,包括:分配模块,用于通过图形加速结构EXA驱动中的连续物理内存分配函数调用内核中的图形处理器GPU驱动,控制GPU为EXA驱动分配一段物理地址连续的缓冲区,物理地址连续的缓冲区用于GPU调用以进行数据加速;填写模块,用于在物理地址连续的缓冲区中填写欲加速的数据;处理模块,用于通过EXA驱动将物理地址连续的缓冲区的物理地址和相应的加速指令提交给GPU驱动,控制GPU对数据进行加速处理。在本专利技术的一实施例中,分配模块,具体用于:通过连续物理内存分配函数进行系统调用来调用GPU驱动,控制GPU从图形转换表GTT中分配一段物理地址连续的缓冲区;在内核将物理地址连续的缓冲区映射到用户态空间后,存储内核返回的物理地址连续的缓冲区的物理地址和物理地址连续的缓冲区对应的用户态程序地址。在本专利技术的一实施例中,物理地址连续的缓冲区的物理地址按照GPU硬件访问要求对齐,填写模块具体用于:根据用户态程序地址在对应的物理地址连续且首地址按照GPU硬件访问要求对齐的缓冲区中填写欲加速的数据。在本专利技术的一实施例中,连续物理内存分配函数包括用于记录GPU驱动设备节点信息的参数、欲分配的缓冲区地址对齐要求的参数、欲分配的缓冲区大小的参数、欲分配的缓冲区类型的参数和分配的缓冲区首地址的参数。在本专利技术的一实施例中,EXA驱动包括连续物理内存释放函数,装置还包括:释放模块,释放模块用于通过连续物理内存释放函数进行系统调用来调用内核中的GPU驱动,控制GPU从GTT中释放缓冲区。在本专利技术的一实施例中,连续物理内存释放函数包括用于记录GPU驱动设备节点信息的参数、分配的缓冲区大小的参数、分配的缓冲区类型的参数和分配的缓冲区首地址的参数。本实施例提供的GPU加速方法和装置,首先通过EXA驱动中的连续物理内存分配函数调用内核中的GPU驱动,控制GPU为EXA驱动分配一段物理地址连续的缓冲区,然后在缓冲区中填写欲加速的数据后,通过EXA驱动将缓冲区的物理地址和相应的加速指令提交给GPU,使GPU对数据进行加速处理,省去了一次缓冲区分配操作和大量的memcpy操作,有效的缩短了加速指令提交到GPU的时间,提高了GPU加速的效率。附图说明图1为本专利技术提供的GPU加速方法实施例一的流程示意图;图2为现有技术中GPU加速方法的流程示意图;图3为本专利技术提供的GPU加速方法实施例二的流程示意图;图4为本专利技术提供的GPU加速装置的结构示意图。附图标记说明:10-分配模块;20-填写模块;30-处理模块;40-释放模块。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例涉及的方法和装置可以应用于Linux图形系统以实现图形加速,其旨在解决现有技术中图形加速方案中GPU加速效率低的技术问题。下面以具体地实施例对本专利技术的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。图1为本专利技术提供的GPU加速方法实施例一的流程示意图,该方法的执行主体可以是GPU加速装置,该装置可以集成在中央处理器(CentralProcessingUnit,CPU)中,实现CPU中Xserver的部分功能;也可以是独立的处理设备。如图1所示,本实施例的方法包括:步骤S101、通过EXA驱动中的连续物理内存分配函数调用内核中的GPU驱动,控制GPU为EXA驱动分配一段物理地址连续的缓冲区。具体的,在需要GPU进行图形加速时,CPU中的Xsever可以先调用EXA驱动,通过EXA驱动中的连续物理内存分配函数调用CPU内核中的GPU驱动,控制GPU为EXA驱动分配一段缓冲区,GPU可以直接访问该缓冲区以进行数据加速,其中,该缓冲区可以从共享显存或独立显存中分配,该缓冲区的物理地址连续且首本文档来自技高网...
GPU加速方法和装置

【技术保护点】
一种GPU加速方法,其特征在于,包括:通过图形加速结构EXA驱动中的连续物理内存分配函数调用内核中的图形处理器GPU驱动,控制GPU为所述EXA驱动分配一段物理地址连续的缓冲区,所述物理地址连续的缓冲区用于GPU调用以进行数据加速;在所述物理地址连续的缓冲区中填写欲加速的数据;通过所述EXA驱动将所述物理地址连续的缓冲区的物理地址和相应的加速指令提交给所述GPU驱动,控制所述GPU对所述数据进行加速处理。

【技术特征摘要】
1.一种GPU加速方法,其特征在于,包括:通过图形加速结构EXA驱动中的连续物理内存分配函数调用内核中的图形处理器GPU驱动,控制GPU为所述EXA驱动分配一段物理地址连续的缓冲区,所述物理地址连续的缓冲区用于GPU调用以进行数据加速;在所述物理地址连续的缓冲区中填写欲加速的数据;通过所述EXA驱动将所述物理地址连续的缓冲区的物理地址和相应的加速指令提交给所述GPU驱动,控制所述GPU对所述数据进行加速处理。2.根据权利要求1所述的方法,其特征在于,所述通过EXA驱动中的连续物理内存分配函数调用内核中的GPU驱动,控制GPU为所述EXA驱动分配一段物理地址连续的缓冲区,具体包括:通过所述连续物理内存分配函数进行系统调用来调用所述GPU驱动,控制GPU从图形转换表GTT中分配一段物理地址连续的缓冲区;在所述内核将所述物理地址连续的缓冲区映射到用户态空间后,存储所述内核返回的所述物理地址连续的缓冲区的物理地址和所述物理地址连续的缓冲区对应的用户态程序地址。3.根据权利要求2所述的方法,其特征在于,所述物理地址连续的缓冲区的物理地址首地址按照GPU硬件访问要求对齐;所述在所述物理地址连续的缓冲区中填写欲加速的数据,具体包括:根据所述用户态程序地址在对应的物理地址连续且首地址按照GPU硬件访问要求对齐的缓冲区中填写欲加速的数据。4.根据权利要求2所述的方法,其特征在于,所述连续物理内存分配函数包括用于记录GPU驱动设备节点信息的参数、欲分配的缓冲区地址对齐要求的参数、欲分配的缓冲区大小的参数、欲分配的缓冲区类型的参数和分配的缓冲区首地址的参数。5.根据权利要求1所述的方法,其特征在于,所述EXA驱动包括连续物理内存释放函数;该方法还包括:通过所述连续物理内存释放函数进行系统调用来调用内核中的GPU驱动,控制GPU从GTT中释放所述缓冲区。6.根据权利要求5所述的方法,其特征在于,所述连续物理内存释放函数包括用于记录GPU驱动设备节点信息的参数、分配的缓冲区大小的参数、分配的缓冲区类型...

【专利技术属性】
技术研发人员:王洪虎
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:北京,11

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

1