CN115237605B - Cpu与gpu间的数据传输方法及计算机设备 - Google Patents
Cpu与gpu间的数据传输方法及计算机设备 Download PDFInfo
- Publication number
- CN115237605B CN115237605B CN202211134216.8A CN202211134216A CN115237605B CN 115237605 B CN115237605 B CN 115237605B CN 202211134216 A CN202211134216 A CN 202211134216A CN 115237605 B CN115237605 B CN 115237605B
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- gpu
- attribute
- cpu
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据处理技术领域,公开了一种CPU与GPU间的数据传输方法及计算机设备,方法包括:获取CPU需要传输的第一数据集合,第一数据集合包括若干具有同一类名的类数据;对第一数据集合中的类数据进行属性合并,获得第二数据集合;基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;基于地址映射关系,将第一数据集合传输至GPU进行存储。本申请解决了现有CPU与GPU的数据传输过程中,由于传输后的数据存储方式不变,导致GPU存在读取数据效率低的问题。
Description
技术领域
本申请涉及数据处理技术领域,具体是指一种CPU与GPU间的数据传输方法及计算机设备。
背景技术
对于复杂神经网络来讲,使用中央处理器CPU进行计算并不高效,由于神经网络是高度并行的,采用适合并行计算的图形处理器GPU来处理并行计算任务可以有效提高神经网络计算效率。随着人工智能的不断发展,对擅长于大规模并行运算的GPU的硬件要求也越来越高,正常工作流程下GPU仍需在CPU的指令操控下去完成计算任务,因此CPU与GPU之间常常会进行数据传输。
此外,面向对象的编程作为主流的编程设计方法,其具有可读性高、易扩展、方便建模等优点,程序设计人员常常使用面向对象的编程方法来设计GPU程序,这些数据需要从CPU传输到GPU,才能利用GPU的并行计算能力实现大规模并行计算。具体的,一个典型的GPU程序实现流程为:首先在GPU上为数据分配内存空间,然后计算数据CPU的内存地址和GPU分配地址的映射关系,将CPU内存上的数据复制到GPU内存,GPU各个计算单元中的线程束向GPU内存提交访问事务获取数据并进行计算,计算完毕后将结果从GPU内存回传到CPU内存中。
其中,在现有CPU与GPU的数据传输过程中,数据在CPU和GPU的存储方式是不变的,即数据在GPU中的存储结构和在CPU中的存储结构是相同的,都是以类数据的形式进行传输和存储。但是由于CPU和GPU对于内存数据的存取方式的不同,现有数据传输存储方式不利于GPU读取数据,同时还会使GPU内存带宽受到了很大限制,对GPU缓存也造成了大量的浪费。
发明内容
基于以上技术问题,本申请提供了一种CPU与GPU间的数据传输方法及计算机设备,解决了现有CPU与GPU的数据传输过程中,由于传输后的数据存储方式不变,导致GPU存在读取数据效率低的问题。
为解决以上技术问题,本申请采用的技术方案如下:
一种CPU与GPU间的数据传输方法,包括:
获取CPU需要传输的第一数据集合,第一数据集合包括若干具有同一类名的类数据;
对第一数据集合中的类数据进行属性合并,获得第二数据集合;
基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;
基于地址映射关系,将第一数据集合传输至GPU进行存储。
进一步的,对第一数据集合中的类数据进行属性合并,获得第二数据集合包括:
获取类数据的属性列表,属性列表包括类数据具有的若干属性名称;
依次提取属性列表中的属性名称,并基于属性名称,依次提取第一数据集合中相应属性名称的属性值;
将提取出的属性值按序排列,获得第二数据集合。
进一步的,GPU按照第二数据集合中的属性值排列顺序,将第一数据集合中的属性值依序存储在GPU内存的存储空间中。
进一步的,在基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系之前,还包括:
计算第一数据集合需要占用的内存大小;
基于内存大小,GPU分配用于存储第一数据集合的内存空间。
进一步的,将地址映射关系进行存储,地址映射关系基于第一数据集合中类数据的类名作为索引。
进一步的,在获取CPU需要传输的第一数据集合之后,还包括:
获取第一数据集合中类数据的类名;
查找类名是否具有对应的已存储的地址映射关系;
若类名具有对应的已存储的地址映射关系,则基于已存储的地址映射关系,将第一数据集合传输至GPU进行存储。
进一步的,若类名不具有对应的已存储的地址映射关系,则转至对第一数据集合中的类数据进行属性合并,获得第二数据集合的步骤。
一种计算机设备,包括CPU、GPU和地址管理模块,地址管理模块包括:
数据读取单元,数据读取单元用于获取CPU需要传输的第一数据集合,第一数据集合包括若干具有同一类名的类数据;
属性合并单元,属性合并单元用于对第一数据集合中的类数据进行属性合并,获得第二数据集合;
地址映射单元,地址映射单元用于基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;
数据传输单元,数据传输单元用于基于地址映射关系,将第一数据集合传输至GPU进行存储。
与现有技术相比,本申请的有益效果是:
本申请通过改变CPU向GPU传输的数据的结构,使得面向对象编程的程序数据在GPU中的存储结构同步发生了改变,从而减少了GPU内存访问事务,提高了GPU内存访问效率和内存带宽,同时还减少了GPU中L2缓存的浪费,提高了L2的缓存利用率。
此外,本申请还可将CPU与CPU进行数据传输的地址映射关系进行存储,在CPU向GPU首次传输数据后,记录下了此数据在CPU和GPU之间的内存地址映射关系,在后续遇到相同数据时,为后续的数据传输流程省去了计算地址映射关系这一步骤,节省了CPU计算资源,加快了数据传输效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。其中:
图1为CPU与GPU间的数据传输方法的流程示意图。
图2为对第一数据集合中的类数据进行属性合并,获得第二数据集合的流程示意图。
图3为GPU分配内存空间的流程示意图。
图4为查找数据是否具有对应的已存储的地址映射关系的流程示意图。
图5为CPU和GPU的现有硬件架构图。
图6为现有GPU上数据的存储结构示意图。
图7为现有GPU上数据的读取示意图。
图8为本申请GPU上数据的存储结构示意图。
图9为本申请GPU上数据的读取示意图。
图10为计算机设备的结构示意框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本说明书中所使用的“***”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的***所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
参阅图1,在一些实施例中,一种CPU与GPU间的数据传输方法,包括:
S101,获取CPU需要传输的第一数据集合,第一数据集合包括若干具有同一类名的类数据;
S102,对第一数据集合中的类数据进行属性合并,获得第二数据集合;
S103,基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;
S104,基于地址映射关系,将第一数据集合传输至GPU进行存储。
在本实施例中,已知在现有技术中,图形处理器GPU程序运行的一般流程包括四个步骤:
1、内存地址计算:首先在GPU分配内存空间,确定CPU内存地址与GPU内存地址的映射关系;
2、数据传输:CPU根据地址映射关系通过传输总线向GPU传输数据;
3、数据获取:GPU计算核心利用线程束访问GPU内存获取数据;
4、计算并返回结果:GPU计算核心利用线程束获取的数据进行计算得到结果,并将结果回传到CPU。
参阅图5,通过CPU和GPU的现有硬件架构图可知,CPU向GPU传输数据,本质上是数据直接通过传输总线从CPU内存传送到GPU内存(注意:数据从CPU内存传送到GPU内存,这里GPU内存指的是GPU的全局内存,因为在GPU中内存种类有很多。以下只提到GPU内存时特指的是GPU全局内存)。
首先由CPU发送内存分配指令到GPU,为即将传输的数据分配内存,然后计算数据在CPU的内存地址和GPU内存地址的映射关系,该映射关系在下一步的数据传输中将会使用到。CPU利用前面步骤中计算好的地址映射关系,开始通过数据传输总线向GPU传输数据,并将数据保存到GPU内存中。
当数据从CPU内存传输到GPU内存中之后,GPU计算核心便可以请求访问全局内存,获取数据,用于下一阶段的计算。已知GPU的大规模计算能力是由多个硬件设备SM实现的,SM为GPU内数据处理的集成单元,一个SM能够支撑上百个线程并发执行,一个GPU一般有多个SM,因此一个GPU能够支撑上千个线程并发执行。
而线程束则是SM最基本的执行单元,每个线程束由32个连续的线程组成。同一个线程束中的所有线程依照单指令多线程(Single Instruction Multiple Thread, SIMT)方式执行,即同一个线程束中的所有线程需要同时执行相同的指令,每个线程都在自己的私有类数据上单独进行计算。
对于访存(访问GPU内存的数据)指令,线程束中的每个线程都有一个自己的内存地址,每个线程都会提交一次带有内存地址的内存访问事务。全局内存是GPU中存取速度最慢、容量最大的内存,任何SM设备都可以访问到全局内存,一般来讲,数据由CPU内存向GPU内存传送的过程,该过程的GPU内存指的是GPU全局内存。
在目前常用的面向对象编程方法设计的GPU程序中,具有相同属性的数据常被定义为类,类的名称定义为类名,每个类有许多属性,比如定义一个图像类,类名为image,image有长、宽、高等属性。
假设有一个类名为S的类,S有4个属性a、b、c、d(每个属性占一个字节的存储空间),现有一批数据由32个S组成,按照现有的CPU与GPU的数据传输方法,则这批数据在GPU硬件设备上的存储结构参阅图6所示。在图6中,内存地址是以字节为基本单位的,每个单元格为1个字节,每个S占用4个字节,32个S占用128个字节。
在结合上述的GPU访存原理可知,GPU访问内存的基本单位为一个线程束(即当线程束中的某个线程需要访问内存时,该线程束中的其他线程也要同时访问内存,无论它们是否需要访问内存),每次访问内存称为一次内存访问事务。假设该线程束中有32个线程,每个线程读取1个字节,那么一次内存访问事务需要访问32个字节。
如图7所示,假设某线程束需要获取所有数据的属性a用于计算,那么线程束每次只能访问GPU内存的32个字节,这批数据的属性a分布在地址为0~128的内存中,这意味着该线程束需要访问4次内存才能取到完整的数据。
本实施例中,在CPU向GPU传输数据之时,通过属性合并的方式改变了数据的存储方式,仍然以一个类名为S的数据为例,改进后的存储结构参阅图8所示,32个S的属性分别按照a、b、c、d进行属性合并。参阅图9,对于新的存储结构,该线程束只需要1次内存访问事务即可获取到完整的数据。改进前的存储结构使用了4次内存访问事务,改进后仅用了1次内存访问事务,节省了GPU访存资源,加快了整个计算流程。
此外,GPU还具有缓存机制。GPU的L2缓存(二级缓存)是一种存取速度比全局内存更快、容量更小的存储设备,GPU的SM单元需要读取数据时,首先在L2缓存中查找所需要的数据,如果找到了直接读取到SM单元,没有找到则需要从全局内存中获取。L2缓存依据空间局部性原理进行工作,SM单元访问全局内存某个数据时,会将该数据和其相邻的数据都加载到L2缓存中。即内存中某个数据被请求,那么该数据相邻的数据也可能会被请求。
由于从L2缓存中获取数据的速度远大于从内存中获取数据的速度,因此GPU获取数据时首先会访问L2缓存,如果缓存中有目标数据立马获取,如果缓存中没有目标数据就访问内存,在访问内存后会将访问到的数据放到缓存中,以便下次可能会使用。
由此,通过现有CPU与GPU的数据传输方法存储在GPU内存中的数据,对于线程束的内存访问事务来说,每次内存访问事务都将在L2缓存访问到不需要的数据如属性b、c、d,这些属性b、c、d会伴随着属性a被加载到L2缓存中,这些无用的数据占用了大量的L2缓存,造成了大量的缓存浪费,使得缓存利用率低下。
而本实施例的数据传输方法,使存储在GPU内存中的数据按照属性合并后的结构进行存储,改进后的数据存储结构不需要加载未被使用的b、c、d属性到L2缓存中,极大地减少了L2的缓存浪费,提高了缓存利用率。
综上,本实施例的CPU与GPU间的数据传输方法对同属一个类的一批数据进行了属性合并,改变了数据在GPU中的存储结构,提升了GPU全局内存带宽,减少了GPU的L2缓存浪费,提高了缓存利用率。
参阅图2,优选的,对第一数据集合中的类数据进行属性合并,获得第二数据集合包括:
S201,获取类数据的属性列表,属性列表包括类数据具有的若干属性名称;
S202,依次提取属性列表中的属性名称,并基于属性名称,依次提取第一数据集合中相应属性名称的属性值;
S203,将提取出的属性值按序排列,获得第二数据集合。
优选的,GPU按照第二数据集合中的属性值排列顺序,将第一数据集合中的属性值依序存储在GPU内存的存储空间中。
参阅图3,优选的,在基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系之前,还包括:
S301,计算第一数据集合需要占用的内存大小;
S302,基于内存大小,GPU分配用于存储第一数据集合的内存空间。
在一些实施例中,将地址映射关系进行存储,地址映射关系基于第一数据集合中类数据的类名作为索引。
参阅图4,优选的,在获取CPU需要传输的第一数据集合之后,还包括:
S401,获取第一数据集合中类数据的类名;
S402,查找类名是否具有对应的已存储的地址映射关系;
S403,若类名具有对应的已存储的地址映射关系,则基于已存储的地址映射关系,将第一数据集合传输至GPU进行存储。
S404,若类名不具有对应的已存储的地址映射关系,则转至对第一数据集合中的类数据进行属性合并,获得第二数据集合的步骤。
在本实施例中,在CPU向GPU首次传输数据的过程中,保留了数据CPU内存与GPU内存的地址映射关系,这样在之后对同一类数据进行传输时,便可以不再对地址映射关系进行计算,可以直接按照已有的地址映射关系进行数据传输,无需重新计算数据CPU内存与GPU内存的地址映射关系,通过记录数据CPU内存与GPU内存地址的映射关系,避免每次CPU向GPU传输数据都要重新计算地址映射关系,节省了计算资源。
此外,由于地址映射关系清晰,还可以使用多进程并行地传输数据,加快数据的传输速度。在所有线程获取到相应的数据后开始计算,计算完毕后GPU将结果回传到CPU。
参阅图10,在一些实施例中,还公开了一种计算机设备,包括CPU、GPU和地址管理模块,地址管理模块包括:
数据读取单元,数据读取单元用于获取CPU需要传输的第一数据集合,第一数据集合包括若干具有同一类名的类数据;
属性合并单元,属性合并单元用于对第一数据集合中的类数据进行属性合并,获得第二数据集合;
地址映射单元,地址映射单元用于基于第二数据集合中的属性值排列顺序,依次建立第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;
数据传输单元,数据传输单元用于基于地址映射关系,将第一数据集合传输至GPU进行存储。
在本实施例中,本申请在CPU向GPU传输数据之时使用地址管理模块改变了数据结构,使得传输到GPU中的数据的存储结构也发生了改变,极大地提高GPU的内存带宽和减少GPU缓存的浪费。
如上即为本申请的实施例。上述实施例以及实施例中的具体参数仅是为了清楚表述申请的验证过程,并非用以限制本申请的专利保护范围,本申请的专利保护范围仍然以其权利要求书为准,凡是运用本申请的说明书及附图内容所作的等同结构变化,同理均应包含在本申请的保护范围内。
Claims (7)
1.CPU与GPU间的数据传输方法,其特征在于,包括:
获取CPU需要传输的第一数据集合,所述第一数据集合包括若干具有同一类名的类数据;
对所述第一数据集合中的类数据进行属性合并,获得第二数据集合;
基于所述第二数据集合中的属性值排列顺序,依次建立所述第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;
基于所述地址映射关系,将所述第一数据集合传输至所述GPU进行存储;
其中,对所述第一数据集合中的类数据进行属性合并,获得第二数据集合包括:
获取所述类数据的属性列表,所述属性列表包括所述类数据具有的若干属性名称;
依次提取所述属性列表中的属性名称,并基于所述属性名称,依次提取所述第一数据集合中相应属性名称的属性值;
将提取出的属性值按序排列,获得所述第二数据集合。
2.根据权利要求1所述的CPU与GPU间的数据传输方法,其特征在于:
所述GPU按照所述第二数据集合中的属性值排列顺序,将所述第一数据集合中的属性值依序存储在GPU内存的存储空间中。
3.根据权利要求1所述的CPU与GPU间的数据传输方法,其特征在于,在基于所述第二数据集合中的属性值排列顺序,依次建立所述第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系之前,还包括:
计算所述第一数据集合需要占用的内存大小;
基于所述内存大小,所述GPU分配用于存储所述第一数据集合的内存空间。
4.根据权利要求1所述的CPU与GPU间的数据传输方法,其特征在于:
将所述地址映射关系进行存储,所述地址映射关系基于所述第一数据集合中类数据的类名作为索引。
5.根据权利要求4所述的CPU与GPU间的数据传输方法,其特征在于,在获取CPU需要传输的第一数据集合之后,还包括:
获取所述第一数据集合中类数据的类名;
查找所述类名是否具有对应的已存储的地址映射关系;
若所述类名具有对应的已存储的地址映射关系,则基于已存储的地址映射关系,将所述第一数据集合传输至所述GPU进行存储。
6.根据权利要求5所述的CPU与GPU间的数据传输方法,其特征在于:
若所述类名不具有对应的已存储的地址映射关系,则转至对所述第一数据集合中的类数据进行属性合并,获得第二数据集合的步骤。
7.一种计算机设备,其特征在于,包括CPU、GPU和地址管理模块,所述地址管理模块包括:
数据读取单元,所述数据读取单元用于获取CPU需要传输的第一数据集合,所述第一数据集合包括若干具有同一类名的类数据;
属性合并单元,所述属性合并单元用于对所述第一数据集合中的类数据进行属性合并,获得第二数据集合;
地址映射单元,所述地址映射单元用于基于所述第二数据集合中的属性值排列顺序,依次建立所述第一数据集合中对应属性值在CPU中内存地址与GPU内存地址的地址映射关系;
数据传输单元,所述数据传输单元用于基于所述地址映射关系,将所述第一数据集合传输至所述GPU进行存储;
其中,对所述第一数据集合中的类数据进行属性合并,获得第二数据集合包括:
获取所述类数据的属性列表,所述属性列表包括所述类数据具有的若干属性名称;
依次提取所述属性列表中的属性名称,并基于所述属性名称,依次提取所述第一数据集合中相应属性名称的属性值;
将提取出的属性值按序排列,获得所述第二数据集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211134216.8A CN115237605B (zh) | 2022-09-19 | 2022-09-19 | Cpu与gpu间的数据传输方法及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211134216.8A CN115237605B (zh) | 2022-09-19 | 2022-09-19 | Cpu与gpu间的数据传输方法及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115237605A CN115237605A (zh) | 2022-10-25 |
CN115237605B true CN115237605B (zh) | 2023-03-28 |
Family
ID=83681551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211134216.8A Active CN115237605B (zh) | 2022-09-19 | 2022-09-19 | Cpu与gpu间的数据传输方法及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237605B (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8473900B2 (en) * | 2009-07-01 | 2013-06-25 | Advanced Micro Devices, Inc. | Combining classes referenced by immutable classes into a single synthetic class |
US20140129806A1 (en) * | 2012-11-08 | 2014-05-08 | Advanced Micro Devices, Inc. | Load/store picker |
CN103019949B (zh) * | 2012-12-27 | 2015-08-19 | 华为技术有限公司 | 一种写合并属性内存空间的分配方法及装置 |
CN104156268B (zh) * | 2014-07-08 | 2017-07-07 | 四川大学 | 一种GPU上MapReduce的负载分配和线程结构优化方法 |
CN109919166B (zh) * | 2017-12-12 | 2021-04-09 | 杭州海康威视数字技术股份有限公司 | 获取属性的分类信息的方法和装置 |
CN109902059B (zh) * | 2019-02-28 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种cpu与gpu之间的数据传输方法 |
CN109992385B (zh) * | 2019-03-19 | 2021-05-14 | 四川大学 | 一种基于任务均衡调度的gpu内部能耗优化方法 |
CN114546491A (zh) * | 2021-11-04 | 2022-05-27 | 北京壁仞科技开发有限公司 | 数据操作方法、数据操作装置、数据处理器 |
CN114265849B (zh) * | 2022-02-28 | 2022-06-10 | 杭州广立微电子股份有限公司 | 数据聚合方法及*** |
-
2022
- 2022-09-19 CN CN202211134216.8A patent/CN115237605B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115237605A (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | NUMA-aware shared-memory collective communication for MPI | |
CN106991011B (zh) | 基于cpu多线程与gpu多粒度并行及协同优化的方法 | |
US6816947B1 (en) | System and method for memory arbitration | |
US6785888B1 (en) | Memory allocator for a multiprocessor computer system | |
EP3639144B1 (en) | Memory management in non-volatile memory | |
US9086920B2 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
WO2013048413A1 (en) | Cache and/or socket sensitive multi-processor cores breadth-first traversal | |
US8090911B2 (en) | Selecting a target number of pages for allocation to a partition | |
US20140115291A1 (en) | Numa optimization for garbage collection of multi-threaded applications | |
US11928061B2 (en) | Cache management method and apparatus | |
CN115237605B (zh) | Cpu与gpu间的数据传输方法及计算机设备 | |
US9405470B2 (en) | Data processing system and data processing method | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
US7406554B1 (en) | Queue circuit and method for memory arbitration employing same | |
CN115794368A (zh) | 业务***、内存管理方法及装置 | |
JPH02162439A (ja) | 共有メモリのフリーリスト管理方式 | |
KR20220142059A (ko) | 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법 | |
US7073004B2 (en) | Method and data processing system for microprocessor communication in a cluster-based multi-processor network | |
US20240211302A1 (en) | Dynamic provisioning of portions of a data processing array for spatial and temporal sharing | |
WO2023241655A1 (zh) | 数据处理方法、装置、电子设备以及计算机可读存储介质 | |
CN117931721A (zh) | 一种众核芯片以及众核芯片的数据获取方法 | |
Aude et al. | The MULTIPLUS/MULPLIX parallel processing environment | |
CN116701068A (zh) | 内存分配方法及装置、电子设备和存储介质 | |
US20130262790A1 (en) | Method, computer program and device for managing memory access in a multiprocessor architecture of numa type | |
CN117271107A (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 |