CN110647722A - 数据处理方法及装置以及相关产品 - Google Patents

数据处理方法及装置以及相关产品 Download PDF

Info

Publication number
CN110647722A
CN110647722A CN201910895151.0A CN201910895151A CN110647722A CN 110647722 A CN110647722 A CN 110647722A CN 201910895151 A CN201910895151 A CN 201910895151A CN 110647722 A CN110647722 A CN 110647722A
Authority
CN
China
Prior art keywords
data
group
preset condition
selecting
condition
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
Application number
CN201910895151.0A
Other languages
English (en)
Other versions
CN110647722B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201910895151.0A priority Critical patent/CN110647722B/zh
Publication of CN110647722A publication Critical patent/CN110647722A/zh
Application granted granted Critical
Publication of CN110647722B publication Critical patent/CN110647722B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及一种数据处理方法及装置以及相关产品。所述产品包括控制模块,所述控制模块包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

数据处理方法及装置以及相关产品
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法及装置以及相关产品。
背景技术
在数据处理过程中,通常需要在大量数据中选取满足条件的部分数据,例如,在神经网络运算中的TopK算子,需要选取K个(K为正整数)数值最大(或最小或满足其他不等式或其他数值上的约束)的数据或下标(index)进行输出。目前,主要以堆排序、快速排序、冒泡排序等排序算法为基础进行数据选取并输出,算法的时间复杂度为K*log2N,数据处理效率较低。
发明内容
有鉴于此,本公开提出了一种数据处理方法及装置以及相关产品。
根据本公开的一方面,提供了一种数据处理方法,所述方法应用于处理器,所述方法包括:将待处理数据划分为预设数量的第一数据组;在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,其中,K为正整数;根据每个第一数据组中的K个第一数据,确定第二数据组;在所述第二数据组中,通过所述向量运算选取满足所述第一预设条件的K个目标数据。
根据本公开的另一方面,提供了一种数据处理装置,所述装置应用于处理器,所述装置包括:数据组划分模块,用于将待处理数据划分为预设数量的第一数据组;第一数据选取模块,用于在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,其中,K为正整数;数据组确定模块,用于根据每个第一数据组中的K个第一数据,确定第二数据组;第二数据选取模块,用于在所述第二数据组中,通过所述向量运算选取满足所述第一预设条件的K个目标数据。
根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括如上所述的数据处理装置。
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括如上所述的人工智能芯片。
根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如上所述的人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
根据本公开的实施例,能够将待处理数据划分为多个第一数据组,并分别通过向量运算选取满足第一预设条件的K个第一数据,然后根据每个第一数据组中的K个第一数据,确定第二数据组,并在第二数据组中,通过向量运算选取满足第一预设条件的K个目标数据,从而可以在数据选取过程中,通过向量运算提高数据选取速度,进而提高数据处理效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的数据处理方法的处理器的示意图。
图2示出根据本公开实施例的数据处理方法的流程图。
图3示出根据本公开实施例的数据处理方法的步骤S12的流程图。
图4示出根据本公开实施例的数据处理方法的步骤S12的流程图。
图5示出根据本公开实施例的数据处理方法的步骤S12的流程图。
图6示出根据本公开实施例的数据处理方法的应用场景的示意图。
图7示出根据本公开实施例的数据处理装置的框图。
图8示出根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
根据本公开实施例的数据处理方法可应用于处理器中,该处理器可以是通用处理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图1示出根据本公开实施例的数据处理方法的处理器的示意图。如图1所示,处理器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
图2示出根据本公开实施例的数据处理方法的流程图。所述数据处理方法可应用于处理器,其中,处理器可包括通用处理器(例如中央处理器CPU、图形处理器GPU)和专用处理器(例如人工智能处理器、科学计算处理器或数字信号处理器)。本公开对处理器的具体类型不作限制。
如图2所示,该数据处理方法包括:
步骤S11,将待处理数据划分为预设数量的第一数据组。
其中,预设数量可用于指示第一数据组的数量,例如,预设数量为8时,可将待处理数据划分为8个第一数据组。预设数量可结合实际需要进行设定,例如,可根据处理器的性能、数据对齐约束、选取/输出数据的数量等来确定预设数量。本公开对预设数量的设定方式不作限制。
在一种可能的实现方式中,每个第一数据组中数据的数量可以相同,也可以不同。本领域技术人员可根据实际情况确定每个第一数据组中数据的数量,本公开对此不作限制。
在一种可能的实现方式中,在划分第一数据组时,如果存在第一数据组中数据的数量较少的情况,例如,第一数据组中数据的数量小于或等于选取/输出数据的数量,可将该第一数据组中的数据并入其他第一数据组中的任意一组中进行处理,也可根据其他第一数据组的数量对该第一数据组中的数据进行划分,分别并入其他第一数据组中进行处理,还可选择其他处理方式,本公开对此不作限制。
步骤S12,在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,其中,K为正整数。
其中,向量运算可以是指将第一数据组中的数据设置为向量,并使用该向量进行运算;第一预设条件可用于表示选取数据的条件,例如,第一预设条件可以是选取K个数值最大的数据、选取K个数值最小的数据或选取K个满足其他数据约束的数据等,本公开对第一预设条件的具体内容不作限制。
在一种可能的实现方式中,将第一数据组中的数据设置为向量后,可根据第一预设条件,进行向量运算,从第一数据组中选取出K个第一数据。
步骤S13,根据每个第一数据组中的K个第一数据,确定第二数据组。
在一种可能的实现方式中,可将每个第一数据组中的K个第一数据进行合并,组成第二数据组。其中,数据合并的顺序可按照K个第一数据的选取完成次序设置,也可随机设置,或按照其他方式设置。本公开对数据合并的具体顺序不作限制。
在一种可能的实现方式中,数据合并的方式有多种,例如,可以在两个或多个第一数据组完成K个第一数据的选取后,开始对选取完成的第一数据进行合并,直到将所有第一数据合并完成,组成第二数据组;也可以在每个第一数据组的K个第一数据均选取完成后,再进行数据合并,组成第二数据组;或采用其他方式进行数据合并。本公开对此不作限制。
步骤S14,在所述第二数据组中,通过所述向量运算选取满足所述第一预设条件的K个目标数据。
也就是说,可首先将第二数据组中的数据设置为向量,然后根据第一预设条件,进行向量运算,从第二数据组中选取出K个目标数据。其中,选取的K个目标数据,可以为目标数据的数值,也可以为目标数据的下标(可用于表示目标数据在待处理数据中的位置索引),或采用其他方式,本公开对此不作限制。
根据本公开的实施例,能够将待处理数据划分为多个第一数据组,并分别通过向量运算选取满足第一预设条件的K个第一数据,然后根据每个第一数据组中的K个第一数据,确定第二数据组,并在第二数据组中,通过向量运算选取满足第一预设条件的K个目标数据,从而可以在数据选取过程中,通过向量运算提高数据选取速度,进而提高数据处理效率。
在一种可能的实现方式中,处理器可包括多个处理单元,预设数量可以是根据处理单元的数量、处理单元的计算能力中的至少一种确定的。其中,处理单元的计算能力可以是处理单元在一个计算周期内并行处理的最大数据量。
举例来说,预设数量可根据处理器中处理单元的数量来确定,例如,应用该数据处理方法的处理器包括4个处理单元,可以将预设数量设置为4,根据该预设数量,将待处理数据划分为4个第一数据组;预设数量还可根据处理单元的计算能力来确定,例如,处理单元的计算能力为每个计算周期内并行处理1000个字节,待处理数据为10000个数据类型为uint16的数据,则待处理数据的数据量为20000个字节(即10000*2),可根据“待处理数据的数据量/处理单元的计算能力”来确定预设数量,即20000/1000=20个,根据该预设数量,将待处理数据划分为20个第一数据组,随机分配给各个处理单元进行处理;预设数量还可根据处理单元的数量以及处理单元的计算能力来确定,例如,可首先根据处理单元的数量4,将10000个数据类型为uint16的待处理数据分为4组数据,每组数据包括为2500个数据类型为uint16的数据,然后再根据处理单元的计算能力将每组数据划分为5组(即2500*2/1000=5),按照这种方式,可将预设数量设置为20,根据该预设数量及划分方式,将10000个数据类型为uint16的待处理数据划分为20个第一数据组,其中,每个处理单元处理5个第一数据组。
应当理解,处理器中处理单元的数量、处理单元的计算能力可根据处理器硬件的不同而不同,本公开对处理单元的数量以及处理单元的计算能力不作限制。本公开也对待处理数据的数据类型不作限制。
在本实施例中,根据处理器中处理单元的数量、处理单元的计算能力中的至少一种来确定预设数量,使得第一数据组的划分与处理器的处理能力匹配,能够尽可能地发挥硬件的执行效率,从而提高数据处理效率。
图3示出根据本公开实施例的数据处理方法的步骤S12的流程图。如图3所示,步骤S12可包括:
步骤S121,根据第一数据组,确定第一向量,其中,所述第一向量的维数与所述第一数据组中数据的数量相同。
在一种可能的实现方式中,可根据第一数据组,设置一个维数与第一数据组中数据的数量N(N为正整数)相同的向量,并将该向量确定为与第一数据组对应的第一向量。例如,第一数据组中包括10个数据,分别为(1,7,2,8,3,4,6,5,8,9),可确定与其对应的第一向量为10维向量{1,7,2,8,5,4,6,5,8,9}。
步骤S122,根据预设的第一参考向量以及所述第一向量,确定所述第一数据组中满足第二预设条件的M个第二数据,M为正整数。
其中,第二预设条件可以是与第一预设条件相关的条件,例如,第一预设条件为选取K个数值最大的数据,第二预设条件为选取大于第一参考阈值的数据。本领域技术人员可以根据实际需要设置第二预设条件,本公开对第二预设条件的具体内容不作限制。
在一种可能的实现方式中,第一参考阈值(哨兵)可以是用来与第一数据组中的数据进行比较的参考数值。可以选取第一数据组中的第一个数据作为第一参考阈值,也可以从第一数据组中随机选择一个数据作为第一参考阈值,还可以采用其他选取方式,本公开对第一参考阈值的选取方式及具体数值不作限制。
在一种可能的实现方式中,第一参考向量可根据第一参考阈值以及第一向量的维数来确定,例如,在第二预设条件中,第一参考阈值设为5,可根据第一参考阈值5以及步骤S121中的第一向量的维数10,确定第一参考向量为{5,5,5,5,5,5,5,5,5,5}。
在一种可能的实现方式中,可根据第二预设条件,将第一向量中的数据与第一参考向量中相应位置的数据进行比较,确定出第一数据组中满足第二预设条件的第二数据,其中,第二数据的数量用M来表示。例如,根据第二预设条件,可将第一向量{1,7,2,8,5,4,6,5,8,9}中的数据与第一参考向量{5,5,5,5,5,5,5,5,5,5}中相应位置的数据进行比较,从第一数据组中确定出大于第一参考阈值(5)的5个第二数据(7,8,6,8,9)。
步骤S123,在M等于K的情况下,将所述第二数据作为满足所述第一预设条件的K个第一数据。
在一种可能的实现方式中,根据步骤S122确定出M个第二数据后,可判断已选出的数据的数量M与待选取的数据的数量K之间的关系。如果M等于K,即根据第二预设条件选取的第二数据也同时满足第一预设条件,则可将该M个第二数据作为满足第一预设条件的K个第一数据。例如,第一预设条件为选取K个数值最大的数据,其中K=5,第二预设条件为选取大于第一参考阈值的数据,其中第一参考阈值为5,通过步骤S122可确定出满足第二预设条件的5个第二数据,在第二数据的数量M=K的情况下,可将M个第二数据作为满足第一预设条件的K个第一数据。
在本实施例中,能够根据第一数据组确定第一向量,并根据预设的第一参考向量及第一向量,确定出第一数据组中满足第二预设条件的M个第二数据,在M等于K的情况下,将第二数据作为满足第一预设条件的K个第一数据。通过这种方式,可以在选取M个第二数据时,通过向量运算同时将N个数据与相应位置的N个第一参考阈值进行比较,从而提高选取数据的速度。
图4示出根据本公开实施例的数据处理方法的步骤S12的流程图。如图4所示,步骤S12还可包括:
步骤S124,在M大于K的情况下,在所述M个第二数据中,通过向量运算选取满足第三预设条件的第三数据。
其中,M大于K表示根据第二预设条件确定的第二数据的数量超过了第一预设条件要求选取的数据的数量。如果M大于K,则需要从M个第二数据中再次进行数据选取。
在一种可能的实现方式中,第三预设条件可用于再次选取数据,第三预设条件可以是与第二预设条件类似的条件,例如,第二预设条件为选取大于第一参考阈值的数据,第三预设条件为选取大于第二参考阈值的数据,第二参考阈值可大于第一参考阈值。第二参考阈值的选取方式与第一参考阈值的选取方式类似,此处不再赘述。
在一种可能的实现方式中,根据步骤S122确定出M个第二数据后,可在M大于K的情况下,通过向量运算从M个第二数据中选取满足第三预设条件的第三数据,其中,通过向量运算选取数据的过程与步骤S121、步骤S122类似。
举例来说,第一预设条件为选取K个数值最大的数据,其中K=5,第二预设条件为选取大于第一参考阈值5的数据,第一数据组为{6,7,9,8,5,4,6,5,8,9},可确定出第一向量为{6,7,9,8,5,4,6,5,8,9},第一参考向量为{5,5,5,5,5,5,5,5,5,5}。根据第二预设条件,将第一向量中的数据与第一参考向量中相应位置的数据进行比较,可从第一数据组中确定出满足第二预设条件的7个第二数据(即M=7),第二数据分别为(6,7,9,8,6,8,9),可知,M大于K。
在M大于K的情况下,可根据M个第二数据(6,7,9,8,6,8,9)确定出第二向量{6,7,9,8,6,8,9},并根据第二向量及第三预设条件(选取大于第二参考阈值6的数据)中的第二参考阈值6,确定出第二参考向量{6,6,6,6,6,6,6}。根据第三预设条件,将第二向量中的数据与第二参考向量中相应位置的数据进行比较,可从M个第二数据中确定出满足第三预设条件的第三数据(7,9,8,8,9),其中,第三数据的数量为5,即,通过向量运算选取出满足第三预设条件的第三数据。
在一种可能的实现方式中,如果选取的第三数据的数量大于K,可使用与步骤S124类似的方法,在选取的第三数据中,重新设置条件进行数据选取。可多次迭代执行数据选取,直到选取出的数据的数量等于K或小于K,然后可根据选取出的数据的数量与K的关系,分别执行不同的处理:在选取出的数据的数量等于K的情况下,执行步骤S125,在选取出的数据的数量小于K的情况下,执行步骤S126。
步骤S125,在所述第三数据的数量等于K的情况下,将所述第三数据作为满足所述第一预设条件的K个第一数据。
在一种可能的实现方式中,在步骤S124中选取出第三数据后,可在第三数据的数量等于K的情况下,将第三数据作为满足第一预设条件的K个第一数据。例如,第一预设条件为选取K=5个数值最大的数据,第三预设条件为选取大于第一参考阈值6的数据,通过步骤S124确定出第三数据后,可在第三数据的数量5等于K的情况下,将第三数据作为满足第一预设条件的K个第一数据。
在本实施例中,在M大于K的情况下,可以从M个第二数据中通过向量运算选取满足第三预设条件的第三数据,并在第三数据的数量等于K的情况下,将第三数据作为满足第一预设条件的K个第一数据。通过这种方式,能够从M个第二数据中选取第三数据,而不用从包含N个数据的第一数据组中选取第三数据,减少了输入数据的数量,从而可提高数据处理的效率。
图5示出根据本公开实施例的数据处理方法的步骤S12的流程图。如图5所示,步骤S12还可包括:
步骤S126,在M小于K的情况下,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,并将所述第二数据以及K-M个所述第四数据,作为满足第一预设条件的K个第一数据。
其中,M小于K表示根据第二预设条件选取的第二数据的数量小于第一预设条件要求选取的数据的数量,需要从第一数据组中补充选取K-M个数据。
在一种可能的实现方式中,在M小于K的情况下,可以在第一数据组中第二数据之外的数据中,即第一数据组中未被选取的数据中,选取K-M个第四数据,并将第二数据以及K-M个第四数据作为满足第一预设条件的K个第一数据。例如,第一数据组为(1,2,3,8,5,4,6,5,2,9),第一预设条件为选取K个数值最大的数据,其中K=5,第二预设条件为选取大于第一参考阈值5的数据,可首先通过向量运算,从第一数据组中确定出满足第二预设条件的3个第二数据,即M=3;然后由K-M=2可知,需要补充选取2个第四数据,可以在第一数据组中第二数据之外的数据中,选取2个第四数据,并将第二数据以及第四数据作为满足第一预设条件的K个第一数据。
在本实施例中,在M小于K的情况下,即在第二数据的数量不足的情况下,能够根据缺少的数据的数量(K-M),从第一数据组中第二数据之外的数据中选取K-M个第四数据,并将第二数据以及第四数据作为满足第一预设条件的K个第一数据,使得在第二数据的数量不足时,可以从第一数据组中未被选取的数据中补充选取数据,从而提高数据处理的效率。
在一种可能的实现方式中,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,可包括:在第一数据组中所述第二数据之外的数据中,通过向量运算选取满足第四预设条件的T个第五数据;在T等于K-M的情况下,将所述T个第五数据作为第四数据。
其中,第四预设条件可用于在第一数据组中第二数据之外的数据中补充选取数据。第四预设条件可以与第二预设条件相关但不重叠,例如,第二预设条件为选取大于第一参考阈值的数据,第四预设条件可以为选取等于第一参考阈值的数据。本领域技术人员可根据实际需要对第四预设条件进行设置,本公开对此不作限制。
在一种可能的实现方式中,可在第一数据组中第二数据之外的数据中,通过向量运算选取满足第四预设条件的T个第五数据。其中,通过向量运算选取数据的过程与步骤S121、步骤S122类似。
例如,第一预设条件为选取K个数值最大的数据(其中K=5),第一数据组为(1,2,3,8,5,4,6,5,2,9),第二预设条件为选取大于第一参考阈值5的数据,第四预设条件为选取等于第一参考阈值5的数据,根据步骤S121和步骤S122,从第一数据组中确定出满足第二预设条件的第二数据的数量为3,可知,需要补充选取2个第四数据,即K-M=2。可在第一数据组中第二数据之外的数据(1,2,3,5,4,5,2)中,通过向量运算选取满足第四预设条件的第五数据,其中,第五数据的数量T=2。
在一种可能的实现方式中,在T等于K-M的情况下,可将T个第五数据作为第四数据。也就是说,选取的第五数据的数量T等于需要补充选取的第四数据的数量K-M时,可将T个第五数据作为第四数据。
在本实施例中,使用与第二预设条件不重叠的第四预设条件,通过向量运算从第一数据组中第二数据之外的数据中选取T个第五数据,可以避免因选取条件重叠导致的多次选取数据,并在T等于K-M的情况下将T个第五数据作为第四数据,从而可提高选取数据的速度。
在一种可能的实现方式中,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,可包括:在T大于K-M的情况下,从T个第五数据中选取K-M个第五数据作为所述第四数据。也就是说,在满足第四预设条件的第五数据的数量T大于K-M的情况下,可从T个第五数据中按照输入顺序或随机选择或按照其他方式选取K-M个第五数据,并将选取的K-M个第五数据作为第四数据。应当理解,本公开对选取第五数据的方式不作限制。
在本实施例中,在T大于K-M的情况下,从T个第五数据中选取K-M个第五数据作为第四数据,可提高数据处理的效率。
在一种可能的实现方式中,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,可包括:在T小于K-M的情况下,从第一数据组中所述第二数据以及所述第五数据之外的数据中,通过向量运算选取满足第五预设条件的K-M-T个第六数据;将所述第二数据、所述第五数据以及所述第六数据,作为满足第一预设条件的K个第一数据。
其中,第五预设条件可用于在第一数组中第二数据以及第五数据之外的数据中补充选取数据。第五预设条件可以与第二预设条件相关,例如,第二预设条件为选取大于第一参考阈值的数据,第五预设条件可为选取大于第三参考阈值的数据。本领域技术人员可根据实际需要对第五预设条件进行设置,本公开对此不作限制。
在一种可能的实现方式中,在T小于K-M的情况下,可从第一数据组中第二数据以及第五数据之外的数据中,通过向量运算选取满足第五预设条件的K-M-T个第六数据。其中,通过向量运算选取数据的过程与步骤S121、步骤S122类似。
举例来说,第一预设条件为选取K个数值最大的数据(其中K=5),第一数据组为(1,2,3,8,5,4,6,1,2,9),第二预设条件为选取大于第一参考阈值5的数据,第四预设条件为选取等于第一参考阈值5的数据,第五预设条件为选取大于第三参考阈值3的数据。根据步骤S121和步骤S122,从第一数据组中确定出满足第二预设条件的第二数据的数量为3(即M=3);然后从第一数据组中第二数据之外的数据(1,2,3,5,4,1,2)中,通过向量运算选取满足第四预设条件的第五数据的数量为1(即T=1),T小于K-M,在该情况下,可从第一数据组中第二数据以及第五数据之外的数据(1,2,3,4,1,2)中,通过向量运算选取满足第五预设条件的K-M-T个(即1个)第六数据。
在一种可能的实现方式中,从第一数据组中第二数据以及第五数据之外的数据中,通过向量运算选取出的满足第五预设条件的第六数据的数量大于K-M-T的情况下,可使用与步骤S124类似的方法,在选取的第六数据中,重新设置条件进行数据选取,可多次迭代执行数据选取,直到选取出的数据的数量等于K-M-T或小于K-M-T。在选取出的数据的数量小于K-M-T的情况下,可使用与步骤S126类似的方法,补充选取数据,直到选取出的数据的数量等于K-M-T。
在一种可能的实现方式中,从第一数据组中第二数据以及第五数据之外的数据中,通过向量运算选取出的满足第五预设条件的第六数据的数量小于K-M-T的情况下,可使用与步骤S126类似的方法,补充选取数据,直到选取出的数据的数量等于K-M-T。
在一种可能的实现方式中,选取出满足第五预设条件的K-M-T个第六数据后,可将第二数据、第五数据以及第六数据,作为满足第一预设条件的K个第一数据。
在本实施例中,在T小于K-M的情况下,即在第二数据以及第五数据的数量不足的情况下,能够根据缺少的数据的数量(K-M-T),从第一数据组中第二数据以及第五数据之外的数据中选取第六数据,并将第二数据、第五数据以及第六数据作为满足第一预设条件的K个第一数据,使得在第二数据以及第五数据的数量不足时,可以补充选取数据,从而提高数据处理的效率。
在一种可能的实现方式中,在第一数据组中,可通过向量运算确定满足第一预设条件的K个第一数据的索引数据。其中,索引数据可用来标识满足第一预设条件的数据。例如,第一数据组为(1,7,2,8,5,4,6,5,8,9),第一预设条件为选取K个数值最大的数据,其中K=5,索引数据的数值为1表示满足第一预设条件,数值为0表示不满足第一预设条件,其初始值均设置0,通过向量运算确定的满足第一预设条件的K个第一数据的索引数据为(0,1,0,1,0,0,1,0,1,1)。
应当理解,索引数据的取值还可以设置为其他方式,例如,索引数据的数值不为0表示满足第一预设条件,数值为0表示不满足第一预设条件。本公开对索引数据的设置方式及具体取值不作限制。
在一种可能的实现方式中,确定K个第一数据的索引数据后,可通过向量选择指令从第一数据组中选取与所述索引数据对应的K个第一数据。例如,第一数据组为(1,7,2,8,5,4,6,5,8,9),满足第一预设条件的K个第一数据的索引数据为(0,1,0,1,0,0,1,0,1,1),根据索引数据,通过向量选择指令从第一数据组中选取的K个第一数据为(7,8,6,8,9)。
在一种可能的实现方式中,在索引数据选取的数据的数据类型与第一数据组中数据的数据类型不匹配时,可通过循环向量乘法,乘立即数,再通过数据类型转换指令,以使索引数据选取的数据的数据类型与第一数据组中数据的数据类型匹配。
例如,第一数据组中数据的数据类型为uint32,每一个数据占用4个字节,而索引数据(0,1,1,0,0)选取的数据的数据类型为half,即每个索引数据选取的数据的数据类型为half,那么,可对索引数据进行循环向量乘法,乘0x0101,使得索引数据中half类型的数值1的数据变为0x0101,然后将其看作是2个uint8的数值1,再通过uint8_to_half数据类型转换指令,将索引数据扩充至2倍,转换后的索引数据为(0,0,1,1,1,1,0,0,0,0),然后再进行向量选择运算。通过这种方式,转换前的索引数据只能选取第二、三个half数据,转换后的可以选取第二、三个uint32的数据。
应当理解,数据类型可包括但不限于char、uint8、uint16、uint32、half、float、double等。本公开对索引数据的数据类型与第一数据组中数据的数据类型不作限制。
在一种可能的实现方式中,在通过向量运算选取其他数据(例如第二数据、第三数据、目标数据等)时,也可以使用索引数据以及向量选择指令,具体方法与上述方法类似,此处不再赘述。
图6示出根据本公开实施例的数据处理方法的应用场景的示意图,所述数据处理方法用于从待处理数据中选取K个数值最大的数据。
在将待处理数据划分为预设数量的第一数据组后,如图6所示,对于每个第一数据组,可首先根据步骤S501,读取第一数据组,根据步骤S502,在第一数据组中选取参考阈值,并在步骤S503中,通过向量运算选取第一数据组中大于参考阈值的M个第二数据;
在步骤S503中选取出M个第二数据后,可在步骤S504中,判断M是否大于K,如果M大于K,则执行步骤S505,在大于参考阈值的M个数据中,重新选取数据,否则,执行步骤S506,判断M是否等于K,如果M等于K,则执行步骤S507,将M个第二数据作为从第一数据组中选取的K个第一数据,否则,执行步骤S508,在第一数据组中第二数据之外的数据中,通过向量运算选取等于参考阈值的T个第五数据;
在步骤S508中选取出T个第五数据后,可在步骤S509中,判断T是否大于或等于K,如果T大于或等于K,则执行步骤S510,从T个第五数据中,选取K-M个第五数据,并将其与M个第二数据作为从第一数据组中选取的K个第一数据,否则,执行步骤S511,在小于参考阈值的数据中,通过向量运算选取K-M-T个第六数据,并在步骤S512中,将选取的K-M-T个第六数据、T个第五数据以及M个第二数据作为从第一数据组中选取的K个第一数据;
最后,在步骤S513中,输出从第一数据组中选取的K个第一数据,即输出步骤S507或步骤S510或步骤S512中选取的K个第一数据。
对待处理数据中的每个第一数据组,使用如图6所示的方法进行数据选取,可得到每个第一数据组的K个第一数据;然后,将每个第一数据组的K个第一数据合并为第二数据组,可使用与图6类似的方法,从第二数据组中选取出K个数值最大的目标数据,并将其作为最终输出,即从待处理数据中选取出的K个数值最大的数据。
在一种可能的实现方式中,使用所述数据处理方法进行数据选取时,可对待处理数据进行多层分组。例如,所述数据处理方法应用于多核处理器进行TopK运算。在进行TopK运算时,可根据处理器的处理单元数量(即处理器核的数量)对待处理数据进行分组,为每个处理单元分配不同的数据,使得多个处理单元可以同步进行TopK运算,以提高TopK运算的速度;对于每个处理单元需要处理的数据,可根据处理单元的计算能力进行分组,分为多个第一数据组,并依次对每个第一数据组进行TopK运算,然后将各第一数据组的TopK运算结果进行合并,再次进行TopK运算,得到各处理单元的TopK运算结果;然后将各处理器单元的TopK运算结果进行合并,再次进行TopK运算,得到本次TopK运算的最终输出结果。应当理解,该TopK运算过程中,进行了两次迭代,本领域技术人员可根据实际情况(例如待处理数据的数据规模)进行迭代次数设置,本公开对迭代次数不作限制。
在一种可能的实现方式中,对于每个处理单元需要处理的数据,也可根据处理单元的计算能力,确定每个第一数据组中数据的数量N,可首先选取前N个数据,作为第一个第一数据组,对其进行TopK运算,选取出第一数据组中满足第一预设条件的K个第一数据;然后可将从第一数据组中选取的K个第一数据以及剩余数据中的N-K个数据作为下一个第一数据组,进行TopK运算,直到该处理单元需要处理的数据处理完成。从而可以从该处理单元需要处理的数据中选取出满足第一预设条件的K个第一数据。
根据本公开的实施例,能够在数据选取过程中,通过向量运算提高数据选取速度,进而提高数据处理效率。该数据处理方法可应用于神经网络加速器,用于对神经网络中TopK算子进行加速,可应用于多核处理器进行TopK运算,还可应用于其他拥有算法内相关向量指令的硬件。本公开对该数据处理方法的应用场景不作限制。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
进一步需要说明的是,虽然各个流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图7示出根据本公开实施例的数据处理装置的框图。所述数据处理装置应用于处理器。如图7所示,所述数据处理装置包括:
数据组划分模块61,用于将待处理数据划分为预设数量的第一数据组;
第一数据选取模块62,用于在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,其中,K为正整数;
数据组确定模块63,用于根据每个第一数据组中的K个第一数据,确定第二数据组;
第二数据选取模块64,用于在所述第二数据组中,通过所述向量运算选取满足所述第一预设条件的K个目标数据。
在一种可能的实现方式中,所述第一数据选取模块62,包括:向量确定子模块,用于根据第一数据组,确定第一向量,其中,所述第一向量的维数与所述第一数据组中数据的数量相同;第一数据确定子模块,用于根据预设的第一参考向量以及所述第一向量,确定所述第一数据组中满足第二预设条件的M个第二数据,M为正整数;第二数据确定子模块,用于在M等于K的情况下,将所述第二数据作为满足所述第一预设条件的K个第一数据。
在一种可能的实现方式中,所述第一数据选取模块62,还包括:第一数据选取子模块,用于在M大于K的情况下,在所述M个第二数据中,通过向量运算选取满足第三预设条件的第三数据;第三数据确定子模块,用于在所述第三数据的数量等于K的情况下,将所述第三数据作为满足所述第一预设条件的K个第一数据。
在一种可能的实现方式中,所述第一数据选取模块62,还包括:第二数据选取子模块,用于在M小于K的情况下,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据;第四数据确定子模块,用于将所述第二数据以及K-M个所述第四数据,作为满足第一预设条件的K个第一数据。
在一种可能的实现方式中,所述第二数据选取子模块,包括:第三数据选取子模块,用于在第一数据组中所述第二数据之外的数据中,通过向量运算选取满足第四预设条件的T个第五数据;第四数据确定子模块,用于在T等于K-M的情况下,将所述T个第五数据作为第四数据。
在一种可能的实现方式中,所述第二数据选取子模块,包括:第五数据确定子模块,用于在T大于K-M的情况下,从T个第五数据中选取K-M个第五数据作为所述第四数据。
在一种可能的实现方式中,所述第二数据选取子模块,包括:第四数据选取子模块,用于在T小于K-M的情况下,从第一数据组中所述第二数据以及所述第五数据之外的数据中,通过向量运算选取满足第五预设条件的K-M-T个第六数据;第六数据确定子模块,用于将所述第二数据、所述第五数据以及所述第六数据,作为满足第一预设条件的K个第一数据。
在一种可能的实现方式中,所述处理器包括多个处理单元,其中,所述预设数量是根据处理单元的数量、处理单元的计算能力中的至少一种确定的。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述数据处理装置。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
图8示出根据本公开实施例的板卡的结构框图,参阅图8,上述板卡除了包括上述人工智能芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与人工智能芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述人工智能芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述人工智能芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述人工智能芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A1,一种数据处理方法,所述方法应用于处理器,所述方法包括:
将待处理数据划分为预设数量的第一数据组;
在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,其中,K为正整数;
根据每个第一数据组中的K个第一数据,确定第二数据组;
在所述第二数据组中,通过所述向量运算选取满足所述第一预设条件的K个目标数据。
条款A2,根据条款A1所述的方法,在每个第一数据组中,分别通过向量运算选取满足第一预设条件的K个第一数据,包括:
根据第一数据组,确定第一向量,其中,所述第一向量的维数与所述第一数据组中数据的数量相同;
根据预设的第一参考向量以及所述第一向量,确定所述第一数据组中满足第二预设条件的M个第二数据,M为正整数;
在M等于K的情况下,将所述第二数据作为满足所述第一预设条件的K个第一数据。
条款A3,根据条款A2所述的方法,在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,还包括:
在M大于K的情况下,在所述M个第二数据中,通过向量运算选取满足第三预设条件的第三数据;
在所述第三数据的数量等于K的情况下,将所述第三数据作为满足所述第一预设条件的K个第一数据。
条款A4,根据条款A2所述的方法,在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,还包括:
在M小于K的情况下,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,并将所述第二数据以及K-M个所述第四数据,作为满足第一预设条件的K个第一数据。
条款A5,根据条款A4所述的方法,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,包括:
在第一数据组中所述第二数据之外的数据中,通过向量运算选取满足第四预设条件的T个第五数据;
在T等于K-M的情况下,将所述T个第五数据作为第四数据。
条款A6,根据条款A5所述的方法,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,包括:
在T大于K-M的情况下,从T个第五数据中选取K-M个第五数据作为所述第四数据。
条款A7,根据条款A5所述的方法,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,包括:
在T小于K-M的情况下,从第一数据组中所述第二数据以及所述第五数据之外的数据中,通过向量运算选取满足第五预设条件的K-M-T个第六数据;
将所述第二数据、所述第五数据以及所述第六数据,作为满足第一预设条件的K个第一数据。
条款A8,根据条款A1-A7所述的方法,所述处理器包括多个处理单元,其中,所述预设数量是根据处理单元的数量、处理单元的计算能力中的至少一种确定的。
条款A9,一种数据处理装置,所述装置应用于处理器,所述装置包括:
数据组划分模块,用于将待处理数据划分为预设数量的第一数据组;
第一数据选取模块,用于在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,其中,K为正整数;
数据组确定模块,用于根据每个第一数据组中的K个第一数据,确定第二数据组;
第二数据选取模块,用于在所述第二数据组中,通过所述向量运算选取满足所述第一预设条件的K个目标数据。
条款A10,根据条款A9所述的装置,所述第一数据选取模块,包括:
向量确定子模块,用于根据第一数据组,确定第一向量,其中,所述第一向量的维数与所述第一数据组中数据的数量相同;
第一数据确定子模块,用于根据预设的第一参考向量以及所述第一向量,确定所述第一数据组中满足第二预设条件的M个第二数据,M为正整数;
第二数据确定子模块,用于在M等于K的情况下,将所述第二数据作为满足所述第一预设条件的K个第一数据。
条款A11,根据条款A10所述的装置,所述第一数据选取模块,还包括:
第一数据选取子模块,用于在M大于K的情况下,在所述M个第二数据中,通过向量运算选取满足第三预设条件的第三数据;
第三数据确定子模块,用于在所述第三数据的数量等于K的情况下,将所述第三数据作为满足所述第一预设条件的K个第一数据。
条款A12,根据条款A10所述的装置,所述第一数据选取模块,还包括:
第二数据选取子模块,用于在M小于K的情况下,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据;
第四数据确定子模块,用于将所述第二数据以及K-M个所述第四数据,作为满足第一预设条件的K个第一数据。
条款A13,根据条款A12所述的装置,所述第二数据选取子模块,包括:
第三数据选取子模块,用于在第一数据组中所述第二数据之外的数据中,通过向量运算选取满足第四预设条件的T个第五数据;
第四数据确定子模块,用于在T等于K-M的情况下,将所述T个第五数据作为第四数据。
条款A14,根据条款A13所述的装置,所述第二数据选取子模块,包括:
第五数据确定子模块,用于在T大于K-M的情况下,从T个第五数据中选取K-M个第五数据作为所述第四数据。
条款A15,根据条款A13所述的装置,所述第二数据选取子模块,包括:
第四数据选取子模块,用于在T小于K-M的情况下,从第一数据组中所述第二数据以及所述第五数据之外的数据中,通过向量运算选取满足第五预设条件的K-M-T个第六数据;
第六数据确定子模块,用于将所述第二数据、所述第五数据以及所述第六数据,作为满足第一预设条件的K个第一数据。
条款A16,根据条款A9-A15所述的装置,所述处理器包括多个处理单元,其中,所述预设数量是根据处理单元的数量、处理单元的计算能力中的至少一种确定的。
条款A17,一种人工智能芯片,所述芯片包括如条款A9-A16中任意一项所述的数据处理装置。
条款A18,一种电子设备,所述电子设备包括如条款A17所述的人工智能芯片。
条款A19,一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A17所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (19)

1.一种数据处理方法,其特征在于,所述方法应用于处理器,所述方法包括:
将待处理数据划分为预设数量的第一数据组;
在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,其中,K为正整数;
根据每个第一数据组中的K个第一数据,确定第二数据组;
在所述第二数据组中,通过所述向量运算选取满足所述第一预设条件的K个目标数据。
2.根据权利要求1所述的方法,其特征在于,在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,包括:
根据第一数据组,确定第一向量,其中,所述第一向量的维数与所述第一数据组中数据的数量相同;
根据预设的第一参考向量以及所述第一向量,确定所述第一数据组中满足第二预设条件的M个第二数据,M为正整数;
在M等于K的情况下,将所述第二数据作为满足所述第一预设条件的K个第一数据。
3.根据权利要求2所述的方法,其特征在于,在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,还包括:
在M大于K的情况下,在所述M个第二数据中,通过向量运算选取满足第三预设条件的第三数据;
在所述第三数据的数量等于K的情况下,将所述第三数据作为满足所述第一预设条件的K个第一数据。
4.根据权利要求2所述的方法,其特征在于,在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,还包括:
在M小于K的情况下,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,并将所述第二数据以及K-M个所述第四数据,作为满足第一预设条件的K个第一数据。
5.根据权利要求4所述的方法,其特征在于,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,包括:
在第一数据组中所述第二数据之外的数据中,通过向量运算选取满足第四预设条件的T个第五数据;
在T等于K-M的情况下,将所述T个第五数据作为第四数据。
6.根据权利要求5所述的方法,其特征在于,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,包括:
在T大于K-M的情况下,从T个第五数据中选取K-M个第五数据作为所述第四数据。
7.根据权利要求5所述的方法,其特征在于,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据,包括:
在T小于K-M的情况下,从第一数据组中所述第二数据以及所述第五数据之外的数据中,通过向量运算选取满足第五预设条件的K-M-T个第六数据;
将所述第二数据、所述第五数据以及所述第六数据,作为满足第一预设条件的K个第一数据。
8.根据权利要求1-7所述的方法,其特征在于,所述处理器包括多个处理单元,其中,所述预设数量是根据处理单元的数量、处理单元的计算能力中的至少一种确定的。
9.一种数据处理装置,其特征在于,所述装置应用于处理器,所述装置包括:
数据组划分模块,用于将待处理数据划分为预设数量的第一数据组;
第一数据选取模块,用于在每个第一数据组中,通过向量运算选取满足第一预设条件的K个第一数据,其中,K为正整数;
数据组确定模块,用于根据每个第一数据组中的K个第一数据,确定第二数据组;
第二数据选取模块,用于在所述第二数据组中,通过所述向量运算选取满足所述第一预设条件的K个目标数据。
10.根据权利要求9所述的装置,其特征在于,所述第一数据选取模块,包括:
向量确定子模块,用于根据第一数据组,确定第一向量,其中,所述第一向量的维数与所述第一数据组中数据的数量相同;
第一数据确定子模块,用于根据预设的第一参考向量以及所述第一向量,确定所述第一数据组中满足第二预设条件的M个第二数据,M为正整数;
第二数据确定子模块,用于在M等于K的情况下,将所述第二数据作为满足所述第一预设条件的K个第一数据。
11.根据权利要求10所述的装置,其特征在于,所述第一数据选取模块,还包括:
第一数据选取子模块,用于在M大于K的情况下,在所述M个第二数据中,通过向量运算选取满足第三预设条件的第三数据;
第三数据确定子模块,用于在所述第三数据的数量等于K的情况下,将所述第三数据作为满足所述第一预设条件的K个第一数据。
12.根据权利要求10所述的装置,其特征在于,所述第一数据选取模块,还包括:
第二数据选取子模块,用于在M小于K的情况下,在第一数据组中所述第二数据之外的数据中,选取K-M个第四数据;
第四数据确定子模块,用于将所述第二数据以及K-M个所述第四数据,作为满足第一预设条件的K个第一数据。
13.根据权利要求12所述的装置,其特征在于,所述第二数据选取子模块,包括:
第三数据选取子模块,用于在第一数据组中所述第二数据之外的数据中,通过向量运算选取满足第四预设条件的T个第五数据;
第四数据确定子模块,用于在T等于K-M的情况下,将所述T个第五数据作为第四数据。
14.根据权利要求13所述的装置,其特征在于,所述第二数据选取子模块,包括:
第五数据确定子模块,用于在T大于K-M的情况下,从T个第五数据中选取K-M个第五数据作为所述第四数据。
15.根据权利要求13所述的装置,其特征在于,所述第二数据选取子模块,包括:
第四数据选取子模块,用于在T小于K-M的情况下,从第一数据组中所述第二数据以及所述第五数据之外的数据中,通过向量运算选取满足第五预设条件的K-M-T个第六数据;
第六数据确定子模块,用于将所述第二数据、所述第五数据以及所述第六数据,作为满足第一预设条件的K个第一数据。
16.根据权利要求9-15所述的装置,其特征在于,所述处理器包括多个处理单元,其中,所述预设数量是根据处理单元的数量、处理单元的计算能力中的至少一种确定的。
17.一种人工智能芯片,其特征在于,所述芯片包括如权利要求9-16中任意一项所述的数据处理装置。
18.一种电子设备,其特征在于,所述电子设备包括如权利要求17所述的人工智能芯片。
19.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求17所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
CN201910895151.0A 2019-09-20 2019-09-20 数据处理方法及装置以及相关产品 Active CN110647722B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910895151.0A CN110647722B (zh) 2019-09-20 2019-09-20 数据处理方法及装置以及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910895151.0A CN110647722B (zh) 2019-09-20 2019-09-20 数据处理方法及装置以及相关产品

Publications (2)

Publication Number Publication Date
CN110647722A true CN110647722A (zh) 2020-01-03
CN110647722B CN110647722B (zh) 2024-03-01

Family

ID=69010970

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910895151.0A Active CN110647722B (zh) 2019-09-20 2019-09-20 数据处理方法及装置以及相关产品

Country Status (1)

Country Link
CN (1) CN110647722B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112602096A (zh) * 2020-03-13 2021-04-02 深圳市大疆创新科技有限公司 卷积神经网络的运算方法、装置、设备和存储介质
CN112882722A (zh) * 2021-03-26 2021-06-01 北京灵汐科技有限公司 编译方法、芯片、计算机可读介质
CN112925525A (zh) * 2021-03-26 2021-06-08 北京灵汐科技有限公司 编译方法、映射方法、服务器、芯片、装置、介质
WO2021196160A1 (zh) * 2020-04-03 2021-10-07 北京希姆计算科技有限公司 一种数据存储管理装置及处理核
CN113626080A (zh) * 2020-05-08 2021-11-09 安徽寒武纪信息科技有限公司 数据处理装置以及相关产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104361113A (zh) * 2014-12-01 2015-02-18 中国人民大学 一种内存-闪存混合存储模式下的olap查询优化方法
CN107016583A (zh) * 2016-01-27 2017-08-04 阿里巴巴集团控股有限公司 数据处理方法及装置
CN107577990A (zh) * 2017-08-09 2018-01-12 武汉世纪金桥安全技术有限公司 一种基于gpu加速检索的大规模人脸识别方法
CN109522052A (zh) * 2018-11-27 2019-03-26 北京中科寒武纪科技有限公司 一种计算装置及板卡
US20190205649A1 (en) * 2017-12-28 2019-07-04 Microsoft Technology Licensing, Llc Querying video data with reduced latency and cost

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104361113A (zh) * 2014-12-01 2015-02-18 中国人民大学 一种内存-闪存混合存储模式下的olap查询优化方法
CN107016583A (zh) * 2016-01-27 2017-08-04 阿里巴巴集团控股有限公司 数据处理方法及装置
CN107577990A (zh) * 2017-08-09 2018-01-12 武汉世纪金桥安全技术有限公司 一种基于gpu加速检索的大规模人脸识别方法
US20190205649A1 (en) * 2017-12-28 2019-07-04 Microsoft Technology Licensing, Llc Querying video data with reduced latency and cost
CN109522052A (zh) * 2018-11-27 2019-03-26 北京中科寒武纪科技有限公司 一种计算装置及板卡

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TONG HE 等: "《Bag of Tricks for Image Classification with Convolutional Neural Networks》", 《ARXIV》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112602096A (zh) * 2020-03-13 2021-04-02 深圳市大疆创新科技有限公司 卷积神经网络的运算方法、装置、设备和存储介质
WO2021179289A1 (zh) * 2020-03-13 2021-09-16 深圳市大疆创新科技有限公司 卷积神经网络的运算方法、装置、设备和存储介质
WO2021196160A1 (zh) * 2020-04-03 2021-10-07 北京希姆计算科技有限公司 一种数据存储管理装置及处理核
CN113626080A (zh) * 2020-05-08 2021-11-09 安徽寒武纪信息科技有限公司 数据处理装置以及相关产品
CN113626080B (zh) * 2020-05-08 2023-10-03 安徽寒武纪信息科技有限公司 数据处理装置以及相关产品
CN112882722A (zh) * 2021-03-26 2021-06-01 北京灵汐科技有限公司 编译方法、芯片、计算机可读介质
CN112925525A (zh) * 2021-03-26 2021-06-08 北京灵汐科技有限公司 编译方法、映射方法、服务器、芯片、装置、介质

Also Published As

Publication number Publication date
CN110647722B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
CN110647722B (zh) 数据处理方法及装置以及相关产品
CN111125617A (zh) 数据处理方法、装置、计算机设备和存储介质
CN112765540A (zh) 数据处理方法、装置及相关产品
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110659290B (zh) 数据处理方法及装置以及相关产品
CN111353124A (zh) 运算方法、装置、计算机设备和存储介质
CN111047005A (zh) 运算方法、装置、计算机设备和存储介质
CN111061507A (zh) 运算方法、装置、计算机设备和存储介质
WO2021223642A1 (zh) 数据处理方法及装置以及相关产品
CN113298843B (zh) 数据量化处理方法、装置、电子设备和存储介质
CN209895329U (zh) 乘法器
CN110618866A (zh) 数据处理方法及装置以及相关产品
CN112784206A (zh) winograd卷积运算方法、装置、设备及存储介质
CN112766471A (zh) 运算装置及相关产品
CN112306949B (zh) 数据处理方法及装置以及相关产品
WO2021037083A1 (zh) 用于处理数据的方法、装置以及相关产品
US20240126553A1 (en) Data processing method and apparatus, and related product
CN112784207B (zh) 运算方法及相关产品
CN111384944B (zh) 全加器、半加器、数据处理方法、芯片及电子设备
CN113536221B (zh) 运算方法、处理器以及相关产品
CN112434781B (zh) 用于处理数据的方法、装置以及相关产品
CN111353125B (zh) 运算方法、装置、计算机设备和存储介质
CN113031913B (zh) 乘法器、数据处理方法、装置及芯片
CN111260044B (zh) 数据比较器、数据处理方法、芯片及电子设备
CN113626083B (zh) 数据处理装置以及相关产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant after: Zhongke Cambrian Technology Co.,Ltd.

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant before: Beijing Zhongke Cambrian Technology Co.,Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant