当前位置: 首页 > 专利查询>四川大学专利>正文

CPU与GPU间的数据传输方法及计算机设备技术

技术编号:35359471 阅读:30 留言:0更新日期:2022-10-26 12:42
本申请涉及数据处理技术领域,公开了一种CPU与GPU间的数据传输方法及计算机设备,方法包括:获取CPU需要传输的第一数据集合,第一数据集合包括若干具有同一类名的类数据;对第一数据集合中的类数据进行属性合并,获得第二数据集合;基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;基于地址映射关系,将第一数据集合传输至GPU进行存储。本申请解决了现有CPU与GPU的数据传输过程中,由于传输后的数据存储方式不变,导致GPU存在读取数据效率低的问题。GPU存在读取数据效率低的问题。GPU存在读取数据效率低的问题。

【技术实现步骤摘要】
CPU与GPU间的数据传输方法及计算机设备


[0001]本申请涉及数据处理
,具体是指一种CPU与GPU间的数据传输方法及计算机设备。

技术介绍

[0002]对于复杂神经网络来讲,使用中央处理器CPU进行计算并不高效,由于神经网络是高度并行的,采用适合并行计算的图形处理器GPU来处理并行计算任务可以有效提高神经网络计算效率。随着人工智能的不断发展,对擅长于大规模并行运算的GPU的硬件要求也越来越高,正常工作流程下GPU仍需在CPU的指令操控下去完成计算任务,因此CPU与GPU之间常常会进行数据传输。
[0003]此外,面向对象的编程作为主流的编程设计方法,其具有可读性高、易扩展、方便建模等优点,程序设计人员常常使用面向对象的编程方法来设计GPU程序,这些数据需要从CPU传输到GPU,才能利用GPU的并行计算能力实现大规模并行计算。具体的,一个典型的GPU程序实现流程为:首先在GPU上为数据分配内存空间,然后计算数据CPU的内存地址和GPU分配地址的映射关系,将CPU内存上的数据复制到GPU内存,GPU各个计算单元中的线程束向GPU内存提交访问事务获取数据并进行计算,计算完毕后将结果从GPU内存回传到CPU内存中。
[0004]其中,在现有CPU与GPU的数据传输过程中,数据在CPU和GPU的存储方式是不变的,即数据在GPU中的存储结构和在CPU中的存储结构是相同的,都是以类数据的形式进行传输和存储。但是由于CPU和GPU对于内存数据的存取方式的不同,现有数据传输存储方式不利于GPU读取数据,同时还会使GPU内存带宽受到了很大限制,对GPU缓存也造成了大量的浪费。

技术实现思路

[0005]基于以上技术问题,本申请提供了一种CPU与GPU间的数据传输方法及计算机设备,解决了现有CPU与GPU的数据传输过程中,由于传输后的数据存储方式不变,导致GPU存在读取数据效率低的问题。
[0006]为解决以上技术问题,本申请采用的技术方案如下:一种CPU与GPU间的数据传输方法,包括:获取CPU需要传输的第一数据集合,第一数据集合包括若干具有同一类名的类数据;对第一数据集合中的类数据进行属性合并,获得第二数据集合;基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;基于地址映射关系,将第一数据集合传输至GPU进行存储。
[0007]进一步的,对第一数据集合中的类数据进行属性合并,获得第二数据集合包括:
获取类数据的属性列表,属性列表包括类数据具有的若干属性名称;依次提取属性列表中的属性名称,并基于属性名称,依次提取第一数据集合中相应属性名称的属性值;将提取出的属性值按序排列,获得第二数据集合。
[0008]进一步的,GPU按照第二数据集合中的属性值排列顺序,将第一数据集合中的属性值依序存储在GPU内存的存储空间中。
[0009]进一步的,在基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系之前,还包括:计算第一数据集合需要占用的内存大小;基于内存大小,GPU分配用于存储第一数据集合的内存空间。
[0010]进一步的,将地址映射关系进行存储,地址映射关系基于第一数据集合中类数据的类名作为索引。
[0011]进一步的,在获取CPU需要传输的第一数据集合之后,还包括:获取第一数据集合中类数据的类名;查找类名是否具有对应的已存储的地址映射关系;若类名具有对应的已存储的地址映射关系,则基于已存储的地址映射关系,将第一数据集合传输至GPU进行存储。
[0012]进一步的,若类名不具有对应的已存储的地址映射关系,则转至对第一数据集合中的类数据进行属性合并,获得第二数据集合的步骤。
[0013]一种计算机设备,包括CPU、GPU和地址管理模块,地址管理模块包括:数据读取单元,数据读取单元用于获取CPU需要传输的第一数据集合,第一数据集合包括若干具有同一类名的类数据;属性合并单元,属性合并单元用于对第一数据集合中的类数据进行属性合并,获得第二数据集合;地址映射单元,地址映射单元用于基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;数据传输单元,数据传输单元用于基于地址映射关系,将第一数据集合传输至GPU进行存储。
[0014]与现有技术相比,本申请的有益效果是:本申请通过改变CPU向GPU传输的数据的结构,使得面向对象编程的程序数据在GPU中的存储结构同步发生了改变,从而减少了GPU内存访问事务,提高了GPU内存访问效率和内存带宽,同时还减少了GPU中L2缓存的浪费,提高了L2的缓存利用率。
[0015]此外,本申请还可将CPU与CPU进行数据传输的地址映射关系进行存储,在CPU向GPU首次传输数据后,记录下了此数据在CPU和GPU之间的内存地址映射关系,在后续遇到相同数据时,为后续的数据传输流程省去了计算地址映射关系这一步骤,节省了CPU计算资源,加快了数据传输效率。
附图说明
[0016]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申
请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。其中:图1为CPU与GPU间的数据传输方法的流程示意图。
[0017]图2为对第一数据集合中的类数据进行属性合并,获得第二数据集合的流程示意图。
[0018]图3为GPU分配内存空间的流程示意图。
[0019]图4为查找数据是否具有对应的已存储的地址映射关系的流程示意图。
[0020]图5为CPU和GPU的现有硬件架构图。
[0021]图6为现有GPU上数据的存储结构示意图。
[0022]图7为现有GPU上数据的读取示意图。
[0023]图8为本申请GPU上数据的存储结构示意图。
[0024]图9为本申请GPU上数据的读取示意图。
[0025]图10为计算机设备的结构示意框图。
具体实施方式
[0026]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0027]应当理解,本说明书中所使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
[0028]如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.CPU与GPU间的数据传输方法,其特征在于,包括:获取CPU需要传输的第一数据集合,所述第一数据集合包括若干具有同一类名的类数据;对所述第一数据集合中的类数据进行属性合并,获得第二数据集合;基于所述第二数据集合中的属性值排列顺序,依次建立所述第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;基于所述地址映射关系,将所述第一数据集合传输至所述GPU进行存储。2.根据权利要求1所述的CPU与GPU间的数据传输方法,其特征在于,对所述第一数据集合中的类数据进行属性合并,获得第二数据集合包括:获取所述类数据的属性列表,所述属性列表包括所述类数据具有的若干属性名称;依次提取所述属性列表中的属性名称,并基于所述属性名称,依次提取所述第一数据集合中相应属性名称的属性值;将提取出的属性值按序排列,获得所述第二数据集合。3.根据权利要求2所述的CPU与GPU间的数据传输方法,其特征在于:所述GPU按照所述第二数据集合中的属性值排列顺序,将所述第一数据集合中的属性值依序存储在GPU内存的存储空间中。4.根据权利要求1所述的CPU与GPU间的数据传输方法,其特征在于,在基于所述第二数据集合中的属性值排列顺序,依次建立所述第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系之前,还包括:计算所述第一数据集合需要占用的内存大小;基于所述内存大小,所述GPU分配用于存储所述第一数据集合的内存空间。...

【专利技术属性】
技术研发人员:章毅祝生乾胡俊杰余程嵘段兆航
申请(专利权)人:四川大学
类型:发明
国别省市:

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

1