CN109408450A - 一种数据处理的方法、***、协处理装置和主处理装置 - Google Patents
一种数据处理的方法、***、协处理装置和主处理装置 Download PDFInfo
- Publication number
- CN109408450A CN109408450A CN201811129587.0A CN201811129587A CN109408450A CN 109408450 A CN109408450 A CN 109408450A CN 201811129587 A CN201811129587 A CN 201811129587A CN 109408450 A CN109408450 A CN 109408450A
- Authority
- CN
- China
- Prior art keywords
- data
- processing unit
- processed
- processing
- length
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (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
本发明实施例涉及大数据领域,公开了一种数据处理的方法、***、协处理装置和主处理装置。本发明中的方法,应用于协处理装置,包括:接收主处理装置发送的处理请求、第一数据以及位置信息数据,其中,第一数据是由主处理装置对第二数据进行序列化处理后得到;根据位置信息数据,确定第一数据中每个待处理元素在存储空间中的位置;按照确定的每个待处理元素在存储空间中的位置,同时从存储空间中读取第一数据中的每个待处理元素;根据处理请求,对读取的每个待处理元素进行处理,并将处理结果传输至主处理装置。本发明的数据处理的方法,提高主处理装置与协处理装置之间的数据交换的速度,提高主处理装置对协处理装置的利用率。
Description
技术领域
本发明实施例涉及大数据领域,特别涉及一种数据处理的方法、***、协处理装置和主处理装置。
背景技术
随着分布式***基础架构(如:海杜普,简称“Hadoop”)技术的出现,大数据技术被广泛运用。大数据是将计算资源与数据资源分发到不同的计算设备上进行计算,并利用处理器的多线程技术,和多个主机组成的集群计算能力,实现强大的计算和存储功能。
当今大数据技术被广泛应用,对于速度的需求不断增加,除了CPU芯片性能在不断提升之外,还可以利用协处理芯片帮助CPU芯片处理数据。以现场可编程门阵列(Field-Programmable Gate Array,简称“FPGA”)芯片和图形处理器(Graphics Processing Unit,简称“GPU”)芯片作为其中的代表。其中,GPU芯片普遍用于图像的3D加速计算,如今经历了深度学习的兴起,俨然成为深度学习方面的主要加速处理器。
协处理器芯片,一般拥有独立于CPU芯片的内存区域,通过对自己内存区域的数据操作,获得计算所需要的数据,并利用自身的内存区域存储结果。通过总线通信,协处理器芯片的内存空间与CPU芯片的内存空间可以进行数据交换。
通常大数据引擎包括多台设备,每台设备包括一个主处理芯片和至少一个协处理芯片。发明人发现现有技术中至少存在如下问题:目前的主处理芯片与协处理芯片进行数据交换的速度非常慢,同时协处理芯片处理主处理芯片发送的数据非常耗时,完全失去了协处理芯片帮助主处理芯片处理数据的意义。
可见,如何利用协处理芯片提高主处理器处理数据的速度和效率,提高主处理芯片与协处理芯片之间的数据交换的速度,是需要解决的问题。
发明内容
本发明实施方式的目的在于提供一种数据处理的方法、***、协处理装置和主处理装置,提高主处理装置与协处理装置之间的数据交换的速度,提高主处理装置对协处理装置的利用率。
为解决上述技术问题,本发明的实施方式提供了一种数据处理的方法,应用于协处理装置,包括:接收主处理装置发送的处理请求、第一数据以及位置信息数据,其中,第一数据是由主处理装置对第二数据进行序列化处理后得到;根据位置信息数据,确定第一数据中每个待处理元素在存储空间中的位置;按照确定的每个待处理元素在存储空间中的位置,同时从存储空间中读取第一数据中的每个待处理元素;根据处理请求,对读取的每个待处理元素进行处理,并将处理结果传输至主处理装置。
本发明的实施方式还提供了一种数据处理的方法,包括:应用于主处理装置,包括:确定第一数据,并在确定第一数据的过程中,构建第一数据的位置信息数据,其中,第一数据是对第二数据进行序列化处理后得到;将处理请求、第一数据以及位置信息数据发送至协处理装置,其中,协处理装置将处理后的处理结果返回主处理装置;接收所述处理结果;根据处理结果,确定第二数据的处理结果。
本发明的实施方式还提供了一种协处理装置,包括:至少一个处理装置;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的应用于协处理装置的数据处理的方法。
本发明的实施方式还提供了一种主处理装置,包括:至少一个处理装置;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的应用于主处理装置的数据处理的方法
本发明的实施方式还提供了一种数据处理的***,包括上述的协处理装置和上述的主处理装置。
本发明实施方式相对于现有技术而言,由于协处理装置无法直接获得非基本类型对象的头指针,需要通过回调非基本类型对象才能获得该对象的内容,例如,若主处理装置采用Java语言编写,若将非基本类型对象的数据发送给协处理装置处理,需要通过Java本地接口在C++中回调Java非基本类型对象,获取到该对象的内容。但是通过回调的方式获得非基本类型对象的内容是非常耗时的,影响了主处理装置与协处理装置之间的数据交换的速度,本实施方式中的第一数据是由主处理装置对第二数据进行序列化处理后得到,而序列化处理后的数据为基本类型的数据,使得协处理装置无需通过回调方式获取主处理装置中的非基本类型的内容,从而大大加快了协处理装置接收第一数据的速度。同时,由于协处理装置采用多线程的运行方式,通过位置信息数据使得协处理装置可以从自身的存储空间中同时提取每个待处理元素,大大加快了对数据的提取速度,从而加快了对每个待处理元素的处理速度,提升了主处理装置与协处理装置之间数据交换的速度,提高主处理装置对协处理装置的利用率。
另外,位置信息数据包括:长度数组和偏移数组;长度数组中的每个长度元素为与长度元素具有相同位置标号的待处理元素的字节长度;偏移数组的每个偏移元素为与偏移元素具有相同位置标号的待处理元素在存储空间的起始位置,相对于第一数据在存储空间的起始位置的偏移数值。通过偏移数组可以用于指示待处理元素在存储空间的偏移位置,长度数组可以获知每个待处理元素的字节长度,从而使得协处理装置可以通过偏移元素和对应的长度即可读取该待处理元素,读取速度快。
另外,偏移数组的第i个偏移元素为第i-1个偏移元素与第i-1个长度元素之和,其中,偏移数组中的第一个偏移元素为0,且i为大于1的整数。提供一种快速确定偏移数组的方式。
另外,按照确定的每个待处理元素在存储空间中的位置,同时从存储空间中读取第一数据中的每个待处理元素,具体包括:读取每个待处理元素的过程如下:以待处理元素在存储空间中的起始位置为起点,按照待处理元素对应的长度读取数据,并将读取的数据作为待处理元素,其中,待处理元素对应的长度为与待处理元素具有相同位置标号的长度元素所指示的长度值。通过与每个待处理元素具有相同位置标号的偏移元素和长度元素,可以直接从存储空间中读取数据,而无需从顺次读取数据,大大加快了数据的读取速度。
另外,根据处理请求,对读取的每个待处理元素进行处理,具体包括:将每个待处理元素作为键值,并将与每个待处理元素具有相同位置标号的长度元素以及偏移元素作为键值对应的数值;按照处理请求,对每个键值以及与键值对应的数值进行处理。通过键值对的方式对待处理元素进行处理,同时可以记录偏移数组和长度数组的变化情况,使得在特定处理请求下通过使用变化的偏移数组和长度数组,快速提取处理后的数据。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式提供的一种数据处理的方法的具体流程示意图;
图2是根据本发明第二实施方式提供的一种数据处理的方法的具体流程示意图;
图3是根据本发明第三实施方式提供的一种数据处理的方法的具体流程示意图;
图4是根据本发明第四实施方式中构建第一数据的位置信息数据具体流程示意图;
图5是根据本发明第五实施方式提供的一种协处理装置的结构示意图;
图6是根据本发明第六实施方式提供的一种主处理装置的结构示意图;
图7是根据本发明第七实施方式提供的一种数据处理的***中数据从主处理装置传输至协处理装置的示意图;
图8是根据本发明第七实施方式提供的一种数据处理的***中数据从协处理装置传输至主处理装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种数据处理的方法。该数据处理的方法应用于协处理装置中,如GPU芯片、FPGA芯片等。该数据处理的方法,具体流程如图1所示。
步骤101:接收主处理装置发送的处理请求、第一数据以及位置信息数据,其中,第一数据是由主处理装置对第二数据进行序列化处理后得到。
具体的说,协处理装置和主处理装置之间的数据通过高速串行计算机扩展总线(如:peripheral component interconnect express,简称“PCIe”总线)传输。第二数据为主处理装置中的待处理数据,第二数据的类型不做限定,但需要确保可以进行序列化处理,例如,第二数据可以是非基本类型的对象数据。主处理装置对第二数据进行序列化处理后得到第一数据,经过序列化处理后,第一数据的类型为基本类型。本领域技术人员可以理解的是,序列化处理后的数据形式为数组。其中,位置信息数据是由主处理装置确定。
一个具体的实现中,该位置信息数据包括长度数组和偏移数组,长度数组中的每个长度元素为与长度元素具有相同位置标号的待处理元素的字节长度;偏移数组的每个偏移元素为与偏移元素具有相同位置标号的待处理元素在存储空间的起始位置,相对于第一数据在存储空间的起始位置的偏移数值。其中,偏移数组的第i个偏移元素为第i-1个偏移元素与第i-1个长度元素之和,其中,偏移数组中的第一个偏移元素为0,且i为大于1的整数。本领域的技术人员可以理解的是,在实际应用中位置信息数据还可以为其他形式,此处不作限制。
具体的说,第一数据中包含的待处理元素的个数与长度数组中的长度元素个数相同,与偏移数组中的偏移元素个数也相同。每个待处理元素都有唯一对应的长度元素和偏移元素。其中,偏移数组中的除了第一个偏移元素外,其余的偏移元素均是根据长度元素确定的。
下面将以一个具体的例子说明每一个长度元素和偏移元素的含义和确定方式。
例如,若第一数据为数组类型,以test={abc,de,f}表示,由于第一数据为序列化后的数据,该第一数据中的每个元素是由字符构成,每个字符在java中的所占字节长度为1,因此,可直接根据每个元素中包含的字符个数确定字节长度,则abc的字节长度为3字节,de的字节长度为2字节,f的字节长度为1字节;且该第一数据test在主处理装置的存储空间的位置为X,test[0]=abc,test[1]=de,test[2]=f。那么,长度数组objSize[0]的值为test[0]的字节长度,即objSize[0]=3,同理,objSize[1]=2,objSize[2]=1;偏移数组objOffSet[0]为偏移数组的第一位,即objOffSet[0]的值为0,objOffSet[1]的值为objOffSet[0]的值加上objSize[0]的值,即objOffSet[1]=0+3=3,同理,objOffSet[2]=3+2=5。objOffSet[0]=0,表明第一个待处理元素相对于当前存储空间中位置X的偏移为0。其中,待处理元素test[0]分别与objSize[0]和objOffSet[0]对应。
需要说明的是,主处理装置可以指定第一数据在协处理装置的存储空间中的存储位置以及空间范围,空间范围即为第一数据的长度。
步骤102:根据位置信息数据,确定第一数据中每个待处理元素在存储空间中的位置。
具体的说,协处理装置将接收到的第一数据存储在自身的存储空间中,协处理装置可以获知第一数据在自身存储空间中的起始位置(即第一数据的头指针),根据第一数据在协处理装置自身存储空间的起始位置以及位置信息数据中的每个偏移元素的值可以确定出每个待处理元素的起始位置,根据每一个长度元素,可以确定每个待处理元素的空间范围。例如,第一数据为test={abc,de,f},且在协处理装置的存储空间的起始位置为P,那么根据偏移数组objOffSet={0,3,5},即可确定test[0]为的起始位置为P,test[1]在起始位置为P+3,test[2]的起始位置为P+5,根据长度数组objSize={3,2,1},由于第一数据为字符数据,通常第一字符占一个字节,即可以确定出test[0]的空间范围为3字节,test[1]的空间范围为2字节,test[2]的空间范围为1字节。
步骤103:按照确定的每个待处理元素在存储空间中的位置,同时从存储空间中读取第一数据中的每个待处理元素。
具体的说,协处理装置采用多线程的处理方式,在确定了每个待处理元素在存储空间中的位置,即可通过多线程的运行方式,同时从存储空间中读取每个待处理元素。其中,读取每个待处理元素的过程如下:以待处理元素在存储空间中的起始位置为起点,按照待处理元素对应的长度读取数据,并将读取的数据作为待处理元素,其中,待处理元素对应的长度为与待处理元素具有相同位置标号的长度元素所指示的长度值。
例如,第一数据为test={abc,de,f},偏移数组为objOffSet={0,3,5},长度数组为objSize={3,2,1},确定的test[0]的起始位置为P,那么线程A在T1时刻以P位置为起点,读取3字节的数据,将该数据记为待处理数据1;线程B在T1时刻以P+3位置为起点,读取2字节的数据,将该数据记为待处理数据2,线程C在T3时刻以P+5的位置为起点,读取1字节的数据,将该数据记为待处理数据3。即协处理装置通过3个线程即可在同一时刻读取第一数据中全部的待处理元素。
不同的线程从存储空间中读取待处理数据,使得每个线程之间读取数据互不干扰,可以大大地提高对数据的读取速度。
步骤104:根据处理请求,对读取的每个待处理元素进行处理。
具体的说,处理请求可以是排序、求和等请求,本实施方式中不对该处理请求做限制,当然,由于处理请求不同,对每个待处理元素进行处理的方式也不相同,但是,处理的流程是大致相同的,本实施方式中以对数值进行排序的请求为例,详细说明对读取的每个待处理元素进行处理的过程。
由于读取的每个待处理元素为字符,无法进行计算,将读取的每个待处理元素进行反序列化,将每个待处理元素转化为数值形式,之后对反序列化处理后的待处理元素进行排序处理。例如,读取待处理元素分别为“abc”、“de”、“f”,首先分别对“abc”、“de”、“f”进行分序列化,假设序列化后的待处理元素为:“5000”、“800”、“20”,之后再对“5000”、“800”、“20”进行从小到大的排序。
步骤105:将处理结果传输至主处理装置。
具体的说,可以将排序好的数据(即处理结果)直接传输至主处理装置。
本发明实施方式相对于现有技术而言,由于协处理装置无法直接获得非基本类型对象的头指针,需要通过回调非基本类型对象才能获得该对象的内容,例如,若主处理装置采用Java语言编写,若将非基本类型对象的数据发送给协处理装置处理,需要通过Java本地接口在C++中回调Java非基本类型对象,获取到该对象的内容。但是通过回调的方式获得非基本类型对象的内容是非常耗时的,影响了主处理装置与协处理装置之间的数据交换的速度,本实施方式中的第一数据是由主处理装置对第二数据进行序列化处理后得到,而序列化处理后的数据为基本类型的数据,使得协处理装置无需通过回调方式获取主处理装置中的非基本类型的内容,从而大大加快了协处理装置接收第一数据的速度。同时,由于协处理装置采用多线程的运行方式,通过位置信息数据使得协处理装置可以从自身的存储空间中同时提取每个待处理元素,大大加快了对数据的提取速度,从而加快了对每个待处理元素的处理速度,提升了主处理装置与协处理装置之间数据交换的速度,提高主处理装置对协处理装置的利用率。
本发明的第二实施方式涉及一种数据处理的方法。第二实施方式与第一实施方式大致相同,主要区别在于本实施方式是对步骤104:根据处理请求,对读取的每个待处理元素进行处理的方式的细化。该数据处理的方法的具体流程如图2所示,
步骤201:接收主处理装置发送的处理请求、第一数据以及位置信息数据,其中,第一数据是由主处理装置对第二数据进行序列化处理后得到。
步骤202:根据位置信息数据,确定第一数据中每个待处理元素在存储空间中的位置
步骤203:按照确定的每个待处理元素在存储空间中的位置,同时从存储空间中读取第一数据中的每个待处理元素。
步骤204:将每个待处理元素作为键值,并将与每个待处理元素具有相同位置标号的长度元素以及偏移元素作为键值对应的数值。
具体的说,由于每个待处理元素都有唯一对应的偏移元素以及唯一对应的长度元素,因此,本实施方式中采用键值对(Key-Value)的形式,按照处理请求对待处理元素进行处理。例如,若第一数据为test={abc,de,f},偏移数组为objOffSet={0,3,5},长度数组为objSize={3,2,1},读取的待处理元素分别为“abc”、“de”、“f”,那么“abc”对应的长度元素为3,偏移元素为0,“de”对应的长度元素为2,偏移元素为3,“f”对应的长度元素为1,偏移元素为5,KEY1=abc,Value1={3,0};KEY2=de,Value2={2,3};KEY3=f,Value3={1,5},其中,KEY1与Value1,KEY2与Value2,KEY3与Value3分别组成一个键值对,按照处理请求对KEY对应的待处理元素进行处理。
步骤205:按照处理请求,对每个键值以及与键值对应的数值进行处理。
具体的说,按照处理请求,对每个键值进行处理,同时,由于每个键值对应的数值按照键值的移动变化,例如,三组键值对分别为KEY1=abc,Value1={3,0};KEY2=de,Value2={2,3};KEY3=f,Value3={1,5},且,“abc”、“de”、“f”进行分序列化后的待处理元素分别为:“5000”、“800”、“20”,若处理请求为升序排列,那么,对KEY中的待处理元素进行排序,同时与KEY对应的Value也进行同样的排序,最后的到的结果为“20”、“800”、“5000”,则对应的长度数组为objSize={1,2,3},偏移数组变为objOffSet={5,3,0}。
步骤206:将处理结果传输至主处理装置。
具体的说,若处理请求中存在排序的命令,可以仅将处理后的待处理元素所对应的偏移数组以及长度数组作为处理结果返回主处理装置,主处理装置按照偏移数组中的顺序,依次从序列化处理后得到的第一数据中读取数据,并将读取的数据进行反序列化处理,即可得到排序后的数据(即第二数据经过排序处理后的结果)。此时主处理装置可以再对得到的结果进行进一步的处理(如:去重等)。当然,可以理解的是,本实施方式中也不限于排序请求,还可以是其他的请求,例如,删除。
需要说明的是,本实施方式中的步骤201至步骤203、步骤206与第一实施方式中的步骤101至步骤103、以及步骤104大致相同,此处不再赘述。
本实施方式中提供的数据处理的方法,由于主处理装置对数据进行排序会花费大量的时间,因而将排序这样会花费大量时间的处理交给协处理装置,由协处理装置进行处理,大大缩短了主处理装置对数据处理的时间,同时,在本实施方式中,由于在采用KV处理的方式,使得协处理装置在结束处理后,可以无需返回待处理元素处理后的结果,仅需返回待处理元素处理后对应的长度数组和偏移数组即可,进一步缩短了协处理装置和主处理装置的传输的时间。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第三实施方式涉及一种数据处理的方法,该数据处理的方法应用于主处理装置,如CPU芯片等。该数据处理的方法的具体流程如图3所示。
步骤301:确定第一数据,并在确定第一数据的过程中,构建第一数据的位置信息数据,其中,第一数据是对第二数据进行序列化处理后得到。
具体的说,第二数据为主处理装置需要进行处理的数据,可以是非基本类型的对象数据。由于协处理装置不能处理非基本类型的数据,因而,主处理装置对第二数据进行序列化处理,得到第一数据。且由于协处理装置采用多线程处理数据的方式,主处理装置在对第二数据进行序列化的过程中,记录序列化后数据中每个待处理元素的位置信息数据。便于协处理装置在接收到第一数据后,可以根据位置信息数据,从自身的存储空间中读取每个待处理元素。
为了提高对第二数据的处理速度,在对第二数据序列化的过程中,进行长度数组和偏移数组的确定。
步骤302:将处理请求、第一数据以及位置信息数据发送至协处理装置,其中,协处理装置将处理后的处理结果返回主处理装置。
具体的说,主处理装置的存储空间和协处理装置的存储空间之间采用PCIe总线连接,通过PCIe总线进行通信。主处理装置可以指定第一数据在协处理装置存储空间的存储位置和空间范围。
步骤303:接收处理结果。
步骤304:根据处理结果,确定第二数据的处理结果。
具体的说,接收协处理装置对第一数据的处理结果,根据该处理结果以及发送的处理请求,确定该第二数据的处理结果。若需要对第二数据进行排序处理,则发送的处理请求为排序请求,主处理装置可以接收协处理装置返回的处理的位置信息数据,该处理的位置信息数据是根据处理后的待处理元素确定的,根据处理的位置信息数据,对第一数据进行读取,并进行反序列化处理,即可得到该第二数据的处理结果。若需要对第二数据中的元素进行求和,那么发送的处理请求可以是求和请求,协处理装置将求和结果返回主处理装置,主处理装置将该求和结果作为第二数据的处理结果。实际应用中,可以根据不同的处理请求,返回对应的处理结果,不限于本实施方式所列举的情况。
本发明实施方式相对于现有技术而言,由主处理装置对第二数据进行序列化处理后得到第一数据,而序列化处理后的数据为基本类型的数据,使得协处理装置无需通过回调方式获取主处理装置中的非基本类型的内容,从而大大加快了协处理装置接收第一数据的速度。同时,由于协处理装置采用多线程的运行方式,通过位置信息数据使得协处理装置可以从自身的存储空间中同时提取每个待处理元素,大大加快了对数据的提取速度,从而加快了对每个待处理元素的处理速度。
本发明第四实施方式涉及一种数据处理的方法。第四实施方式是对第三实施方式的进一步细化,具体说明了位置信息数据长度数组和偏移数组,以及对位置信息数据的确定方式。其中,确定第一数据,并在确定第一数据的过程中,构建第一数据的位置信息数据的具体流程,如图4所示。
步骤401:获取第一数据中的一个待处理元素。
具体的说,在确定第一数据过程中,每得到一个序列化的待处理元素,就获取该待处理元素。例如,数据a为序列化后的待处理元素,数据2和数据3为未序列化的元素,数据a即为第一数据中的一个待处理元素,获取该数据a。
步骤402:获取该待处理元素所包含的字节长度,并将字节长度作为长度数组中具有与待处理元素相同位置标号的长度元素。
具体的说,确定该待处理元素在第一数据中的位置标号,将该待处理元素所包含的字节长度作为长度数组中与该位置标号相同的长度元素的值。例如,第一数据test={abc,de,f},“abc”的位置标号为0,字节长度为3,则长度数组objSize[0]的值即为3。
步骤403:将第i-1个偏移元素与第i-1个长度元素之和,作为偏移数组中具有与待处理元素相同位置标号的偏移元素,其中,偏移数组中的第一个偏移元素为0,且i为大于1的整数。
具体的说,此处与第一实施方式中的步骤101中的偏移数组的确定方式相同,此处不再进行赘述。
步骤404:判断是否还存在未处理的待处理元素,若是,则返回步骤401,否则,结束该流程。
本实施方式提供的数据处理的方法,直接通过与每个待处理元素具有相同位置标号的偏移元素和长度元素,可以直接从存储空间中读取数据,而无需从顺次读取数据,大大加快了数据的读取速度。
本发明第五实施方式涉及一种协处理装置50,包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行上述第一实施方式或第二实施方式中数据处理的方法。具体的结构如图5所示。
其中,存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器501和存储器502的各种电路链接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本发明第六实施方式涉及一种主处理装置60,包括:至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器执行,以使至少一个处理器601能够执行上述第三实施方式或第四实施方式中数据处理的方法。具体的结构如图6所示。
其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路链接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本发明第七实施方式涉及一种数据处理的***,该***包括协处理装置和主处理装置。
下面将详细说明数据处理的过程:主处理装置对第二数据进行序列化处理,确定第一数据,并在确定第一数据的过程中,构建第一数据的位置信息数据,通过PCIe总线将处理请求、第一数据以及位置信息数据发送至协处理装置,协处理装置接收主处理装置发送的处理请求、第一数据以及位置信息数据,并根据位置信息数据,确定第一数据中每个待处理元素在存储空间中的位置;协处理装置按照确定的每个待处理元素在存储空间中的位置,同时从存储空间中读取第一数据中的每个待处理元素;根据处理请求,对读取的每个待处理元素进行处理,并将处理结果通过PCIe总线传输至主处理装置,主处理装置根据处理结果,确定第二数据的处理结果。
下面以一个具体的例子具体说明该***对数据处理的过程。
假设该***采用Java语言编写,主处理芯片中包括Java接口模块以及C++控制模块,其中,Java接口模块用于对第二数据进行序列化,以及对序列化的第一数据进行反序列化;C++控制模块用于通过Java本地接口从Java接口模块获得序列化的第一数据,并将第一数据发送至协处理装置,或者接收协处理装置返回的处理结果,并将返回的处理结果传输至Java接口模块。协处理装置以GPU芯片、处理请求以排序为例进行说明。如图7所示,将非基本类型的对象数据通过Java接口模块进行序列化,得到字符“char”类型的第一数据,并构建该第一数据的偏移数组和长度数组。Java接口模块将第一数据、偏移数组以及长度数组发送至C++控制模块,C++控制模块再将第一数据、偏移数组以及长度数组通过PCIe总线传输至GPU芯片,GPU芯片对char数组中的每个待处理元素进行排序,得到处理结果。
之后,如图8所示,GPU芯片,将处理结果返回到C++控制模块,C++控制模块将对第一数据的排序结果返回Java接口模块,Java接口模块对排序后的第一数据进行反序列化处理,即可将该反序列化处理后的结果作为该第二数据进行排序处理的结果。
需要说明的是,该数据处理***可运用于大数据引擎,提高大数据引擎处理数据的速度。
不难发现,本实施方式为与第一实施方式和第三实施方式相对应的***实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种数据处理的方法,其特征在于,应用于协处理装置,包括:
接收主处理装置发送的处理请求、第一数据以及位置信息数据,其中,所述第一数据是由所述主处理装置对第二数据进行序列化处理后得到;
根据所述位置信息数据,确定所述第一数据中每个待处理元素在所述存储空间中的位置;
按照确定的每个待处理元素在所述存储空间中的位置,同时从所述存储空间中读取所述第一数据中的每个待处理元素;
根据所述处理请求,对读取的所述每个待处理元素进行处理,并将处理结果传输至所述主处理装置。
2.根据权利要求1所述的数据处理的方法,其特征在于,所述位置信息数据包括:长度数组和偏移数组;
所述长度数组中的每个长度元素为与所述长度元素具有相同位置标号的待处理元素的字节长度;
所述偏移数组的每个偏移元素为与所述偏移元素具有相同位置标号的待处理元素在所述存储空间的起始位置,相对于所述第一数据在所述存储空间的起始位置的偏移数值。
3.根据权利要求2所述的数据处理的方法,其特征在于,所述偏移数组的第i个偏移元素为第i-1个偏移元素与第i-1个长度元素之和,其中,偏移数组中的第一个偏移元素为0,且i为大于1的整数。
4.根据权利要求2或3所述的数据处理的方法,其特征在于,按照确定的每个待处理元素在所述存储空间中的位置,同时从所述存储空间中读取所述第一数据中的每个待处理元素,具体包括:
读取每个待处理元素的过程如下:以所述待处理元素在所述存储空间中的起始位置为起点,按照所述待处理元素对应的长度读取数据,并将读取的数据作为所述待处理元素,其中,所述待处理元素对应的长度为与所述待处理元素具有相同位置标号的长度元素所指示的长度值。
5.根据权利要求2或3所述的数据处理的方法,其特征在于,根据所述处理请求,对读取的所述每个待处理元素进行处理,具体包括:
将所述每个待处理元素作为键值,并将与每个待处理元素具有相同位置标号的长度元素以及偏移元素作为所述键值对应的数值;
按照所述处理请求,对每个键值以及与所述键值对应的数值进行处理。
6.一种数据处理的方法,其特征在于,应用于主处理装置,包括:
确定第一数据,并在确定所述第一数据的过程中,构建所述第一数据的位置信息数据,其中,所述第一数据是对第二数据进行序列化处理后得到;
将处理请求、第一数据以及位置信息数据发送至协处理装置,其中,所述协处理装置将处理后的处理结果返回所述主处理装置;
接收所述处理结果;
根据所述处理结果,确定所述第二数据的处理结果。
7.根据权利要求6所述的数据处理的方法,其特征在于,所述位置信息数据包括:长度数组和偏移数组;
在确定所述第一数据的过程中,构建所述第一数据的位置信息数据,具体包括:
对所述第一数据中的每个待处理元素进行如下处理:
获取所述待处理元素所包含的字节长度,并将所述字节长度作为所述长度数组中具有与所述待处理元素相同位置标号的长度元素;
将第i-1个偏移元素与第i-1个长度元素之和,作为所述偏移数组中具有与所述待处理元素相同位置标号的偏移元素,其中,偏移数组中的第一个偏移元素为0,且i为大于1的整数。
8.一种协处理装置,其特征在于,包括:
至少一个处理装置;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-5任一所述的数据处理的方法。
9.一种主处理装置,其特征在于,包括:
至少一个处理装置;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求6-7任一所述的数据处理的方法。
10.一种数据处理的***,其特征在于,包括如权利要求8所述的协处理装置和如权利要求9所述的主处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811129587.0A CN109408450B (zh) | 2018-09-27 | 2018-09-27 | 一种数据处理的方法、***、协处理装置和主处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811129587.0A CN109408450B (zh) | 2018-09-27 | 2018-09-27 | 一种数据处理的方法、***、协处理装置和主处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408450A true CN109408450A (zh) | 2019-03-01 |
CN109408450B CN109408450B (zh) | 2021-03-30 |
Family
ID=65465485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811129587.0A Active CN109408450B (zh) | 2018-09-27 | 2018-09-27 | 一种数据处理的方法、***、协处理装置和主处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408450B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287190A (zh) * | 2019-06-25 | 2019-09-27 | 四川深度在线广告传媒有限公司 | 一种大数据分析自定义编码储存结构及编码、解码方法 |
CN111596947A (zh) * | 2020-04-09 | 2020-08-28 | 北京五八信息技术有限公司 | 一种数据处理的方法及装置 |
CN111931200A (zh) * | 2020-07-13 | 2020-11-13 | 车智互联(北京)科技有限公司 | 一种数据序列化方法、移动终端和可读存储介质 |
CN112644180A (zh) * | 2020-12-17 | 2021-04-13 | 广州众诺电子技术有限公司 | 一种芯片启动方法、装置、存储介质和耗材芯片 |
CN113608889A (zh) * | 2021-07-13 | 2021-11-05 | 广州市百果园网络科技有限公司 | 消息数据处理方法、装置、设备和存储介质 |
CN114968010A (zh) * | 2021-02-26 | 2022-08-30 | Oppo广东移动通信有限公司 | 协处理芯片的启动方法、装置、存储介质及电子装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473121A (zh) * | 2013-08-20 | 2013-12-25 | 西安电子科技大学 | 一种基于云计算平台的海量图片并行处理方法 |
CN103543989A (zh) * | 2013-11-11 | 2014-01-29 | 镇江中安通信科技有限公司 | 一种面向大数据的针对可变长度特征提取的自适应并行处理方法 |
CN103559018A (zh) * | 2013-10-23 | 2014-02-05 | 东软集团股份有限公司 | 基于gpu计算的字符串匹配方法和*** |
CN104731569A (zh) * | 2013-12-23 | 2015-06-24 | 华为技术有限公司 | 一种数据处理方法及相关设备 |
US9286145B2 (en) * | 2010-11-10 | 2016-03-15 | International Business Machines Corporation | Processing data communications events by awakening threads in parallel active messaging interface of a parallel computer |
CN107102839A (zh) * | 2017-04-13 | 2017-08-29 | 青岛蓝云信息技术有限公司 | 一种基于硬件排序MapReduce的数据处理方法 |
CN107451070A (zh) * | 2016-06-01 | 2017-12-08 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法和服务器 |
CN107544937A (zh) * | 2016-06-27 | 2018-01-05 | 深圳市中兴微电子技术有限公司 | 一种协处理器、数据写入方法和处理器 |
CN110134639A (zh) * | 2019-04-19 | 2019-08-16 | 龙芯中科技术有限公司 | 一种设备信息存储位置识别方法和装置 |
-
2018
- 2018-09-27 CN CN201811129587.0A patent/CN109408450B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9286145B2 (en) * | 2010-11-10 | 2016-03-15 | International Business Machines Corporation | Processing data communications events by awakening threads in parallel active messaging interface of a parallel computer |
CN103473121A (zh) * | 2013-08-20 | 2013-12-25 | 西安电子科技大学 | 一种基于云计算平台的海量图片并行处理方法 |
CN103559018A (zh) * | 2013-10-23 | 2014-02-05 | 东软集团股份有限公司 | 基于gpu计算的字符串匹配方法和*** |
CN103543989A (zh) * | 2013-11-11 | 2014-01-29 | 镇江中安通信科技有限公司 | 一种面向大数据的针对可变长度特征提取的自适应并行处理方法 |
CN104731569A (zh) * | 2013-12-23 | 2015-06-24 | 华为技术有限公司 | 一种数据处理方法及相关设备 |
CN107451070A (zh) * | 2016-06-01 | 2017-12-08 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法和服务器 |
CN107544937A (zh) * | 2016-06-27 | 2018-01-05 | 深圳市中兴微电子技术有限公司 | 一种协处理器、数据写入方法和处理器 |
CN107102839A (zh) * | 2017-04-13 | 2017-08-29 | 青岛蓝云信息技术有限公司 | 一种基于硬件排序MapReduce的数据处理方法 |
CN110134639A (zh) * | 2019-04-19 | 2019-08-16 | 龙芯中科技术有限公司 | 一种设备信息存储位置识别方法和装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287190A (zh) * | 2019-06-25 | 2019-09-27 | 四川深度在线广告传媒有限公司 | 一种大数据分析自定义编码储存结构及编码、解码方法 |
CN111596947A (zh) * | 2020-04-09 | 2020-08-28 | 北京五八信息技术有限公司 | 一种数据处理的方法及装置 |
CN111931200A (zh) * | 2020-07-13 | 2020-11-13 | 车智互联(北京)科技有限公司 | 一种数据序列化方法、移动终端和可读存储介质 |
CN111931200B (zh) * | 2020-07-13 | 2024-02-23 | 车智互联(北京)科技有限公司 | 一种数据序列化方法、移动终端和可读存储介质 |
CN112644180A (zh) * | 2020-12-17 | 2021-04-13 | 广州众诺电子技术有限公司 | 一种芯片启动方法、装置、存储介质和耗材芯片 |
CN112644180B (zh) * | 2020-12-17 | 2021-08-03 | 广州众诺电子技术有限公司 | 一种芯片启动方法、装置、存储介质和耗材芯片 |
CN114968010A (zh) * | 2021-02-26 | 2022-08-30 | Oppo广东移动通信有限公司 | 协处理芯片的启动方法、装置、存储介质及电子装置 |
CN113608889A (zh) * | 2021-07-13 | 2021-11-05 | 广州市百果园网络科技有限公司 | 消息数据处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109408450B (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408450A (zh) | 一种数据处理的方法、***、协处理装置和主处理装置 | |
US11494681B1 (en) | Quantum instruction compiler for optimizing hybrid algorithms | |
JP2009015534A (ja) | リソース割当方法、リソース割当プログラム、および、リソース割当装置 | |
CN108304918A (zh) | 一种数据并行的深度学习的参数交换方法和*** | |
CN106776455B (zh) | 一种单机多gpu通信的方法及装置 | |
CN106202224B (zh) | 搜索处理方法及装置 | |
US20210149985A1 (en) | Method and apparatus for processing large-scale distributed matrix product | |
KR20210051604A (ko) | 딥러닝 분산 학습 시스템 및 동작 방법 | |
CN117785490B (zh) | 一种图神经网络模型的训练架构、方法、***及服务器 | |
CN113535258B (zh) | 一种Pattern文件加载方法及*** | |
CN111274241A (zh) | 用于并行处理地图数据的方法和装置 | |
CN116431562B (zh) | 一种基于加速处理器的多头注意力机制融合计算分配方法 | |
CN110941655A (zh) | 一种数据格式转换方法及装置 | |
Peng et al. | FA-Stack: A fast array-based stack with wait-free progress guarantee | |
CN116560629A (zh) | 一种数据传输对象的序列化方法、装置、介质和设备 | |
CN116089535A (zh) | 数据同步方法、装置、设备及存储介质 | |
CN109388371A (zh) | 一种数据的排序方法、***、协处理装置和主处理装置 | |
KR101969219B1 (ko) | 빈발 패턴 마이닝 방법 및 장치 | |
CN114651237A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN117725019B (zh) | 用于gpu集合通信的方法和计算*** | |
CN111611245B (zh) | 处理数据表的方法和*** | |
CN113297321B (zh) | 数据同步方法、装置、电子设备及计算机可读存储介质 | |
CN115730681B (zh) | 模型训练方法、装置、设备以及存储介质 | |
CN113568665B (zh) | 一种数据处理装置 | |
US20220391568A1 (en) | Deterministic netlist transformations in a multi-processor parallel computing system |
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 |