一种CPU与GPU之间的内存数据转移方法技术

技术编号:20915969 阅读:34 留言:0更新日期:2019-04-20 09:35
本发明专利技术涉及一种CPU与GPU之间的内存数据转移方法,通过在CPU端开辟三段内存空间(intMem、floatMem、charMem),存储三种类型的变量(int、float、char),同时在GPU的全局内存中开三个缓冲区(intMemBuffer、floatMemBuffer、charMemBuffer),三个缓冲区分别用来存储与主机内存相对应的三种类型的变量(int、float、char),给GPU中的kernel函数设置同步点,同步点处将所有的数据信息写到PCIe总线,并由PCIe总线将缓冲区三种类型数据读取到CPU内存相对应的数据存储空间内,将三种类型数据备份到CPU中,实现了变量的备份与恢复,有利于合理分配资源,同时GPU内存数据通过PCIe总线转移到CPU端的操作与其他运算可并行计算,提高函数执行速度,实现GPU的加速。本发明专利技术改善了GPU调度的性能,有效利用资源。

A Memory Data Transfer Method between CPU and GPU

The present invention relates to a method of memory data transfer between CPU and GPU. By opening three memory segments (intMem, floatMem, charMem) at the CPU end, three types of variables (int, float, char) are stored, and three buffers (intMemBuffer, floatMemBuffer, charmBuffer) are opened in the GPU's global memory. The three buffers are used to store three corresponding memory segments of the host. Types of variables (int, float, char) set synchronization points for the kernel function in GPU, write all data information to the PCIe bus at the synchronization points, and read the three types of data from the buffer into the corresponding data storage space in the CPU memory by the PCIe bus. The three types of data are backed up to the CPU, which realizes the backup and recovery of variables, and is conducive to the rational allocation of resources. At the same time, the three types of data are backed up and restored to the CPU. The operation of transferring GPU memory data to CPU through PCIe bus can be calculated in parallel with other operations, which improves the speed of function execution and accelerates GPU. The invention improves the performance of GPU scheduling and effectively utilizes resources.

【技术实现步骤摘要】
一种CPU与GPU之间的内存数据转移方法
本专利技术涉及计算机
,尤其是涉及一种CPU与GPU之间的内存数据转移方法。
技术介绍
1999年8月,NVIDIA公司发布了一款名为Geforce256的图形芯片,是第一款提出GPU概念的产品,同时期的OpenGL和DirectX7都提供了硬件顶点变换的编程接口,GPU的概念因此而出现。从2003年开始,NVIDIA和ATI发布的新产品都同时具备了良好的可编程性,编程时无需再过度关注于GPU的其他硬件特性,从此,GPU又多了一个可编程的属性,也叫做可编程图形处理单元。OpenCL是第一个面向异构系统通用目的并行编程的开放式免费标准,也是一个统一的编程环境,是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成,OpenCL提供了基于任务分割和数据分割的并行计算机制。在异构计算系统上进行的并行计算通常称为异构计算,它所使用的计算资源具有多种类型的计算能力,是一种使计算任务的并行性本文档来自技高网...

【技术保护点】
1.一种CPU与GPU之间的内存数据转移方法,其特征在于:包括下列步骤:(1)、扫描GPU端的函数程序,将所有函数程序运行的变量获取下来;(2)、在CPU端开辟一段存储空间,存储空间分为三段:intMem;floatMem;charMem,用于存储三种类型的变量:int、float、char,在GPU端开辟一段存储空间,存储空间分为三个缓冲区:intMemBuffer;floatMemBuffer;charMemBuffer,分别用来存储与CPU相对应的三种类型的变量,三个缓冲区作为GPU与CPU之间数据传递的媒介;(3)、在CPU端创建指令队列,该指令队列用于存储GPU端所需要的相关操作指令...

【技术特征摘要】
1.一种CPU与GPU之间的内存数据转移方法,其特征在于:包括下列步骤:(1)、扫描GPU端的函数程序,将所有函数程序运行的变量获取下来;(2)、在CPU端开辟一段存储空间,存储空间分为三段:intMem;floatMem;charMem,用于存储三种类型的变量:int、float、char,在GPU端开辟一段存储空间,存储空间分为三个缓冲区:intMemBuffer;floatMemBuffer;charMemBuffer,分别用来存储与CPU相对应的三种类型的变量,三个缓冲区作为GPU与CPU之间数据传递的媒介;(3)、在CPU端创建指令队列,该指令队列用于存储GPU端所需要的相关操作指令;(4)、在CPU端构造结构体MCB,用来管理数据的状态;(5)、在CPU端,将函数的运行过程分成若干个相同的while循环体,在进入每一次循环体时,先从CPU中读取数据,再运行循环体,在函数运行过程中,通过设置一个检查点,然后检测检查点的数值从而来判断函数运行状态,该检查点定义为stepno,若判断到stepno为特定值,则表示函数运行结束,跳出while循环,否则while循环进行运行;(6)、在GPU端,设置checkpoint()作为同步点,在函数程序中插入checkpoint()来暂停每个work-item的运算,同时通过checkpoint()来同步所有的work-item的运算状态,利用每个workgroup中的第一个wo...

【专利技术属性】
技术研发人员:陈根浪张佳健
申请(专利权)人:浙江大学宁波理工学院
类型:发明
国别省市:浙江,33

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

1