CN115080916B - 一种数据处理方法、装置、电子设备、计算机可读介质 - Google Patents
一种数据处理方法、装置、电子设备、计算机可读介质 Download PDFInfo
- Publication number
- CN115080916B CN115080916B CN202210826441.1A CN202210826441A CN115080916B CN 115080916 B CN115080916 B CN 115080916B CN 202210826441 A CN202210826441 A CN 202210826441A CN 115080916 B CN115080916 B CN 115080916B
- Authority
- CN
- China
- Prior art keywords
- vector
- data
- inner product
- processing
- data type
- 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
- 238000003672 processing method Methods 0.000 title abstract description 43
- 239000013598 vector Substances 0.000 claims abstract description 814
- 238000012545 processing Methods 0.000 claims abstract description 179
- 238000000034 method Methods 0.000 claims abstract description 96
- 238000004364 calculation method Methods 0.000 claims abstract description 76
- 230000008569 process Effects 0.000 claims abstract description 51
- 238000006243 chemical reaction Methods 0.000 claims abstract description 25
- 230000000007 visual effect Effects 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 16
- 238000005192 partition Methods 0.000 claims description 13
- 230000008707 rearrangement Effects 0.000 claims description 7
- 230000000694 effects Effects 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013075 data extraction Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种数据处理方法、装置、电子设备、计算机可读介质,对于电子设备来说,如果向量内积计算请求用于请求计算待处理数据类型下第一向量与第二向量之间的内积,则在电子设备接收到向量内积计算请求之后,电子设备先将第一向量和第二向量分别进行数据类型转换处理,得到第三向量和第四向量,以使第三向量和第四向量均属于目标数据类型;再由电子设备通过调用目标数据类型对应的并行指令针对第三向量和第四向量进行数据处理的方式,得到第一向量与第二向量之间的内积,如此能够实现借助电子设备中已存在的目标数据类型对应的并行指令,并行实现待处理数据类型的向量内积计算过程,从而能够有效地提高向量内积的计算效果。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、电子设备、计算机可读介质。
背景技术
随着计算机的普及,计算机的应用领域越来越多。例如,在一些应用领域(例如,图像处理、语音处理、视频处理、数据分析等)中,计算机可能会出现计算两个向量之间的内积(例如,计算这两个向量之间的余弦距离)这一计算需求。
然而,因相关的向量内积计算方案存在缺陷,导致向量内积的计算效果比较差。
发明内容
为了解决上述技术问题,本申请提供了一种数据处理方法、装置、电子设备、计算机可读介质,能够有效地提高向量内积的计算效果。
为了实现上述目的,本申请实施例提供的技术方案如下:
本申请实施例提供一种数据处理方法,所述方法包括:
获取向量内积计算请求;其中,所述向量内积计算请求用于请求计算第一向量与第二向量之间的内积;所述第一向量的数据类型和所述第二向量的数据类型均为待处理数据类型;
对所述第一向量和所述第二向量分别进行数据类型转换处理,得到第三向量和第四向量;其中,所述第三向量的数据类型和所述第四向量的数据类型均为目标数据类型;所述目标数据类型不同于所述待处理数据类型;
利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积。
在一种可能的实施方式中,所述方法还包括:
按照待使用划分参数,对所述第一向量进行划分处理,得到至少一个第一数据段;
按照待使用划分参数,对所述第二向量进行划分处理,得到至少一个第二数据段;
所述对所述第一向量和所述第二向量分别进行数据类型转换处理,得到第三向量和第四向量,包括:
根据所述至少一个第一数据段,确定所述第三向量,并根据所述至少一个第四数据段,确定所述第四向量。
在一种可能的实施方式中,所述第一数据段的个数为N;所述第三向量的确定过程,包括:
将第n个第一数据段拆分成第n个第一高位数据段和第n个第一低位数据段;对所述第n个第一高位数据段进行数据位扩展处理,得到第2n-1个第三向量,并对所述第n个第一低位数据段进行数据位扩展处理,得到第2n个第三向量;其中,n为正整数,n≤N,N为正整数;
所述第二数据段的个数为N;所述第四向量的确定过程,包括:
将第n个第二数据段拆分成第n个第二高位数据段和第n个第二低位数据段;对所述第n个第二高位数据段进行数据位扩展处理,得到第2n-1个第四向量,并对所述第n个第二低位数据段进行数据位扩展处理,得到第2n个第四向量;其中,n为正整数,n≤N,N为正整数。
在一种可能的实施方式中,所述目标数据类型对应的并行指令包括待使用并行处理指令;
所述利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积,包括:
利用所述待使用并行处理指令,对第m个第三向量与第m个第四向量进行数据处理,得到第m个第五向量;其中,m为正整数,m≤2N;
将第1个第五向量至第2N个第五向量进行累加处理,得到第六向量;
将所述第六向量中所有元素之间的和值,确定为所述第一向量与所述第二向量之间的内积。
在一种可能的实施方式中,所述目标数据类型对应的并行指令包括待使用并行处理指令;所述第一数据段的个数为N;所述第二数据段的个数为N;i的初始值为1;其中,N为正整数,i为正整数;
所述方法还包括:
将第i个第一数据段和第i个第二数据段分别从内存加载至寄存器;
所述根据所述至少一个第一数据段,确定所述第三向量,并根据所述至少一个第四数据段,确定所述第四向量,包括:
根据所述寄存器中第i个第一数据段中高位数据和低位数据,分别确定第2i-1个第三向量和第2i个第三向量,并根据所述寄存器中第i个第二数据段中高位数据和低位数据,分别确定第2i-1个第四向量和第2i个第四向量;
所述利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积,包括:
利用所述待使用并行处理指令,对所述第2i-1个第三向量和所述第2i-1个第四向量进行数据处理,得到第2i-1个第五向量;并利用所述待使用并行处理指令,对所述第2i个第三向量和所述第2i个第四向量进行数据处理,得到第2i个第五向量;
根据第2i-1个第五向量和第2i个第五向量之间的向量加和结果,确定第七向量;
更新所述i,并继续执行所述将第i个第一数据段和第i个第二数据段分别从内存加载至寄存器的步骤,直至在达到预设停止条件之后,根据所述第七向量,确定第六向量;
将所述第六向量中所有元素之间的和值,确定为所述第一向量与所述第二向量之间的内积。
在一种可能的实施方式中,所述将所述第六向量中所有元素之间的和值,确定为所述第一向量与所述第二向量之间的内积,包括:
将所述第六向量中第三高位数据段与第三低位数据段进行加和处理,得到第八向量;
将所述第八向量进行元素重排处理,得到第九向量;
将所述第八向量和所述第九向量进行向量加和处理,得到第十向量;
将所述第十向量进行邻数加和处理,得到待使用向量;
将所述待使用向量中最高位元素或者最低位元素,确定为所述第一向量与所述第二向量之间的内积。
在一种可能的实施方式中,所述方法还包括:
在获取到设备并行描述参数之后,根据所述设备并行描述参数和所述待处理数据类型,确定所述待使用划分参数。
在一种可能的实施方式中,所述第一向量为第一图像数据的视觉特征;所述第二向量为所述第二图像数据的视觉特征;所述第一向量与所述第二向量之间的内积用于表示所述第一图像数据与所述第二图像数据的视觉相似程度。
在一种可能的实施方式中,所述第一向量为第一语音数据的语音特征;所述第二向量为所述第二语音数据的语音特征;所述第一向量与所述第二向量之间的内积用于表示所述第一语音数据与所述第二语音数据的语音相似程度。
在一种可能的实施方式中,所述待处理数据类型为8比特整数型int8;所述目标数据类型为16比特整数型int16。
本申请实施例还提供了一种数据处理装置,包括:
获取单元,用于获取向量内积计算请求;其中,所述向量内积计算请求用于请求计算第一向量与第二向量之间的内积;所述第一向量的数据类型和所述第二向量的数据类型均为待处理数据类型;
转换单元,用于对所述第一向量和所述第二向量分别进行数据类型转换处理,得到第三向量和第四向量;其中,所述第三向量的数据类型和所述第四向量的数据类型均为目标数据类型;所述目标数据类型不同于所述待处理数据类型;
确定单元,用于利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积。
本申请实施例还提供了一种电子设备,所述设备包括:处理器和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行本申请实施例提供的数据处理方法的任一实施方式。
本申请实施例还提供了一种计算机可读介质,所述计算机可读介质中存储有指令或计算机程序,当所述指令或计算机程序在设备上运行时,使得所述设备执行本申请实施例提供的数据处理方法的任一实施方式。
与现有技术相比,本申请实施例至少具有以下优点:
本申请实施例提供的技术方案中,对于电子设备(例如,计算机等)来说,如果向量内积计算请求用于请求计算待处理数据类型(例如,int8)下第一向量与该待处理数据类型下第二向量之间的内积,则在该电子设备接收到该向量内积计算请求之后,该电子设备可以先将该第一向量和该第二向量分别进行数据类型转换处理,得到第三向量和第四向量,以使该第三向量和第四向量均属于目标数据类型(例如,int16);再由该电子设备通过调用该目标数据类型对应的并行指令针对该第三向量和第四向量进行数据处理的方式,得到该第一向量与该第二向量之间的内积,如此能够实现借助该电子设备中已存在的该目标数据类型对应的并行指令,并行实现该待处理数据类型的向量内积计算过程,从而能够有效地提高电子设备针对该待处理数据类型的向量内积的计算效率,进而能够有效地提高向量内积的计算效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种数据处理方法的流程图;
图2为本申请实施例提供的一种数据处理装置的结构示意图;
图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了便于更好地理解本申请实施例提供的技术方案,下面先介绍一些本申请所涉及的技术名词。
位(bit)是计算机中数据的最小单位。另外,在计算机内部,信息都是釆用二进制的形式进行存储、运算、处理和传输的,故位(bit)可以是指二进制数中的一个数位,可以是0或者1。也就是,二进制的一个“0”或一个“1”叫一位。
字节(Byte,B)是计算机中数据的基本单位;而且在计算机中每8位组成一个字节。另外,在计算机内部,各种信息在计算机中存储、处理至少需要一个字节。
8比特整数型(8bit integer,int8)是一种数据类型;而且该int8中数字“8”表示该数据类型所占据的空间。可见,一个int8的数据占据1个字节。
16比特整数型(16bit integer,int16)是一种数据类型;而且该int16中数字“16”表示该数据类型所占据的空间。可见,一个int16的数据占据2个字节,而且该int16的数据的取值范围为-32768~32767。
avx(Advanced Vector Extensions)并行指令集是一种适用于256位并行处理的指令集合;而且该avx并行指令集包括一些适用于针对int16的数据进行数据处理的并行指令。例如,avx并行指令集可以至少包括_mm256_loadu_si256指令、_mm256_extracti128_si256指令、_mm256_cvtepi8_epi16指令、_mm256_madd_epi16指令、_mm_add_epi32指令、_mm_shuffle_epi32指令、_mm_hadd_epi32指令、以及_mm_extract_epi32指令等。
其中,_mm256_loadu_si256指令是指将某个256位数据从内存加载至寄存器。
_mm256_extracti128_si256指令用于将某个256位数据中某些数据(例如,高位数据或低位数据)提取出来。
_mm256_cvtepi8_epi16指令用于将int8的数据转换成int16的数据。
_mm256_madd_epi16指令用于将两个int16的向量中各个元素进行相乘再进行邻数相加处理。
_mm_add_epi32指令用于将两个int32的向量进行相加。
_mm_shuffle_epi32指令用于将一个int32的向量中所有元素进行重排。
_mm_hadd_epi32指令用于将一个int32的向量中相邻元素进行相加。
_mm_extract_epi32指令用于将一个int32的向量中一个或者多个元素提取出来。
向量是指具有大小和方向的量;而且一个向量中每个数据可以称为元素。例如,对于向量a=[a1,a2,…,aD]来说,a1表示向量a中的第1个元素;a2表示向量a中的第2个元素;……;aD表示向量a中的第D个元素。
内积(又称点积、数量积)是一种向量运算,但其结果为某一数值,并非向量。例如,对于向量a=[a1,a2,…,aD]和b=[b1,b2,…,bD]来说,这两个向量的内积的计算公式具体为:a·b=a1×b1+a2×b2+……+aD×bD。其中,D为正整数,D表示向量a和向量b的数据维度。
基于上述这些技术名词的相关内容,下面继续解释本申请实施例提供的技术方案的相关内容。
发明人在针对向量积的研究中发现,一些计算机通常会串行计算int8的向量内积(也就是,串行计算属于int8这一数据类型的两个向量之间的内积),如此导致int8的向量内积的计算效率比较低。
发明人还发现,虽然这些计算机中可能会不存在能够针对int8的数据进行并行处理的指令,但是这些计算机中通常存在一些能够针对int16的数据进行并行处理的指令(例如,avx并行指令集中所记录的适用于int16的指令),使得这些计算机可以针对int16下的向量进行并行处理。
基于上述发现,为了解决背景技术部分所示的技术问题,本申请实施例提供了一种应用于电子设备的数据处理方法,该方法包括:如果向量内积计算请求用于请求计算待处理数据类型(例如,int8)下第一向量与该待处理数据类型下第二向量之间的内积,则在该电子设备接收到该向量内积计算请求之后,该电子设备可以先将该第一向量和该第二向量分别进行数据类型转换处理,得到第三向量和第四向量,以使该第三向量和第四向量均属于目标数据类型(例如,int16);再由该电子设备通过调用该目标数据类型对应的并行指令针对该第三向量和第四向量进行数据处理的方式,得到该第一向量与该第二向量之间的内积,如此能够实现借助该电子设备中已存在的该目标数据类型对应的并行指令,并行实现该待处理数据类型的向量内积计算过程,从而能够有效地提高电子设备针对该待处理数据类型的向量内积的计算效率,进而能够有效地提高向量内积的计算效果。
可见,在本申请提供的技术方案中,可以利用该电子设备中已存在的适用于目标数据类型(例如,int16)的并行指令(例如,avx并行指令集中适用于int16的指令),完成针对待处理数据类型(例如,int8)的向量积进行并行计算的目的,如此能够有效地解决因该电子设备中不存在适用于该待处理数据类型的并行指令而导致无法并行计算该待处理数据类型的向量积,如此有利于提高该电子设备针对该待处理数据类型下向量积的计算效率,进而能够有效地提高向量内积的计算效果。
另外,本申请实施例不限定数据处理方法的执行主体(也就是,电子设备),例如,本申请实施例提供的数据处理方法可以应用于终端设备或服务器等具有数据处理功能的设备。其中,终端设备可以为智能手机、计算机、个人数字助理(Personal DigitalAssitant,PDA)或平板电脑等。服务器可以为独立服务器、集群服务器或云服务器。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
方法实施例一
参见图1,该图为本申请实施例提供的一种数据处理方法的流程图。
本申请实施例提供的数据处理方法,包括S1-S3:
S1:获取向量内积计算请求。
其中,向量内积计算请求用于请求计算第一向量与第二向量之间的内积。
另外,本申请实施例不限定上述向量内积计算请求的触发方式,例如,当本申请实施例提供的数据处理方法由电子设备执行时,该向量内积计算请求可以由用户在该电子设备上手动触发。又如,当本申请实施例提供的数据处理方法由电子设备执行时,该向量内积计算请求可以在该电子设备内其他数据处理任务(例如,图像相似度计算任务、语音相似度计算任务等)的执行过程中自动触发。
第一向量是指上文向量内积计算请求携带的一个向量数据。例如,该第一向量可以是向量a=[a1,a2,…,aD]。其中,D表示第一向量的数据维度;而且本申请实施例不限定D,例如,D可以是任意一个整数(例如,128、256、或者1024等)。
另外,第一向量的数据类型为待处理数据类型。也就是,该第一向量中各个元素均属于待处理数据类型。其中,待处理数据类型是一种数据类型,而且本申请实施例不限定该待处理数据类型,例如,该待处理数据类型可以为int8。
此外,本申请实施例不限定第一向量,例如,在一些应用场景中(例如,在图像视觉相似性确定这一场景中),该第一向量可以是第一图像数据的视觉特征。其中,第一图像数据可以是任意一张图像数据(例如,由摄像机或深度摄像机拍摄的图像数据、经过一些图像处理操作之后所得到的图像数据等)。第一图像数据的视觉特征用于表示该第一图像数据所携带的图像信息。
需要说明的是,本申请实施例不限定上文视觉特征的确定方法,例如,可以采用现有的或者未来出现的任意一种视觉特征提取方式进行实施。另外,本申请实施例也不限定上文图像处理操作,例如,其至少可以包括特征归一化处理等。
又如,在另一些应用场景中(例如,在类似于判断两个语音数据中是否是同一个人在说话、判断两个语音数据中是否携带有相同的语义信息等这些语音相似性确定场景中),该第一向量可以是第一语音数据的语音特征。其中,第一语音数据可以是任意一个音频数据(例如,由拾音器直接采集的语音数据、经过一些语音处理操作之后所得到的语音数据等)。第一语音数据的语音特征用于表示该第一语音数据所携带的语音信息(例如,声学信息、语义信息等)。
需要说明的是,本申请实施例不限定上文语音特征的确定方法,例如,当该语音特征为声学特征时,则该语音特征的确定方法可以采用现有的或者未来出现的任意一种声学特征提取方式进行实施。又如,当该语音特征为语音语义时,则该语音特征的确定方法可以采用现有的或者未来出现的任意一种语音语义提取方式进行实施。
第二向量是指上文向量内积计算请求携带的另一个向量数据。例如,该第二向量可以是向量b=[b1,b2,…,bD]。其中,D表示第二向量的数据维度;而且本申请实施例不限定D,例如,D可以是任意一个整数(例如,128、256、或者1024等)。需要说明的是,第二向量的数据维度与上文第一向量的数据维度相等。
另外,第二向量的数据类型也为待处理数据类型。可见,第二向量的数据类型与上文第一向量的数据类型相同。
此外,本申请实施例不限定第二向量,例如,在一些应用场景中(例如,在图像视觉相似性确定这一场景中),该第二向量可以是第二图像数据的视觉特征。其中,第二图像数据可以是任意一张图像数据(例如,由摄像机或深度摄像机拍摄的图像数据、经过一些图像处理操作之后所得到的图像数据等)。第二图像数据的视觉特征用于表示该第二图像数据所携带的图像信息。
又如,在另一些应用场景中(例如,在类似于判断两个语音数据中是否是同一个人所说的、判断两个语音数据中是否携带有相同的语义信息等这些语音相似性确定场景中),该第二向量可以是第二语音数据的语音特征。其中,第二语音数据可以是任意一个音频数据(例如,由拾音器直接采集的语音数据、经过一些语音处理操作之后所得到的语音数据等)。第二语音数据的语音特征用于表示该第二语音数据所携带的语音信息(例如,声学信息、语义信息等)。
上文“第一向量与第二向量之间的内积”用于表示该第一向量与该第二向量之间的余弦距离。例如,在一些应用场景中(例如,在图像视觉相似性确定这一场景中),当第一向量是第一图像数据的视觉特征,而且第二向量是第二图像数据的视觉特征时,该“第一向量与第二向量之间的内积”是指该第一图像数据的视觉特征与该第二图像数据的视觉特征之间的余弦距离,以使该“第一向量与第二向量之间的内积”能够表示出该第一图像数据与该第二图像数据的视觉相似程度,以便后续能够基于该“第一向量与第二向量之间的内积”,衡量该第一图像数据与该第二图像数据是否相似。
又如,在另一些应用场景中(例如,在判断两个语音数据中是否是同一个人所说的这一语音相似性确定场景中),当第一向量是第一语音数据的声学特征,而且第二向量是第二语音数据的声学特征时,该“第一向量与第二向量之间的内积”是指该第一语音数据的声学特征与该第二语音数据的声学特征之间的余弦距离,以使该“第一向量与第二向量之间的内积”能够表示出该第一语音数据与该第二语音数据在声学方面所呈现的语音相似程度,以便后续能够基于该“第一向量与第二向量之间的内积”,衡量该第一语音数据与该第二语音数据是否是由同一个人所说的。
还如,在又一些应用场景中(例如,在判断两个语音数据中是否携带有相同的语义信息等这一语音相似性确定场景中),当第一向量是第一语音数据的语音语义特征,而且第二向量是第二语音数据的语音语义特征时,该“第一向量与第二向量之间的内积”是指该第一语音数据的语音语义特征与该第二语音数据的语音语义特征之间的余弦距离,以使该“第一向量与第二向量之间的内积”能够表示出该第一语音数据与该第二语音数据在语义方面所呈现的语音相似程度,以便后续能够基于该“第一向量与第二向量之间的内积”,衡量该第一语音数据与该第二语音数据是否携带有相同的语义信息。
基于上述S1的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到向量内积计算请求之后,该电子设备可以借助该电子设备中已存在的一些并行指令,并行完成针对该向量内积计算请求的响应过程。
S2:对第一向量和第二向量分别进行数据类型转换处理,得到第三向量和第四向量。
其中,第三向量用于表示第一向量的数据类型转换处理结果;而且该第三向量的数据类型为目标数据类型。也就是,该第三向量中各个元素均属于目标数据类型。
目标数据类型是一种不同于上文待处理数据类型的数据类型,而且当本申请实施例提供的数据处理方法由电子设备执行时,该电子设备中存在有该目标数据类型对应的并行指令。例如,当电子设备中存在avx并行指令集时,如果该目标数据类型可以为int16,则因该avx并行指令集中存在一些与int16相关的并行指令(例如,_mm256_madd_epi16指令等),则可以确定该电子设备中存在有该目标数据类型对应的并行指令。
另外,在一些应用场景中,目标数据类型下数据所占据的位数可以高于上文待处理数据类型下数据所占据的位数。例如,当该目标数据类型为int16,而且该待处理数据类型为int8时,因该目标数据类型下数据占据了16位,而且该待处理数据类型下数据占据了8位,使得该目标数据类型下数据所占据的位数高于该待处理数据类型下数据所占据的位数。
第四向量用于表示第二向量的数据类型转换处理结果;而且该第四向量的数据类型为目标数据类型。也就是,该第四向量中各个元素均属于目标数据类型。
此外,本申请实施例不限定S2的实施方式,例如,其可以采用现有的或者未来出现的任意一种能够将待处理数据类型下数据转换成目标数据类型下数据的方法进行实施。又如,为了进一步提高向量内积的计算效果,可以采用下文所示的第三向量和第四向量的确定过程的任一实施方式进行实施。
基于上述S2的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到向量内积计算请求之后,该电子设备可以将该向量内积计算请求所携带的第一向量和第二向量分别进行数据类型转换处理,得到第三向量和第四向量,以使该第三向量和该第四向量均属于目标数据类型,以便后续能够借助一些适用于该目标数据类型的并行指令,针对该第三向量和该第四向量进行相应地处理,以得到第一向量与第二向量之间的内积。
S3:利用目标数据类型对应的并行指令、第三向量、以及第四向量,确定第一向量与第二向量之间的内积。
其中,目标数据类型对应的并行指令是指适用于针对该目标数据类型下数据进行并行处理的指令。
可见,对于一个电子设备(例如,计算机)来说,在该电子设备获取到第三向量以及第四向量之后,该电子设备可以调用目标数据类型对应的并行指令,对该第三向量以及第四向量进行相应的处理(例如,int16数据相乘以及相加等),以得到第一向量与第二向量之间的内积,如此能够实现借助适用于该目标数据类型的并行指令集,完成针对待处理数据类型下向量积的并行计算。
另外,本申请实施例不限定S3的实施方式,例如,其可以采用现有的或者未来出现的任意一种能够利用目标数据类型对应的并行指令、第三向量、以及第四向量确定出向量内积的方法进行实施。又如,为了进一步提高向量内积的计算效果,可以采用下文所示的针对第三向量和第四向量的并行处理过程的任一实施方式进行实施。
基于上述S1至S3的相关内容可知,对于本申请实施例提供的数据处理方法来说,如果向量内积计算请求用于请求计算待处理数据类型(例如,int8)下第一向量与该待处理数据类型下第二向量之间的内积,则在该电子设备接收到该向量内积计算请求之后,该电子设备可以先将该第一向量和该第二向量分别进行数据类型转换处理,得到第三向量和第四向量,以使该第三向量和第四向量均属于目标数据类型(例如,int16);再由该电子设备通过调用该目标数据类型对应的并行指令针对该第三向量和第四向量进行数据处理的方式,得到该第一向量与该第二向量之间的内积,如此能够实现借助该电子设备中已存在的该目标数据类型对应的并行指令,并行实现该待处理数据类型的向量内积计算过程,从而能够有效地提高电子设备针对该待处理数据类型的向量内积的计算效率,进而能够有效地提高向量内积的计算效果。
可见,在本申请提供的技术方案中,可以利用该电子设备中已存在的适用于目标数据类型(例如,int16)的并行指令(例如,avx int16并行指令集中的指令),完成针对待处理数据类型(例如,int8)的向量积进行并行计算的目的,如此能够有效地解决因该电子设备中不存在适用于该待处理数据类型的并行指令而导致无法并行计算该待处理数据类型的向量积,如此有利于提高该电子设备针对该待处理数据类型下向量积的计算效率,进而能够有效地提高向量内积的计算效果。
方法实施例二
实际上,avx并行指令集适用于256位并行处理,故为了更好地满足上述256位并行处理这一并行处理要求,本申请实施例还提供了数据处理方法的另一种可能的实施方式,其具体可以包括步骤11-步骤15:
步骤11:获取向量内积计算请求。
需要说明的是,步骤11的相关内容请参见上文S1。
步骤12:按照待使用划分参数,对第一向量进行划分处理,得到至少一个第一数据段。
其中,待使用划分参数是指在针对待处理数据类型下的一个向量进行划分时所需依据的参数。例如,该待使用划分参数可以是32维。
另外,待使用划分参数可以预先设定。
此外,为了更好地适应不同电子设备所具有的并行处理要求,本申请实施例还提供了上文待使用划分参数的确定过程一种可能的实施方式,在该实施方式中,当本申请实施例提供的数据处理方法由电子设备执行时,该待使用划分参数的确定过程具体可以为:在获取到该电子设备的设备并行描述参数之后,根据该设备并行描述参数和待处理数据类型,确定待使用划分参数。
其中,设备并行描述参数用于描述电子设备的并行处理要求。例如,当该电子设备中已存在avx并行指令集时,该电子设备的设备并行描述参数可以至少包括256位这一参数,以使该设备并行描述参数至少能够表示出该电子设备可以针对256位进行并行处理。
为了便于理解上文待使用划分参数的确定过程,下面结合示例进行说明。
作为示例,当上文设备并行描述参数至少包括256位这一参数,而且待处理数据类型为int8时,该待使用划分参数的确定过程具体可以为:利用256除以8,得到32,并将该32作为该待使用划分参数。也就是,当该电子设备中已存在avx并行指令集时,该电子设备可以针对32维int8的数据进行并行处理。
上文“至少一个第一数据段”用于表示针对第一向量的划分处理结果。例如,当该第一向量为a=[a1,a2,…,aD],D为32的整数倍,而且上文待使用划分参数为32时,该“至少一个第一数据段”可以包括:[a1,a2,…,a32]、[a33,a34,…,a64]、[a65,a66,…,a96]、……(以此类推)、[aD-31,aD-30,…,aD]。
需要说明的是,如果D不是32的整数倍,则可以先在第一向量的预设位置(例如,向量的开始位置或者向量的末尾位置等)补零,以使补零后的第一向量的数据维度是32的整数倍;再按照上一段所示的划分方式进行划分处理。
基于上述步骤12的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到向量内积计算请求之后,该电子设备可以依据待使用划分参数,对该向量内积计算请求所携带的第一向量进行划分处理,得到至少一个第一数据段,以使这些第一数据段能够表示出该第一向量中存在哪些数据(例如,int8数据),以便后续能够通过针对这些第一数据段的处理过程,实现针对该第一向量的处理过程。
步骤13:按照待使用划分参数,对第二向量进行划分处理,得到至少一个第二数据段。
上文“至少一个第二数据段”用于表示针对第二向量的划分处理结果。例如,当该第二向量为b=[b1,b2,…,bD],D为32的整数倍,而且上文待使用划分参数为32时,该“至少一个第二数据段”可以包括:[b1,b2,…,b32]、[b33,b34,…,b64]、[b65,b66,…,b96]、……(以此类推)、[bD-31,bD-30,…,bD]。
需要说明的是,如果D不是32的整数倍,则可以先在第二向量的预设位置(例如,向量的开始位置或者向量的末尾位置等)补零,以使补零后的第二向量的数据维度是32的整数倍;再按照上一段所示的划分方式进行划分处理。
基于上述步骤13的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到向量内积计算请求之后,该电子设备可以依据待使用划分参数,对该向量内积计算请求所携带的第二向量进行划分处理,得到至少一个第二数据段,以使这些第二数据段能够表示出该第二向量中存在哪些数据(例如,int8数据),以便后续能够通过针对这些第二数据段的处理过程,实现针对该第二向量的处理过程。
需要说明的是,本申请实施例不限定上文步骤12与步骤13之间的执行顺序,例如,可以同时执行。又如,可以先执行步骤12再执行步骤13。还如,可以先执行步骤13再执行步骤12。
步骤14:根据至少一个第一数据段,确定第三向量,并根据至少一个第四数据段,确定第四向量。
本申请实施例中,在获取到至少一个第一数据段之后,可以将各个第一数据段进行数据类型转换处理,得到各个第一数据段对应的第三向量,以使这些第三向量能够按照目标数据类型表达出这些第一数据段所携带的数据值;同样,在获取到至少一个第二数据段之后,可以将各个第二数据段进行数据类型转换处理,得到各个第二数据段对应的第四向量,以使这些第四向量能够按照目标数据类型表达出这些第二数据段所携带的数据值。
需要说明的是,本申请实施例不限定上文步骤“根据至少一个第一数据段,确定第三向量”与上文步骤“根据至少一个第四数据段,确定第四向量”之间的执行顺序,例如,可以同时执行。又如,可以先执行前者再执行后者。还如,可以先执行后者再执行前者。
实际上,为了避免数据溢出现象,本申请实施例还提供了上文第三向量的确定过程的一种可能的实施方式,在该实施方式中,当第一数据段的个数为N时,该第三向量的确定过程具体可以包括步骤21-步骤23:
步骤21:将第n个第一数据段拆分成第n个第一高位数据段和第n个第一低位数据段。其中,n为正整数,n≤N,N为正整数。
其中,第n个第一低位数据段用于表示第n个第一数据段中处于低位的数据。例如,当该第n个第一数据段为[a1+32×[n-1],a2+32×[n-1],…,a32+32×[n-1]]时,该第n个第一低位数据段可以为[a1+32×[n-1],a2+32×[n-1],…,a16+32×[n-1]]。
第n个第一高位数据段用于表示第n个第一数据段中处于高位的数据。例如,当该第n个第一数据段为[a1+32×[n-1],a2+32×[n-1],…,a32+32×[n-1]]时,该第n个第一高位数据段可以为[a17+32×[n-1],a18+32×[n-1],…,a32+32×[n-1]]。
另外,本申请实施例不限定步骤21的实施方式,例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,则步骤21具体可以为:该电子设备利用_mm256_extracti128_si256指令,从该第n个第一数据段中抽取出第n个第一高位数据段和第n个第一低位数据段。
步骤22:对第n个第一高位数据段进行数据位扩展处理,得到第2n-1个第三向量。
本申请实施例中,在获取到第n个第一高位数据段之后,可以先针对该第n个第一高位数据段进行数据位扩展处理,得到数据扩展结果,以使该数据扩展结果中每个数据所占据的位数增加(例如,位数翻倍),从而使得该数据扩展结果中每个数据均属于目标数据类型;再将该数据扩展结果,确定为第2n-1个第三向量。为了便于理解,下面结合示例进行说明。
作为示例,当本申请实施例提供的数据处理方法由电子设备执行,该电子设备中存在avx并行指令集,第n个第一高位数据段为[a17+32×[n-1],a18+32×[n-1],…,a32+32×[n-1]],而且a17+32×[n-1]、a18+32×[n-1]、…、以及a32+32×[n-1]均属于int8时,步骤22具体可以为:该电子设备利用_mm256_cvtepi8_epi16指令,将该第n个第一高位数据段中各个数据均扩展成int16的数据(也就是,将该第n个第一高位数据段中各个数据均转换成int16表达方式),得到数据扩展结果,以使该数据扩展结果中每个数据均占据16位,从而使得该数据扩展结果中每个数据均均属于目标数据类型;再将该数据扩展结果,确定为第2n-1个第三向量,以使该第2n-1个第三向量中各个元素均属于目标数据类型。
步骤23:对第n个第一低位数据段进行数据位扩展处理,得到第2n个第三向量。其中,n为正整数,n≤N,N为正整数。
本申请实施例中,在获取到第n个第一低位数据段之后,可以先针对该第n个第一低位数据段进行数据位扩展处理,得到数据扩展结果,以使该数据扩展结果中每个数据所占据的位数增加(例如,位数翻倍),从而使得该数据扩展结果中每个数据均属于目标数据类型;再将该数据扩展结果,确定为第2n个第三向量。为了便于理解,下面结合示例进行说明。
作为示例,当本申请实施例提供的数据处理方法由电子设备执行,该电子设备中存在avx并行指令集,第n个第一低位数据段为[a1+32×[n-1],a2+32×[n-1],…,a16+32×[n-1]],而且a1+32×[n-1]、a2+32×[n-1]、…、以及a16+32×[n-1]均属于int8时,步骤22具体可以为:该电子设备利用
_mm256_cvtepi8_epi16指令,将该第n个第一低位数据段中各个数据均扩展成int16的数据(也就是,将该第n个第一低位数据段中各个数据均转换成int16表达方式),得到数据扩展结果,以使该数据扩展结果中每个数据均占据16位,从而使得该数据扩展结果中每个数据均均属于目标数据类型;再将该数据扩展结果,确定为第2n个第三向量,以使该第2n个第三向量中各个元素均属于目标数据类型。
需要说明的是,本申请实施例不限定步骤22和步骤23之间的执行顺序,例如,可以同时执行。又如,可以先执行步骤22再执行步骤23。还如,可以先执行步骤23再执行步骤22。
基于上述步骤21至步骤23的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到第n个第一数据段之后,该电子设备可以先将该第n个第一数据段拆分成两个数据段;再将这两个数据段进行数据位扩展处理,得到该第n个第一数据段对应的两个第三向量,如此不仅能够实现将待处理数据类型下向量转换成目标数据类型下向量的目的,还能够有效地防止在后续数据处理过程中发生数据溢出现象。
同理,为了避免数据溢出现象,本申请实施例还提供了上文第四向量的确定过程的一种可能的实施方式,在该实施方式中,当第二数据段的个数为N时,该第四向量的确定过程具体可以包括步骤31-步骤33:
步骤31:将第n个第二数据段拆分成第n个第二高位数据段和第n个第二低位数据段。其中,n为正整数,n≤N,N为正整数。
其中,第n个第二低位数据段用于表示第n个第二数据段中处于低位的数据。例如,当该第n个第二数据段为[b1+32×[n-1],b2+32×[n-1],…,b32+32×[n-1]]时,该第n个第二低位数据段可以为[b1+32×[n-1],b2+32×[n-1],…,b16+32×[n-1]]。
第n个第二高位数据段用于表示第n个第二数据段中处于高位的数据。例如,当该第n个第二数据段为[b1+32×[n-1],b2+32×[n-1],…,b32+32×[n-1]]时,该第n个第二高位数据段可以为[b17+32×[n-1],b18+32×[n-1],…,b32+32×[n-1]]。
另外,本申请实施例不限定步骤31的实施方式,例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,步骤31具体可以为:该电子设备利用_mm256_extrbcti128_si256指令,从该第n个第二数据段中抽取出第n个第二高位数据段和第n个第二低位数据段。
步骤32:对第n个第二高位数据段进行数据位扩展处理,得到第2n-1个第四向量。
本申请实施例中,在获取到第n个第二高位数据段之后,可以先针对该第n个第二高位数据段进行数据位扩展处理,得到数据扩展结果,以使该数据扩展结果中每个数据所占据的位数增加(例如,位数翻倍),从而使得该数据扩展结果中每个数据均属于目标数据类型;再将该数据扩展结果,确定为第2n-1个第四向量。为了便于理解,下面结合示例进行说明。
作为示例,当本申请实施例提供的数据处理方法由电子设备执行,该电子设备中存在avx并行指令集,第n个第二高位数据段为[b17+32×[n-1],b18+32×[n-1],…,b32+32×[n-1]],而且b17+32×[n-1]、b18+32×[n-1]、…、以及b32+32×[n-1]均属于int8时,步骤32具体可以为:该电子设备利用_mm256_cvtepi8_epi16指令,将该第n个第二高位数据段中各个数据均扩展成int16的数据(也就是,将该第n个第二高位数据段中各个数据均转换成int16表达方式),得到数据扩展结果,以使该数据扩展结果中每个数据均占据16位,从而使得该数据扩展结果中每个数据均均属于目标数据类型;再将该数据扩展结果,确定为第2n-1个第四向量,以使该第2n-1个第四向量中各个元素均属于目标数据类型。
步骤33:对第n个第二低位数据段进行数据位扩展处理,得到第2n个第四向量。其中,n为正整数,n≤N,N为正整数。
本申请实施例中,在获取到第n个第二低位数据段之后,可以先针对该第n个第二低位数据段进行数据位扩展处理,得到数据扩展结果,以使该数据扩展结果中每个数据所占据的位数增加(例如,位数翻倍),从而使得该数据扩展结果中每个数据均属于目标数据类型;再将该数据扩展结果,确定为第2n个第四向量。为了便于理解,下面结合示例进行说明。
作为示例,当本申请实施例提供的数据处理方法由电子设备执行,该电子设备中存在avx并行指令集,第n个第二低位数据段为[b1+32×[n-1],b2+32×[n-1],…,b16+32×[n-1]],而且b1+32×[n-1]、b2+32×[n-1]、…、以及b16+32×[n-1]均属于int8时,步骤32具体可以为:该电子设备利用_mm256_cvtepi8_epi16指令,将该第n个第二低位数据段中各个数据均扩展成int16的数据(也就是,将该第n个第二低位数据段中各个数据均转换成int16表达方式),得到数据扩展结果,以使该数据扩展结果中每个数据均占据16位,从而使得该数据扩展结果中每个数据均均属于目标数据类型;再将该数据扩展结果,确定为第2n个第四向量,以使该第2n个第四向量中各个元素均属于目标数据类型。
需要说明的是,本申请实施例不限定步骤32和步骤33之间的执行顺序,例如,可以同时执行。又如,可以先执行步骤32再执行步骤33。还如,可以先执行步骤33再执行步骤32。
基于上述步骤31至步骤33的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到第n个第二数据段之后,该电子设备可以先将该第n个第二数据段拆分成两个数据段;再将这两个数据段进行数据位扩展处理,得到该第n个第二数据段对应的两个第四向量,如此不仅能够实现将待处理数据类型下向量转换成目标数据类型下向量的目的,还能够有效地防止在后续数据处理过程中发生数据溢出现象。
基于上述步骤14的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到各个第一数据段之后,该电子设备可以分别针对各个第一数据段执行一些处理操作(例如,高低位数据提取操作、数据位扩展操作等),得到各个第一数据段对应的第三向量,以使各个第一数据段对应的第三向量分别能够按照目标数据类型表达出各个第一数据段所携带的数据值;同样,在该电子设备获取到各个第二数据段之后,该电子设备可以分别针对各个第二数据段执行一些处理操作(例如,高低位数据提取操作、数据位扩展操作等),得到各个第二数据段对应的第四向量,以使各个第二数据段对应的第四向量分别能够按照目标数据类型表达出各个第二数据段所携带的数据值,如此能够实现数据类型转换处理的目的。
步骤15:利用目标数据类型对应的并行指令、第三向量、以及第四向量,确定第一向量与第二向量之间的内积。
作为示例,当目标数据类型对应的并行指令至少包括待使用并行处理指令(例如,_mm256_madd_epi16指令)时,步骤15具体可以包括步骤151-步骤153:
步骤151:利用待使用并行处理指令对第m个第三向量与第m个第四向量进行数据处理,得到第m个第五向量。其中,m为正整数,m≤2N。
其中,待使用并行处理指令用于针对目标数据类型下两个数据进行乘法和邻数加和处理。例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,该待使用并行处理指令可以是_mm256_madd_epi16指令。
为了便于理解步骤151,下面结合示例进行说明。
作为示例,当第m个第三向量为[a’1+16×[m-1],a’2+16×[m-1],…,a’16+16×[m-1]],而且第m个第四向量为[b’1+16×[m-1],b’2+16×[m-1],…,b’16+16×[m-1]]时,利用_mm256_madd_epi16指令确定该第m个第五向量的过程具体可以包括步骤1511-步骤1512:
步骤1511:将第m个第三向量中各个元素与第m个第四向量中相应位置上元素进行乘法处理,得到第一乘法处理结果[a’1+16×[m-1]×b’1+16×[m-1],a’2+16×[m-1]×b’2+16×[m-1],…,a’16+16×[m-1]×b’16+16×[m-1]]。
步骤1512:将第一乘法处理结果中相邻元素进行加和,得到该第m个第五向量[a’1+16×[m-1]×b’1+16×[m-1]+a’2+16×[m-1]×b’2+16×[m-1],a’3+16×[m-1]×b’3+16×[m-1]+a’4+16×[m-1]×b’4+16×[m-1],…,a’15+16×[m-1]×b’15+16×[m-1]+a’16+16×[m-1]×b’16+16×[m-1]],以使该第m个第五向量的数据维度为8。
需要说明的是,上文a’1+16×[m-1]用于按照目标数据类型表达上文a=[a1,a2,…,aD]中元素a 1+16×[m-1]所携带的数据值;上文a’2+16×[m-1]用于按照目标数据类型表达上文a=[a1,a2,…,aD]中元素a 2+16×[m-1]所携带的数据值;……(依次类推)。同理,上文b’1+16×[m-1]用于按照目标数据类型表达上文b=[b1,b2,…,bD]中元素b 1+16×[m-1]所携带的数据值;上文b’2+16×[m-1]用于按照目标数据类型表达上文b=[b1,b2,…,bD]中元素b 2+16×[m-1]所携带的数据值;……(依次类推)。
还需要说明的是,因_mm256_madd_epi16指令的处理结果通常为int32数据,故上文第m个第五向量可以包括8个Int32数据。
基于上述步骤151的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到第m个第三向量与第m个第四向量之后,因这两个向量中元素均属于目标数据类型,故该电子设备可以直接调用该目标数据类型对应的并行指令,针对这两个向量进行数据处理(例如,数据乘法、相邻数据加和等处理),得到第m个第五向量,以便后续能够基于该第m个第五向量中所记录的数据,确定上文第一向量与第二向量之间的内积。
步骤152:将第1个第五向量至第2N个第五向量进行累加处理,得到第六向量。
本申请实施例中,在获取到第1个第五向量[c1,c2,……,c8]、第2个第五向量[c9,c10,……,c16]、……、以及第2N个第五向量[c1+8×(2N-1),c2+8×(2N-1),……,c8+8×(2N-1)]之后,可以将这些第五向量进行累加处理,得到第六向量[c1+c9+……+c1+8×(2N-1),c2+c10+……+c2+8×(2N-1),……,c8+c16+……+c8+8×(2N-1)]。
需要说明的是,上文c1+8×(m-1)=a’1+16×[m-1]×b’1+16×[m-1]+a’2+16×[m-1]×b’2+16×[m-1];c2+8×(m-1)=a’3+16×[m-1]×b’3+16×[m-1]+a’4+16×[m-1]×b’4+16×[m-1];……(依次类推);c8+8×(m-1)=a’15+16×[m-1]×b’15+16×[m-1]+a’16+16×[m-1]×b’16+16×[m-1];其中,m为正整数,m≤2N。
还需要说明的是,本申请实施例不限定步骤152的实施方式,例如,其可以利用累加器进行实施。
步骤153:将第六向量中所有元素之间的和值,确定为第一向量与第二向量之间的内积。
本申请实施例中,在获取到第六向量[e1,e2,……,e8]之后,可以将该第六向量中所有元素进行加和,得到第一向量与第二向量之间的内积为e1+e2+……+e8。
需要说明的是,上文e1=c1+c9+……+c1+8×(2N-1);上文e2=c2+c10+……+c2+8×(2N-1);……(以此类推)。
还需要说明的是,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,该电子设备需要通过执行7次加和指令才能完成步骤153。
实际上,为了进一步提高向量积计算效率,本申请实施例还提供了步骤153的另一种可能的实施方式,其具体可以包括步骤1531-步骤1535:
步骤1531:将第六向量中第三高位数据段与第三低位数据段进行加和处理,得到第八向量。
其中,第三低位数据段用于表示第六向量中处于低位的数据。例如,当该第六向量为[e1,e2,……,e8]时,该第三低位数据段具体可以为[e1,e2,e3,e4]。
第三高位数据段用于表示第六向量中处于高位的数据。例如,当该第六向量为[e1,e2,……,e8]时,该第三高位数据段具体可以为[e5,e6,e7,e8]。
第八向量是指第六向量中高位数据与低位数据之间的加和处理结果。例如,当第六向量为[e1,e2,……,e8]时,该第八向量具体可以为:[e1+e5,e2+e6,e3+e7,e4+e8]。
另外,本申请实施例不限定步骤1531的实施方式,例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,步骤1531具体可以为:该电子设备利用_mm_add_epi32指令,将第六向量中高位数据与低位数据进行加和处理,得到第八向量。
步骤1532:将第八向量进行元素重排处理,得到第九向量。
其中,第九向量是指第八向量的元素重排处理。可见,该第九向量与该第八向量之间的区别就是:该第九向量中所有元素的排列顺序不同于该第八向量中所有元素的排列顺序。为了便于理解,下面结合示例进行说明。
作为示例,当第八向量为[f1,f2,f3,f4]时,第九向量为[f4,f3,f2,f1]。可见,该第九向量中所有元素的排列顺序与该第八向量中所有元素的排列顺序完全相反。需要说明的是,上文f1=e1+e5;上文f2=e2+e6;上文f3=e3+e7;上文f4=e4+e8。
另外,本申请实施例不限定步骤1532的实施方式,例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,步骤1532具体可以为:该电子设备利用_mm_shuffle_epi32指令,将第八向量进行元素重排处理,得到第九向量。
步骤1533:将第八向量和第九向量进行向量加和处理,得到第十向量。
其中,第十向量是指第八向量与第九向量之间的向量和。例如,当第八向量为[f1,f2,f3,f4],而且第九向量为[f4,f3,f2,f1]时,该第十向量为[f1+f4,f2+f3,f3+f2,f4+f1]。
另外,本申请实施例不限定步骤1533的实施方式,例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,步骤1533具体可以为:该电子设备利用_mm_add_epi32指令,将第八向量和第九向量进行向量加和处理,得到第十向量。
步骤1534:将第十向量进行邻数加和处理,得到待使用向量。
其中,待使用向量是指第十向量中相邻元素之间的和值。例如,当第十向量为[g1,g2,g3,g4]时,该待使用向量具体可以为[g1+g2,g3+g4]。需要说明的是,上文g1=f1+f4;上文g2=f2+f3;g3=f3+f2;上文g4=f4+f1。可见,上文g1+g2=f1+f4+f2+f3;上文g3+g4=f3+f2+f4+f1。
另外,本申请实施例不限定步骤1534的实施方式,例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,步骤1534具体可以为:该电子设备利用_mm_hadd_epi32指令,将第十向量进行邻数加和处理,得到待使用向量。
步骤1535:将待使用向量中最高位元素或者最低位元素,确定为第一向量与第二向量之间的内积。
本申请实施例中,在获取到待使用向量[h1,h2]之后,可以将该待使用向量中最高位元素h2,确定为第一向量与第二向量之间的内积;或者,将该待使用向量中最低位元素h1,确定为第一向量与第二向量之间的内积。需要说明的是,上文h1=g1+g2;上文h2=g3+g4。
另外,本申请实施例不限定步骤1535的实施方式,例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,步骤1535具体可以为:该电子设备利用_mm_extract_epi32指令,将待使用向量中最高位元素或者最低位元素,确定为第一向量与第二向量之间的内积。
基于上述步骤1531至步骤1535的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到第六向量之后,该电子设备通过执行高低位数据相加→数据重排→向量加和→邻数加和→数据提取这五个操作指令,完成针对该第六向量中所有元素进行数据加和处理的目的。可见,在上述步骤1531至步骤1535所示的数据处理过程中,该电子设备只需执行5次指令即可完成针对该第六向量中所有元素的加和处理过程,如此能够有效地减少该电子设备在该加和处理过程中所执行的指令数,从而能够有效地提高该电子设备的加和处理效率,进而能够有效地提高该电子设备的向量内积计算效率。
基于上文步骤11至步骤15的相关内容可知,在一些可能的实施方式中,对于电子设备(例如,计算机等)来说,在该电子设备接收到向量内积计算请求之后,该电子设备可以先按照其并行处理要求,将该向量内积计算请求携带的两个向量进行划分处理,得到一些能够符合该并行处理要求的数据段;再由该电子设备通过指令调用方式,实现针对这些数据段进行并行处理过程,以得到第一向量与该第二向量之间的内积,如此能够实现并行计算待处理数据类型的向量内积的的目的,如此有利于提高该电子设备的向量内积计算效率。
方法实施例三
实际上,计算机通常是按照一定数据依次执行各个指令的,故为了进一步提高向量内积计算效果,本申请实施例还提供了数据处理方法的又一种可能的实施方式,在该实施方式中,当上文目标数据类型对应的并行指令包括待使用并行处理指令时,该数据处理方法具体可以包括步骤41-步骤51这十一个步骤:
步骤41:获取向量内积计算请求。
需要说明的是,步骤41的相关内容请参见上文S1。
步骤42:按照待使用划分参数,对第一向量进行划分处理,得到至少一个第一数据段。
需要说明的是,步骤42的相关内容请参见上文步骤12。
步骤43:按照待使用划分参数,对第二向量进行划分处理,得到至少一个第二数据段。
需要说明的是,步骤43的相关内容请参见上文步骤13。
步骤44:将第i个第一数据段和第i个第二数据段分别从内存加载至寄存器。其中,i为正整数。
其中,i用于表示当前迭代过程中需要被处理的数据段的标识。
另外,i的初始值可以为1。也就是,当本申请实施例提供的数据处理方法由电子设备执行时,该电子设备可以先针对第一向量中第1个第一数据段和第二向量中第1个第二数据段进行数据处理(例如,加载至寄存器、高低位数据提取等),以便在完成之后,再开启下一轮迭代过程,并借助下一轮迭代过程完成针对该第一向量中第2个第一数据段和第二向量中第2个第二数据段的数据处理过程,如此能够通过多轮迭代过程实现针对第一向量与第二向量的一些数据处理过程。
此外,本申请实施例不限定步骤44的实施方式,例如,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,步骤44具体可以为:该电子设备利用一个_mm256_loadu_si256指令,将第i个第一数据段从内存加载至寄存器;同样,该电子设备利用另一个_mm256_loadu_si256指令,将第i个第二数据段从内存加载至寄存器。
需要说明的是,本申请实施例不限定上述步骤“电子设备利用一个_mm256_loadu_si256指令,将第i个第一数据段从内存加载至寄存器”与上述步骤“电子设备利用另一个_mm256_loadu_si256指令,将第i个第二数据段从内存加载至寄存器”之间的执行顺序,例如,可以先执行前者再执行后者。又如,也可以先执行后者再执行前者。
基于上述步骤44的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备获取到向量内积计算请求之后,该电子设备可以借助两个_mm256_loadu_si256指令,将该向量内积计算请求所携带的第一向量中的第i个第一数据段、以及该向量内积计算请求所携带的第二向量中的第i个第二数据段均从内存加载至寄存器,以便后续该电子设备能够针对该寄存器中已加载好的两个数据段进行相应地处理。
步骤45:根据寄存器中第i个第一数据段中高位数据和低位数据,分别确定第2i-1个第三向量和第2i个第三向量;并根据寄存器中第i个第二数据段中高位数据和低位数据,分别确定第2i-1个第四向量和第2i个第四向量。
需要说明的是,步骤45中“第2i-1个第三向量”的确定过程类似于上文步骤14中第2n-1个第三向量的确定过程;步骤45中“第2i个第三向量”的确定过程类似于上文步骤14中第2n个第三向量的确定过程;步骤45中“第2i-1个第四向量”的确定过程类似于上文步骤14中第2n-1个第四向量的确定过程;步骤45中“第2i个第四向量”的确定过程类似于上文步骤14中第2n个第四向量的确定过程;为了简要起见,在此不再赘述。
为了便于理解步骤45,下面结合示例进行说明。
作为示例,当本申请实施例提供的数据处理方法由电子设备执行,而且该电子设备中存在avx并行指令集时,步骤45具体可以包括步骤451-步骤456:
步骤451:电子设备利用_mm256_extracti128_si256指令,将第i个第一数据段拆分成第i个第一高位数据段和第i个第一低位数据段。
需要说明的是,步骤451的实施方式类似于上文步骤21的任一实施方式。
步骤452:电子设备利用_mm256_extracti128_si256指令,将第i个第二数据段拆分成第i个第二高位数据段和第i个第二低位数据段。
需要说明的是,步骤452的实施方式类似于上文步骤31的任一实施方式。
步骤453:电子设备利用_mm256_cvtepi8_epi16指令,对该第i个第一高位数据段进行数据位扩展处理,得到第2i-1个第三向量。
需要说明的是,步骤453的实施方式类似于上文步骤22的任一实施方式。
步骤454:电子设备利用_mm256_cvtepi8_epi16指令,对该第i个第一低位数据段进行数据位扩展处理,得到第2i个第三向量。
需要说明的是,步骤454的实施方式类似于上文步骤23的任一实施方式。
步骤455:电子设备利用_mm256_cvtepi8_epi16指令,对该第i个第二高位数据段进行数据位扩展处理,得到第2i-1个第四向量。
需要说明的是,步骤455的实施方式类似于上文步骤32的任一实施方式。
步骤456:电子设备利用_mm256_cvtepi8_epi16指令,对该第i个第二低位数据段进行数据位扩展处理,得到第2i个第四向量。
需要说明的是,步骤456的实施方式类似于上文步骤33的任一实施方式。
需要说明的是,本申请实施例不限定上文步骤451至步骤456的执行顺序,例如,其可以采用任意一种符合电子设备的指令执行要求的顺序进行实施。
基于步骤45的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备的寄存器中已加载了第i个第一数据段(或者,第i个第二数据段)之后,该电子设备可以先借助_mm256_extracti128_si256指令和_mm256_cvtepi8_epi16指令这两个指令,将第i个第一数据段(或者,第i个第二数据段)转换成两个第三向量(或者第四向量),以使这两个第三向量(或者第四向量)能够按照目标数据类型表达出该第i个第一数据段(或者,第i个第二数据段)具体携带了哪些数据值,如此能够有效地防止在后续数据处理过程中发生溢出现象。
步骤46:利用待使用并行处理指令,对第2i-1个第三向量和第2i-1个第四向量进行数据处理,得到第2i-1个第五向量;并利用待使用并行处理指令,对第2i个第三向量和第2i个第四向量进行数据处理,得到第2i个第五向量。
需要说明的是,步骤46中“第2i-1个第五向量”的确定过程类似于上文步骤151所示的第m个第五向量的确定过程;步骤46中“第2i个第五向量”的确定过程类似于上文步骤151所示的第m个第五向量的确定过程;为了简要起见,在此不再赘述。
为了便于理解步骤46,下面结合示例进行说明。
作为示例,当本申请实施例提供的数据处理方法由电子设备执行,该电子设备中存在avx并行指令集,而且待使用并行处理指令为_mm256_madd_epi16指令时,步骤46具体可以为:该电子设备利用一个_mm256_madd_epi16指令,对第2i-1个第三向量和第2i-1个第四向量进行数据处理,得到第2i-1个第五向量;并利用另一个_mm256_madd_epi16指令,对第2i个第三向量和第2i个第四向量进行数据处理,得到第2i个第五向量。
需要说明的是,本申请实施例不限定上述步骤“利用一个_mm256_madd_epi16指令,对第2i-1个第三向量和第2i-1个第四向量进行数据处理,得到第2i-1个第五向量”与上述步骤“利用另一个_mm256_madd_epi16指令,对第2i个第三向量和第2i个第四向量进行数据处理,得到第2i个第五向量”之间的执行顺序,例如,可以先执行前者再执行后者。又如,也可以先执行后者再执行前者。
基于上述步骤46的相关内容可知,对于一个电子设备(例如,计算机)来说,该电子设备可以借助两个_mm256_madd_epi16指令,分别针对两对向量(例如,一对向量是第2i-1个第三向量和第2i-1个第四向量,另一对向量是第2i个第三向量和第2i个第四向量)进行相应地数据处理,得到这两对向量对应的第五向量。
步骤47:根据第2i-1个第五向量和第2i个第五向量之间的向量加和结果,确定第七向量。
上文“第2i-1个第五向量和第2i个第五向量之间的向量加和结果”用于表示该第2i-1个第五向量中各个元素与该第2i个第五向量中相应位置上元素之间的和值。例如,当第2i-1个第五向量为[c1+8×(2i-1-1),c2+8×(2i-1-1),……,c8+8×(2i-1-1)],而且该第2i个第五向量为[c1+8×(2i-1),c2+8×(2i-1),……,c8+8×(2i-1)]时,该“第2i-1个第五向量和第2i个第五向量之间的向量加和结果”可以为[c1+8×(2i-1-1)+c1+8×(2i-1),c2+8×(2i-1-1)+c2+8×(2i-1),……,c8+8×(2i-1-1)+c8+8×(2i-1)]。
第七向量是指在至少一轮迭代过程中所涉及的第五向量的累加结果。例如,当i的初始值为1,i的更新公式为i’=i+1,第2i-1个第五向量为[c1+8×(2i-1-1),c2+8×(2i-1-1),……,c8+8×(2i-1-1)],而且该第2i个第五向量为[c1+8×(2i-1),c2+8×(2i-1),……,c8+8×(2i-1)]时,该第七向量可以为[c1+c9+……+c1+8×(2i-1),c2+c10+……+c2+8×(2i-1),……,c8+c16+……+c8+8×(2i-1)]。
另外,本申请实施例不限定第七向量的确定过程(也就是,步骤47的实施方式),例如,当本申请实施例提供的数据处理方法由电子设备执行时,步骤47具体可以为:该电子设备将第2i-1个第五向量与第2i个第五向量累加至累加器中,得到第七向量。其中,累加器中记录有在当前轮迭代过程之前的所有迭代过程中所涉及的第五向量的累加结果;而且在第一轮迭代过程的开始时刻,该累加器记录有零向量这一个初始值。
步骤48:判断是否达到预设停止条件,若是,则执行步骤50,若否,则执行步骤49。
其中,预设停止条件可以预先设定,例如,其具体可以为:遍历完第一向量中所有第一数据段(或者,遍历了第二向量中所有第二数据段)。又如,当i的初始值为1,而且i的更新公式为i’=i+1时,该预设停止条件可以为i等于N。
基于步骤48的相关内容可知,对于一个电子设备(例如,计算机)来说,在该电子设备将第2i-1个第五向量与第2i个第五向量累加至累加器之后,该电子设备可以判断是否达到预设停止条件,若是,则可以确定已经完成了针对第一向量中所有第一数据段(或者,遍历了第二向量中所有第二数据段)的遍历过程,故可以执行下文步骤50即可;若否,则可以确定仍未完成针对第一向量中所有第一数据段(或者,遍历了第二向量中所有第二数据段)的遍历过程,故可以执行下文步骤49,以实现下一轮迭代过程。
步骤49:更新i,并返回执行步骤44及其后续步骤。
本申请实施例中,对于一个电子设备(例如,计算机)来说,在该电子设备确定未达到预设停止条件时,该电子设备可以更新i(例如,按照下文公式(1)更新i),以使更新后的i能够标识出未被遍历过的数据段,以便后续能够基于该更新后的i,返回继续执行上文步骤44及其后续步骤,以实现下一轮迭代过程,如此迭代多轮之后,能够实现针对第一向量中所有第一数据段(或者,遍历了第二向量中所有第二数据段)的遍历过程。
i’=i+1 (1)
其中,i’表示i的更新后的数值;i表示i的更新前的数值。
步骤50:根据第七向量,确定第六向量。
本申请实施例中,对于一个电子设备(例如,计算机)来说,在该电子设备确定已达到预设停止条件时,该电子设备可以直接将该第七向量,确定为第六向量。
步骤51:将第六向量中所有元素之间的和值,确定为第一向量与第二向量之间的内积。
需要说明的是,步骤51的相关内容请参见上文步骤153。
基于上述步骤41至步骤51的相关内容可知,,在一些可能的实施方式中,对于电子设备(例如,计算机等)来说,在该电子设备接收到向量内积计算请求之后,该电子设备可以先按照其并行处理要求,将该向量内积计算请求携带的两个向量进行划分处理,得到一些能够符合该并行处理要求的数据段;再由该电子设备通过按照一定顺序调用大量并行指令的方式,实现并行计算该第一向量与该第二向量之间的内积的目的,如此有利于提高该电子设备的向量内积计算效果。
基于上述方法实施例提供的数据处理方法,本申请实施例还提供了一种数据处理装置,下面结合附图进行解释和说明。
装置实施例
装置实施例提供的数据处理装置的技术详情,请参照上述方法实施例。
参见图2,该图为本申请实施例提供的一种数据处理装置的结构示意图。
本申请实施例提供的数据处理装置200,包括:
获取单元201,用于获取向量内积计算请求;其中,所述向量内积计算请求用于请求计算第一向量与第二向量之间的内积;所述第一向量的数据类型和所述第二向量的数据类型均为待处理数据类型;
转换单元202,用于对所述第一向量和所述第二向量分别进行数据类型转换处理,得到第三向量和第四向量;其中,所述第三向量的数据类型和所述第四向量的数据类型均为目标数据类型;所述目标数据类型不同于所述待处理数据类型;
确定单元203,用于利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积。
在一种可能的实施方式中,所述数据处理装置200还包括:
划分单元,用于按照待使用划分参数,对所述第一向量进行划分处理,得到至少一个第一数据段;按照待使用划分参数,对所述第二向量进行划分处理,得到至少一个第二数据段;
所述转换单元202,具体用于:根据所述至少一个第一数据段,确定所述第三向量,并根据所述至少一个第四数据段,确定所述第四向量。
在一种可能的实施方式中,所述第一数据段的个数为N;所述第二数据段的个数为N;
所述转换单元202,具体用于:
将第n个第一数据段拆分成第n个第一高位数据段和第n个第一低位数据段;对所述第n个第一高位数据段进行数据位扩展处理,得到第2n-1个第三向量,并对所述第n个第一低位数据段进行数据位扩展处理,得到第2n个第三向量;其中,n为正整数,n≤N,N为正整数;
将第n个第二数据段拆分成第n个第二高位数据段和第n个第二低位数据段;对所述第n个第二高位数据段进行数据位扩展处理,得到第2n-1个第四向量,并对所述第n个第二低位数据段进行数据位扩展处理,得到第2n个第四向量;其中,n为正整数,n≤N,N为正整数。
在一种可能的实施方式中,所述目标数据类型对应的并行指令包括待使用并行处理指令;
所述确定单元203,具体用于:利用所述待使用并行处理指令,对第m个第三向量与第m个第四向量进行数据处理,得到第m个第五向量;其中,m为正整数,m≤2N;将第1个第五向量至第2N个第五向量进行累加处理,得到第六向量;将所述第六向量中所有元素之间的和值,确定为所述第一向量与所述第二向量之间的内积。
在一种可能的实施方式中,所述目标数据类型对应的并行指令包括待使用并行处理指令;所述第一数据段的个数为N;所述第二数据段的个数为N;i的初始值为1;其中,N为正整数,i为正整数;
所述数据处理装置200还包括:
加载单元,用于将第i个第一数据段和第i个第二数据段分别从内存加载至寄存器;
所述转换单元202,具体用于:根据所述寄存器中第i个第一数据段中高位数据和低位数据,分别确定第2i-1个第三向量和第2i个第三向量,并根据所述寄存器中第i个第二数据段中高位数据和低位数据,分别确定第2i-1个第四向量和第2i个第四向量;
所述确定单元203,具体用于:利用所述待使用并行处理指令,对所述第2i-1个第三向量和所述第2i-1个第四向量进行数据处理,得到第2i-1个第五向量;并利用所述待使用并行处理指令,对所述第2i个第三向量和所述第2i个第四向量进行数据处理,得到第2i个第五向量;根据第2i-1个第五向量和第2i个第五向量之间的向量加和结果,确定第七向量;更新所述i,并继续执行所述将第i个第一数据段和第i个第二数据段分别从内存加载至寄存器的步骤,直至在达到预设停止条件之后,根据所述第七向量,确定第六向量;将所述第六向量中所有元素之间的和值,确定为所述第一向量与所述第二向量之间的内积。
在一种可能的实施方式中,所述第一向量与所述第二向量之间的内积的确定过程,包括:将所述第六向量中第三高位数据段与第三低位数据段进行加和处理,得到第八向量;将所述第八向量进行元素重排处理,得到第九向量;将所述第八向量和所述第九向量进行向量加和处理,得到第十向量;将所述第十向量进行邻数加和处理,得到待使用向量;将所述待使用向量中最高位元素或者最低位元素,确定为所述第一向量与所述第二向量之间的内积。
在一种可能的实施方式中,所述数据处理装置200还包括:
推算单元,用于在获取到设备并行描述参数之后,根据所述设备并行描述参数和所述待处理数据类型,确定所述待使用划分参数。
在一种可能的实施方式中,所述第一向量为第一图像数据的视觉特征;所述第二向量为所述第二图像数据的视觉特征;所述第一向量与所述第二向量之间的内积用于表示所述第一图像数据与所述第二图像数据的视觉相似程度。
在一种可能的实施方式中,所述第一向量为第一语音数据的语音特征;所述第二向量为所述第二语音数据的语音特征;所述第一向量与所述第二向量之间的内积用于表示所述第一语音数据与所述第二语音数据的语音相似程度。
在一种可能的实施方式中,所述待处理数据类型为8比特整数型int8;所述目标数据类型为16比特整数型int16。
基于上述数据处理装置200的相关内容可知,对于本申请实施例提供的数据处理装置200来说,如果向量内积计算请求用于请求计算待处理数据类型(例如,int8)下第一向量与该待处理数据类型下第二向量之间的内积,则在该数据处理装置接收到该向量内积计算请求之后,该数据处理装置可以先将该第一向量和该第二向量分别进行数据类型转换处理,得到第三向量和第四向量,以使该第三向量和第四向量均属于目标数据类型(例如,int16);再由该数据处理装置通过调用该目标数据类型对应的并行指令针对该第三向量和第四向量进行数据处理的方式,得到该第一向量与该第二向量之间的内积,如此能够实现借助该数据处理装置中已存在的该目标数据类型对应的并行指令,并行实现该待处理数据类型的向量内积计算过程,从而能够有效地提高数据处理装置针对该待处理数据类型的向量内积的计算效率,进而能够有效地提高向量内积的计算效果。
另外,本申请实施例还提供了一种电子设备,所述设备包括处理器以及存储器:所述存储器,用于存储指令或计算机程序;所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行本申请实施例提供的数据处理方法的任一实施方式。
参见图3,其示出了适于用来实现本公开实施例的电子设备300的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图3示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图3所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图3示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM302被安装。在该计算机程序被处理装置301执行时,执行本公开实施例的方法中限定的上述功能。
本公开实施例提供的电子设备与上述实施例提供的方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例与上述实施例具有相同的有益效果。
本申请实施例还提供了一种计算机可读介质,所述计算机可读介质中存储有指令或计算机程序,当所述指令或计算机程序在设备上运行时,使得所述设备执行本申请实施例提供的数据处理方法的任一实施方式。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(Hyper Text TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备可以执行上述方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元/模块的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的***或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种数据处理方法,其特征在于,所述方法包括:
获取向量内积计算请求;其中,所述向量内积计算请求用于请求计算第一向量与第二向量之间的内积;所述第一向量的数据类型和所述第二向量的数据类型均为待处理数据类型;
对所述第一向量和所述第二向量分别进行数据类型转换处理,得到第三向量和第四向量;其中,所述第三向量的数据类型和所述第四向量的数据类型均为目标数据类型;所述目标数据类型不同于所述待处理数据类型;
利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积;
所述第一向量为第一图像数据的视觉特征;所述第二向量为第二图像数据的视觉特征;所述第一向量与所述第二向量之间的内积用于表示所述第一图像数据与所述第二图像数据的视觉相似程度;
或者,
所述第一向量为第一语音数据的语音特征;所述第二向量为第二语音数据的语音特征;所述第一向量与所述第二向量之间的内积用于表示所述第一语音数据与所述第二语音数据的语音相似程度。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照待使用划分参数,对所述第一向量进行划分处理,得到至少一个第一数据段;
按照待使用划分参数,对所述第二向量进行划分处理,得到至少一个第二数据段;
所述对所述第一向量和所述第二向量分别进行数据类型转换处理,得到第三向量和第四向量,包括:
根据所述至少一个第一数据段,确定所述第三向量,并根据所述至少一个第四数据段,确定所述第四向量。
3.根据权利要求2所述的方法,其特征在于,所述第一数据段的个数为N;所述第三向量的确定过程,包括:
将第n个第一数据段拆分成第n个第一高位数据段和第n个第一低位数据段;对所述第n个第一高位数据段进行数据位扩展处理,得到第2n-1个第三向量,并对所述第n个第一低位数据段进行数据位扩展处理,得到第2n个第三向量;其中,n为正整数,n≤N,N为正整数;
所述第二数据段的个数为N;所述第四向量的确定过程,包括:
将第n个第二数据段拆分成第n个第二高位数据段和第n个第二低位数据段;对所述第n个第二高位数据段进行数据位扩展处理,得到第2n-1个第四向量,并对所述第n个第二低位数据段进行数据位扩展处理,得到第2n个第四向量;其中,n为正整数,n≤N,N为正整数。
4.根据权利要求3所述的方法,其特征在于,所述目标数据类型对应的并行指令包括待使用并行处理指令;
所述利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积,包括:
利用所述待使用并行处理指令,对第m个第三向量与第m个第四向量进行数据处理,得到第m个第五向量;其中,m为正整数,m≤2N;
将第1个第五向量至第2N个第五向量进行累加处理,得到第六向量;
将所述第六向量中所有元素之间的和值,确定为所述第一向量与所述第二向量之间的内积。
5.根据权利要求2所述的方法,其特征在于,所述目标数据类型对应的并行指令包括待使用并行处理指令;所述第一数据段的个数为N;所述第二数据段的个数为N;i的初始值为1;其中,N为正整数,i为正整数;
所述方法还包括:
将第i个第一数据段和第i个第二数据段分别从内存加载至寄存器;
所述根据所述至少一个第一数据段,确定所述第三向量,并根据所述至少一个第四数据段,确定所述第四向量,包括:
根据所述寄存器中第i个第一数据段中高位数据和低位数据,分别确定第2i-1个第三向量和第2i个第三向量,并根据所述寄存器中第i个第二数据段中高位数据和低位数据,分别确定第2i-1个第四向量和第2i个第四向量;
所述利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积,包括:
利用所述待使用并行处理指令,对所述第2i-1个第三向量和所述第2i-1个第四向量进行数据处理,得到第2i-1个第五向量;并利用所述待使用并行处理指令,对所述第2i个第三向量和所述第2i个第四向量进行数据处理,得到第2i个第五向量;
根据第2i-1个第五向量和第2i个第五向量之间的向量加和结果,确定第七向量;
更新所述i,并继续执行所述将第i个第一数据段和第i个第二数据段分别从内存加载至寄存器的步骤,直至在达到预设停止条件之后,根据所述第七向量,确定第六向量;
将所述第六向量中所有元素之间的和值,确定为所述第一向量与所述第二向量之间的内积。
6.根据权利要求4或者5所述的方法,其特征在于,所述将所述第六向量中所有元素之间的和值,确定为所述第一向量与所述第二向量之间的内积,包括:
将所述第六向量中第三高位数据段与第三低位数据段进行加和处理,得到第八向量;
将所述第八向量进行元素重排处理,得到第九向量;
将所述第八向量和所述第九向量进行向量加和处理,得到第十向量;
将所述第十向量进行邻数加和处理,得到待使用向量;
将所述待使用向量中最高位元素或者最低位元素,确定为所述第一向量与所述第二向量之间的内积。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在获取到设备并行描述参数之后,根据所述设备并行描述参数和所述待处理数据类型,确定所述待使用划分参数。
8.根据权利要求1所述的方法,其特征在于,所述待处理数据类型为8比特整数型int8;所述目标数据类型为16比特整数型int16。
9.一种数据处理装置,其特征在于,包括:
获取单元,用于获取向量内积计算请求;其中,所述向量内积计算请求用于请求计算第一向量与第二向量之间的内积;所述第一向量的数据类型和所述第二向量的数据类型均为待处理数据类型;
转换单元,用于对所述第一向量和所述第二向量分别进行数据类型转换处理,得到第三向量和第四向量;其中,所述第三向量的数据类型和所述第四向量的数据类型均为目标数据类型;所述目标数据类型不同于所述待处理数据类型;
确定单元,用于利用所述目标数据类型对应的并行指令、所述第三向量、以及所述第四向量,确定所述第一向量与所述第二向量之间的内积;
所述第一向量为第一图像数据的视觉特征;所述第二向量为第二图像数据的视觉特征;所述第一向量与所述第二向量之间的内积用于表示所述第一图像数据与所述第二图像数据的视觉相似程度;
或者,
所述第一向量为第一语音数据的语音特征;所述第二向量为第二语音数据的语音特征;所述第一向量与所述第二向量之间的内积用于表示所述第一语音数据与所述第二语音数据的语音相似程度。
10.一种电子设备,其特征在于,所述设备包括:处理器和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行权利要求1-8任一项所述的方法。
11.一种计算机可读介质,其特征在于,所述计算机可读介质中存储有指令或计算机程序,当所述指令或计算机程序在设备上运行时,使得所述设备执行权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210826441.1A CN115080916B (zh) | 2022-07-14 | 2022-07-14 | 一种数据处理方法、装置、电子设备、计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210826441.1A CN115080916B (zh) | 2022-07-14 | 2022-07-14 | 一种数据处理方法、装置、电子设备、计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115080916A CN115080916A (zh) | 2022-09-20 |
CN115080916B true CN115080916B (zh) | 2024-06-18 |
Family
ID=83260642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210826441.1A Active CN115080916B (zh) | 2022-07-14 | 2022-07-14 | 一种数据处理方法、装置、电子设备、计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115080916B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112711738A (zh) * | 2019-10-25 | 2021-04-27 | 安徽寒武纪信息科技有限公司 | 用于向量内积的计算装置、方法和集成电路芯片 |
CN113961875A (zh) * | 2017-05-08 | 2022-01-21 | 辉达公司 | 矩阵乘积累加运算的广义加速 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10324689B2 (en) * | 2017-11-21 | 2019-06-18 | Intel IP Corporation | Scalable memory-optimized hardware for matrix-solve |
CN115437602A (zh) * | 2021-10-20 | 2022-12-06 | 中科寒武纪科技股份有限公司 | 任意精度计算加速器、集成电路装置、板卡及方法 |
CN114282026A (zh) * | 2021-12-17 | 2022-04-05 | 北京百度网讯科技有限公司 | 一种图像数据的存储方法、装置、电子设备及存储介质 |
-
2022
- 2022-07-14 CN CN202210826441.1A patent/CN115080916B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961875A (zh) * | 2017-05-08 | 2022-01-21 | 辉达公司 | 矩阵乘积累加运算的广义加速 |
CN112711738A (zh) * | 2019-10-25 | 2021-04-27 | 安徽寒武纪信息科技有限公司 | 用于向量内积的计算装置、方法和集成电路芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN115080916A (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413812B (zh) | 神经网络模型的训练方法、装置、电子设备及存储介质 | |
CN113436620B (zh) | 语音识别模型的训练方法、语音识别方法、装置、介质及设备 | |
WO2020207174A1 (zh) | 用于生成量化神经网络的方法和装置 | |
CN113327599B (zh) | 语音识别方法、装置、介质及电子设备 | |
CN111309962A (zh) | 提取音频片段的方法、装置以及电子设备 | |
CN114090740B (zh) | 意图识别方法、装置、可读介质及电子设备 | |
CN112752118B (zh) | 视频生成方法、装置、设备及存储介质 | |
CN111968648B (zh) | 语音识别方法、装置、可读介质及电子设备 | |
CN111312223B (zh) | 语音分割模型的训练方法、装置和电子设备 | |
CN110009101B (zh) | 用于生成量化神经网络的方法和装置 | |
CN114420135A (zh) | 基于注意力机制的声纹识别方法及装置 | |
CN112257459B (zh) | 语言翻译模型的训练方法、翻译方法、装置和电子设备 | |
CN111312224B (zh) | 语音分割模型的训练方法、装置和电子设备 | |
CN115080916B (zh) | 一种数据处理方法、装置、电子设备、计算机可读介质 | |
CN111915689A (zh) | 用于生成目标函数的方法、装置、电子设备和计算机可读介质 | |
CN111653261A (zh) | 语音合成方法、装置、可读存储介质及电子设备 | |
CN113593527B (zh) | 一种生成声学特征、语音模型训练、语音识别方法及装置 | |
CN113986958B (zh) | 文本信息的转换方法、装置、可读介质和电子设备 | |
CN116306709A (zh) | 数据处理方法、介质及电子设备 | |
CN116072108A (zh) | 模型生成方法、语音识别方法、装置、介质及设备 | |
CN115878949A (zh) | 信号处理方法以及相关设备 | |
CN110209851B (zh) | 模型训练方法、装置、电子设备及存储介质 | |
CN113051933A (zh) | 模型训练方法、文本语义相似度确定方法、装置和设备 | |
CN113361677A (zh) | 神经网络模型的量化方法和装置 | |
CN114692085B (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 |