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加速方法,其特征在于,包括:通过图形加速结构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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。