数据处理方法及装置以及相关产品与流程

文档序号:23796348发布日期:2021-02-02 09:50阅读:89来源:国知局
数据处理方法及装置以及相关产品与流程

[0001]
本公开涉及计算机技术领域,尤其涉及一种数据处理方法及装置以及相关产品。


背景技术:

[0002]
随着神经网络的广泛应用,用于训练神经网络的数据越来越复杂,而且数据的维度和数量尺寸上均有逐渐增加的趋势。随着处理器性能的逐渐提升以及分布式运算结构的出现,需要一种数据处理方法来适配处理器的工作。


技术实现要素:

[0003]
有鉴于此,有必要针对上述技术问题,提供一种能够提高数据处理速度及效率的数据处理方法及装置以及相关产品。
[0004]
根据本公开的一方面,提供了一种数据处理方法,应用于处理器,所述方法包括:根据与第一指令的操作数对应的第一数据块的形状以及预设的数据拆分信息,将所述第一数据块拆分为多个第一子数据块;对各第一子数据块进行处理,确定所述第一指令的处理结果,其中,所述第一指令为人工智能处理指令,所述第一数据块的形状包括所述第一数据块的维度以及各个维度的数据尺寸。
[0005]
根据本公开的另一方面,提供了一种数据处理装置,应用于处理器,所述装置包括:第一拆分模块,用于根据与第一指令的操作数对应的第一数据块的形状以及预设的数据拆分信息,将所述第一数据块拆分为多个第一子数据块;第一处理模块,用于对各第一子数据块进行处理,确定所述第一指令的处理结果,其中,所述第一指令为人工智能处理指令,所述第一数据块的形状包括所述第一数据块的维度以及各个维度的数据尺寸。
[0006]
根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括如上所述的数据处理装置。
[0007]
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括如上所述的人工智能芯片。
[0008]
根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如上所述的人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0009]
根据本公开的实施例,能够将数据块拆分为多个子数据块,并通过多个处理单元对各子数据块分别进行处理,得到相应的处理结果,从而以更高效率利用计算单元,提高处理速度,为多核并行计算提供必要的基础。
[0010]
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
[0011]
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0012]
图1示出根据本公开实施例的数据处理方法的处理器的示意图。
[0013]
图2示出根据本公开实施例的数据处理方法的流程图。
[0014]
图3示出根据本公开实施例的数据块拆分的示意图。
[0015]
图4示出根据本公开实施例的数据处理装置的框图。
[0016]
图5示出根据本公开实施例的板卡的结构框图。
具体实施方式
[0017]
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0018]
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0019]
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0020]
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0021]
根据本公开实施例的数据处理方法可应用于处理器中,该处理器可以是通用处理器,例如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)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
[0022]
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
[0023]
图1示出根据本公开实施例的数据处理方法的处理器的示意图。如图1所示,处理
器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,可包括随机存储器(ram,random access memory)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分ram存储空间和寄存器堆,又可同时拥有各自的存储空间。
[0024]
图2示出根据本公开实施例的数据处理方法的流程图。如图2所示,该方法应用于处理器,该方法包括:
[0025]
在步骤s11中:根据与第一指令的操作数对应的第一数据块的形状以及预设的数据拆分信息,将第一数据块拆分为多个第一子数据块。
[0026]
在步骤s12中:对各第一子数据块进行处理,确定第一指令的处理结果,其中,所述第一指令为人工智能处理指令,第一数据块的形状包括第一数据块的维度以及各个维度的数据尺寸。
[0027]
举例来说,在进行人工智能运算期间,可通过人工智能处理指令指示处理的类型、处理的对象等。处理器在接收到处理指令时,可先对处理指令进行解码(或译码、编译),得到解码后的处理指令。其中,处理指令可包括数据存取指令、运算指令及同步指令等。本公开对处理指令的具体类型及解码的具体方式不作限制。
[0028]
在一种可能的实现方式中,解码后的处理指令可包括操作码以及一个或多个操作数,操作码用于指示与该处理指令对应的处理类型,操作数用于指示待处理的数据。例如,该指令可表示为:add;a;b,add为操作码,a和b为操作数,该指令用于对a和b相加。本公开对解码后的指令的操作数的数量以及指令的表示形式不作限制。
[0029]
在一种可能的实现方式中,与处理指令的操作数对应的数据块可以是图像数据、音频数据或其它类型的数据块。数据块的内容和类型可以根据实际需要进行选择,本公开对此不作限制。
[0030]
在一种可能的实现方式中,数据块的形状包括数据块的维度以及各个维度的数据尺寸。例如,数据块:
[0031][0032]
该数据块的形状可表示为(2,4),也即通过两个参数表示该数据块为二维,且第一维度(列)的尺寸为2、第二维度(行)的尺寸为4。本公开对数据块形状的表示方式不作限制。
[0033]
在一种可能的实现方式中,在数据块为图像数据时,数据块可以为四维(nhwc)的数据块,其中,n可表示图像的帧数,h可表示图像的长度、w可表示图像的宽度,c可表示图像的通道(例如rgb三个通道)。各维度的数值表示各个维度的数据尺寸,例如数据块(1,4,8,8),可表示该数据块的四个维度的数据尺寸分别为1、4、8及8。本公开对数据块的维度数量及各个维度的数据尺寸均不作限制。
[0034]
在数据处理期间,仅能够通过单个处理单元对数据块进行整体处理(运算)。对于数据尺寸较大的数据块,单个处理单元的处理效率较低。因此,可将数据块拆分为多个子数据块,以便通过多个处理单元分别对各子数据块进行处理,提高处理速度和效率。
[0035]
在一种可能的实现方式中,可预先设定有数据拆分信息,用于指示数据块的拆分方式。该数据拆分信息可例如包括数据块的拆分位置(拆分点的位置信息)、拆分数量(拆分后的子数据块的数量或各个维度上的拆分数量)、拆分尺寸(拆分后的子数据块的尺寸)等。
本公开对数据拆分信息的具体内容不作限制。
[0036]
在一种可能的实现方式中,数据块的拆分方式可包括均匀拆分或指定拆分等。在均匀拆分的情况下,数据拆分信息可指示各个维度的拆分数量或拆分后的子数据块的尺寸等。例如指定在各个维度平均拆成几份,不能整除则向上取整,最后的子数据块只有余数大小。
[0037]
在一种可能的实现方式中,在指定拆分的情况下,数据拆分信息可指示每个维度的拆分起止点,以便根据各个维度的拆分起止点进行拆分。本公开对数据块的具体拆分方式不作限制。
[0038]
在一种可能的实现方式中,对于待处理的第一指令(人工智能处理指令),可在步骤s11中,根据与第一指令的操作数对应的第一数据块的形状及数据拆分信息,对第一数据块进行拆分,得到多个第一子数据块。例如,第一数据块为二维数据(2,4),数据拆分信息指示在各个维度上平均拆分为2份,则可在第一数据块的两个维度上分别拆分,得到尺寸为(1,2)的四个第一子数据块。
[0039]
在一种可能的实现方式中,在得到第一子数据块后,可在步骤s12中通过多个处理单元分别对各个第一子数据块进行与第一指令对应的处理,得到处理结果。例如,该第一指令为add;a;b,则可以将a和b对应的子数据块分别相加,得到相加后的多个子数据块。
[0040]
在一种可能的实现方式中,可将相加后的多个子数据块作为该指令的处理结果,也可将相加后的多个子数据块进行拼接,将拼接后的数据块作为该指令的处理结果。本公开对此不作限制。
[0041]
根据本公开的实施例,能够将数据块拆分为多个子数据块,并通过多个处理单元对各子数据块分别进行处理,得到相应的处理结果,从而以更高效率利用计算单元,提高处理速度,为多核并行计算提供必要的基础。
[0042]
在一种可能的实现方式中,每个第一子数据块具有形状及位置信息,其中,第一子数据块的形状包括第一子数据块的维度以及各个维度的数据尺寸,第一子数据块的位置信息包括第一子数据块的至少一个数据点在第一数据块中的位置、第一子数据块的至少一个维度在第一数据块对应的维度中的位置中的至少一种。
[0043]
举例来说,子数据块的形状用于指示子数据块的维度和数据尺寸。与数据块形状的表示方式类似,第一子数据块的形状包括第一子数据块的维度以及各个维度的数据尺寸,例如子数据块的形状(1,2),表示该子数据块为二维,各维度尺寸分别为1、2。
[0044]
在一种可能的实现方式中,子数据块的位置信息用于指示子数据块在数据块中的位置,以便对子数据块进行定位。其中,第一子数据块的位置信息可包括第一子数据块的至少一个数据点在第一数据块中的位置。例如,以第一数据块的一个数据顶点为坐标原点,以各个维度方向为坐标轴方向建立坐标系;建立坐标系后,可确定出第一子数据块中至少一个数据点(例如顶点或中心点)的位置坐标;根据该数据点的位置坐标及第一子数据块的形状,即可定位出第一子数据块在第一数据块中的位置。
[0045]
在一种可能的实现方式中,该位置信息还可包括第一子数据块的至少一个维度在第一数据块对应的维度中的位置,例如第一子数据块在第一数据块的各个维度方向的起始位置和/或终止位置。例如,第一数据块(2,4)在各个维度上平均拆分为2份后得到四个第一子数据块(1,2),则第四个子数据块在列方向的起始位置为2,行方向的起始位置为3。通过
这种方式,能够指示子数据块的形状及位置,以便在后续处理中对子数据块进行定位。
[0046]
本领域技术人员应当理解,本公开对子数据块的位置信息的具体内容不作限制,只要能够根据位置信息实现对子数据块的定位即可。
[0047]
在一种可能的实现方式中,步骤s12可包括:通过所述处理器的多个处理单元分别对各第一子数据块进行处理,确定所述第一指令的处理结果。
[0048]
举例来说,在将第一数据块拆分为多个第一子数据块后,可通过处理器的多个处理单元对各第一子数据块进行并行处理。其中,可以将每个子数据块分配到一个处理单元中处理;或根据可用的处理单元数量,将第一子数据块分为几组,每组子数据块分配到一个处理单元中处理。经处理后,可确定该指令的处理结果。本公开对子数据块与处理单元之间的对应关系不作限制。
[0049]
通过这种方式,能够通过多个处理单元实现子数据块的并行处理,提高处理速度。
[0050]
在一种可能的实现方式中,步骤s12可包括:分别对各第一子数据块进行处理,得到多个第二子数据块,所述处理结果包括所述多个第二子数据块。
[0051]
举例来说,在将第一数据块拆分为多个第一子数据块后,可通过多个处理单元分别对各个第一子数据块进行与第一指令对应的处理,例如,待处理的指令为add;a;b,则可以将a和b对应的子数据块分别相加,得到相加后的多个第二子数据块。经处理后,得到多个第二子数据块。
[0052]
在一种可能的实现方式中,可将多个第二子数据块直接作为该指令的处理结果。通过这种方式,可得到离散形式的处理结果(多个第二子数据块),能够在下一步的处理中继续通过多个处理单元并行处理,降低处理过程中的数据开销,从而进一步提高数据块的处理速度及效率。
[0053]
在一种可能的实现方式中,步骤s12可包括:分别对各第一子数据块进行处理,得到多个第二子数据块;根据各第一子数据块的形状及位置信息,对多个第二子数据块进行整合,得到第二数据块,处理结果包括第二数据块。
[0054]
举例来说,在将第一数据块拆分为多个第一子数据块后,可通过多个处理单元分别对各个第一子数据块进行与第一指令对应的处理,例如,待处理的指令为add;a;b,则可以将a和b对应的子数据块分别相加,得到相加后的多个第二子数据块。经处理后,得到多个第二子数据块。
[0055]
在一种可能的实现方式中,可根据各第一子数据块的形状及位置信息,对多个第二子数据块进行整合。由于各第二子数据块与处理前的各第一子数据块之间具有对应关系,因此可根据各第一子数据块的形状及位置信息,分别确定各第二子数据块的形状及位置信息;进而可根据各第二子数据块的形状及位置信息进行整合(拼接),得到整合后的第二数据块,并将第二数据块作为该指令的处理结果。
[0056]
通过这种方式,可得到整合形式的处理结果(第二数据块),从而能够直接输出处理结果或根据该处理结果进行下一步处理,不影响原有的数据处理流程,提高了处理效率。
[0057]
在一种可能的实现方式中,人工智能处理指令还包括待处理的第二指令,所述第二指令的操作数包括与所述多个第二子数据块对应的数据块。所述方法还包括:
[0058]
在所述多个第二子数据块不满足处理条件时,根据各第一子数据块的形状及位置信息,对所述多个第二子数据块进行整合,得到第三数据块;
[0059]
根据满足所述处理条件的分布方式,将所述第三数据块拆分为多个第三子数据块;
[0060]
对各第三子数据块进行处理,确定所述第二指令的处理结果。
[0061]
举例来说,在得到第一指令的处理结果后,该处理结果可以作为另一个人工智能处理指令(第二指令)的操作数。处理器可读取第一指令的处理结果,参与第二指令的运算。
[0062]
在一种可能的实现方式中,如果第一指令的处理结果包括多个第二子数据块,则可在开始处理第二指令时判断多个第二子数据块是否满足处理条件。该处理条件可以为第二指令能够正常执行所需的条件,例如数据格式、数据尺寸、数据分布方式等。本公开对此不作限制。
[0063]
在一种可能的实现方式中,可通过可执行处理的处理单元的数量(通道数量)来确定处理条件。例如,处理条件包括子数据块的数量与可执行处理的处理单元的数量存在对应关系(例如相等或倍数关系)。子数据块满足处理条件时,能够进一步提高数据处理效率。
[0064]
在一种可能的实现方式中,如果多个第二子数据块不满足处理条件,则可根据各第一子数据块的形状及位置信息,分别确定各第二子数据块的形状及位置信息;进而根据各第二子数据块的形状及位置信息进行整合(拼接),得到整合后的第三数据块。
[0065]
在一种可能的实现方式中,可根据满足处理条件的分布方式(例如均匀拆分为9个),将第三数据块拆分为多个第三子数据块,进而通过多个处理单元分别对各个第一子数据块进行与第二指令对应的处理,得到第二指令的处理结果。其中,满足处理条件的分布方式可包括子数据块的数量、形状分布、或各维度的数据尺寸的分布等,本公开对此不作限制。
[0066]
通过这种方式,可以在数据处理过程中根据处理条件对子数据块进行整合及再拆分,使得数据处理能够继续进行,提高了数据处理的灵活性及效率。
[0067]
在一种可能的实现方式中,人工智能处理指令还包括待处理的第三指令,所述第三指令的操作数包括与所述多个第二子数据块对应的数据块,所述方法还包括:
[0068]
在所述第三指令包括多个操作数,且各操作数对应的数据块的子数据块的分布方式不一致的情况下,选择具有参考分布方式的至少一个数据块作为参考数据块;
[0069]
对与所述参考分布方式不同的第四数据块的各子数据块进行整合,得到第五数据块;
[0070]
根据所述参考分布方式,将所述第五数据块拆分为多个子数据块;
[0071]
对所述第五数据块的多个子数据块及所述参考数据块的多个子数据块进行处理,得到所述第三指令的处理结果。
[0072]
举例来说,在得到第一指令的处理结果后,该处理结果可以作为另一个人工智能处理指令(第三指令)的操作数。处理器可读取第一指令的处理结果,参与第三指令的运算。如果第三指令包括多个操作数,且各操作数对应的数据块的子数据块的分布方式不一致,则需要对数据进行重新拆分,以使数据处理能够继续进行。例如,第三指令为加法指令,且两个操作数a、b对应的数据块的子数据块数量分别为4个和9个,则操作数a、b的子数据块无法对应相加,需要重新拆分。
[0073]
在一种可能的实现方式中,可从多个操作数选择具有参考分布方式的至少一个数据块作为参考数据块,将参考数据块的各个子数据块的分布方式确定为参考分布方式。例
如将操作数a作为参考数据块,将操作数a的子数据块(4个)分布方式作为参考分布方式。其中,参考数据块可以任意选取,也可以根据数据的处理条件选取,本公开对此不作限制。
[0074]
在一种可能的实现方式中,在确定参考分布方式后,可确定出各个操作数中与所述参考分布方式不同的第四数据块,并对第四数据块的各子数据块进行整合,得到第五数据块。根据参考分布方式,可将第五数据块拆分为多个子数据块;进而通过多个处理单元分别对第五数据块的多个子数据块及参考数据块的多个子数据块进行处理,得到第三指令的处理结果。
[0075]
通过这种方式,可以在数据处理过程中根据处理条件对子数据块进行整合及再拆分,使得数据处理能够继续进行,提高了数据处理的灵活性。
[0076]
图3示出根据本公开实施例的数据块拆分的示意图。如图3所示,可以输入一个四维(nhwc)数据块,其形状为(1,6,9,9)。其中,n表示此组图像的图像张数,h表示图像在竖直方向上的像素数量,w表示水平方向上的像素数量,c表示通道数量(例如黑白图像的通道数c=1,而rgb图像的通道数c=3)。为了便于说明,后续说明均使用rgb三通道图像进行举例说明。
[0077]
如图3所示,可以根据指定的数据拆分信息,在各个维度上平均拆分成三块,得到27个子数据块。每一子数据块的形状可以为shape_t:(1,2,3,3)。
[0078]
在该示例中,可以以数据块的数据顶点(例如图3中的点o)为坐标原点(0,0,0),以h、w、c各个维度方向(图3中箭头所示方向)为坐标轴方向建立坐标系;建立坐标系后,可确定出各子数据块中至少一个数据点(例如顶点)的位置坐标(以右上方最后面的子数据块为例,其右上方顶点为p1(0,9,0));根据该数据点的位置坐标及子数据块的形状,即可定位出子数据块在数据块中的位置。
[0079]
上述方法,可以通过指定数据分布信息,将原始的数据块进行拆分,并保存拆分出的子数据块在数据块中的位置信息,以便于后续可以还原数据块,该位置信息包括:数据块在每个维度的长度,即数据块的形状;子数据块某一顶点在原始的数据块中各个维度的绝对位置(从0开始);子数据块在数据块构成的坐标中的位置信息(从0开始)。
[0080]
通过上述位置信息,可以将处理后的子数据块整合为新的数据块,将新的数据块作为结果输出。
[0081]
根据本公开的实施例,能够将数据块拆分为多个子数据块,在数据拆分以后,以较高效率利用运算单元,为多核并行运算提供基础。在拆分出n个子数据块的情况下,可比不拆分情况下的运算性能提升n倍。另外,根据本公开的实施例,能够将已拆分的数据整合,如果在网络运算期间产生数据分布方式与运算不一致的情况,则可重新整合数据,使得运算顺利进行。
[0082]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
[0083]
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤
的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0084]
图4示出根据本公开实施例的数据处理装置的框图。如图4所示,该数据处理装置应用于处理器,包括:
[0085]
第一拆分模块41,用于根据与第一指令的操作数对应的第一数据块的形状以及预设的数据拆分信息,将所述第一数据块拆分为多个第一子数据块;
[0086]
第一处理模块42,用于对各第一子数据块进行处理,确定所述第一指令的处理结果,其中,所述第一指令为人工智能处理指令,所述第一数据块的形状包括所述第一数据块的维度以及各个维度的数据尺寸。
[0087]
在一种可能的实现方式中,每个第一子数据块具有形状及位置信息,其中,第一子数据块的形状包括第一子数据块的维度以及各个维度的数据尺寸,第一子数据块的位置信息包括第一子数据块的至少一个数据点在所述第一数据块中的位置、第一子数据块的至少一个维度在所述第一数据块对应的维度中的位置中的至少一种。
[0088]
在一种可能的实现方式中,所述第一处理模块包括:第一处理子模块,用于分别对各第一子数据块进行处理,得到多个第二子数据块,所述处理结果包括所述多个第二子数据块。
[0089]
在一种可能的实现方式中,所述第一处理模块包括:第二处理子模块,用于分别对各第一子数据块进行处理,得到多个第二子数据块;第一整合子模块,用于根据各第一子数据块的形状及位置信息,对所述多个第二子数据块进行整合,得到第二数据块,所述处理结果包括所述第二数据块。
[0090]
在一种可能的实现方式中,人工智能处理指令还包括待处理的第二指令,所述第二指令的操作数包括与所述多个第二子数据块对应的数据块,所述装置还包括:第一整合模块,用于在所述多个第二子数据块不满足处理条件时,根据各第一子数据块的形状及位置信息,对所述多个第二子数据块进行整合,得到第三数据块;第二拆分模块,用于根据满足所述处理条件的分布方式,将所述第三数据块拆分为多个第三子数据块;第二处理模块,用于对各第三子数据块进行处理,确定所述第二指令的处理结果。
[0091]
在一种可能的实现方式中,人工智能处理指令还包括待处理的第三指令,所述第三指令的操作数包括与所述多个第二子数据块对应的数据块,所述装置还包括:数据块选择模块,用于在所述第三指令包括多个操作数,且各操作数对应的数据块的子数据块的分布方式不一致的情况下,选择具有参考分布方式的至少一个数据块作为参考数据块;第二整合模块,用于对与所述参考分布方式不同的第四数据块的各子数据块进行整合,得到第五数据块;第三拆分模块,用于根据所述参考分布方式,将所述第五数据块拆分为多个子数据块;第三处理模块,用于对所述第五数据块的多个子数据块及所述参考数据块的多个子数据块进行处理,得到所述第三指令的处理结果。
[0092]
在一种可能的实现方式中,所述第一处理模块包括:第三处理子模块,用于通过所述处理器的多个处理单元分别对各第一子数据块进行处理,确定所述第一指令的处理结
果。
[0093]
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
[0094]
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0095]
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器rram(resistive random access memory)、动态随机存取存储器dram(dynamic random access memory)、静态随机存取存储器sram(static random-access memory)、增强动态随机存取存储器edram(enhanced dynamic random access memory)、高带宽内存hbm(high-bandwidth memory)、混合存储立方hmc(hybrid memory cube)等等。
[0096]
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0097]
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述数据处理装置。
[0098]
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0099]
图5示出根据本公开实施例的板卡的结构框图,参阅图5,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
[0100]
所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可以理解,每一组所述存储单元可以是ddr sdram(英文:double data rate sdram,双倍速率同步动态随机存储器)。
[0101]
ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述人工智能芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。
[0102]
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
[0103]
所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie 3.0x 16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
[0104]
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(micro controller unit,mcu)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
[0105]
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。
[0106]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0107]
依据以下条款可更好地理解前述内容:
[0108]
条款a1,一种数据处理方法,所述方法应用于处理器,所述方法包括:
[0109]
根据与第一指令的操作数对应的第一数据块的形状以及预设的数据拆分信息,将所述第一数据块拆分为多个第一子数据块;
[0110]
对各第一子数据块进行处理,确定所述第一指令的处理结果,其中,所述第一指令为人工智能处理指令,所述第一数据块的形状包括所述第一数据块的维度以及各个维度的数据尺寸。
[0111]
a2.根据权利要求a1所述的方法,每个第一子数据块具有形状及位置信息,其中,第一子数据块的形状包括第一子数据块的维度以及各个维度的数据尺寸,第一子数据块的位置信息包括第一子数据块的至少一个数据点在所述第一数据块中的位置、第一子数据块的至少一个维度在所述第一数据块对应的维度中的位置中的至少一种。
[0112]
a3.根据权利要求a1或a2所述的方法,对各第一子数据块进行处理,确定所述第一指令的处理结果,包括:分别对各第一子数据块进行处理,得到多个第二子数据块,所述处理结果包括所述多个第二子数据块。
[0113]
a4.根据权利要求a1或a2所述的方法,对各第一子数据块进行处理,确定所述第一指令的处理结果,包括:分别对各第一子数据块进行处理,得到多个第二子数据块;根据各第一子数据块的形状及位置信息,对所述多个第二子数据块进行整合,得到第二数据块,所述处理结果包括所述第二数据块。
[0114]
a5.根据权利要求a3所述的方法,人工智能处理指令还包括待处理的第二指令,所述第二指令的操作数包括与所述多个第二子数据块对应的数据块,所述方法还包括:在所述多个第二子数据块不满足处理条件时,根据各第一子数据块的形状及位置信息,对所述多个第二子数据块进行整合,得到第三数据块;根据满足所述处理条件的分布方式,将所述第三数据块拆分为多个第三子数据块;对各第三子数据块进行处理,确定所述第二指令的处理结果。
[0115]
a6.根据权利要求a3所述的方法,人工智能处理指令还包括待处理的第三指令,所述第三指令的操作数包括与所述多个第二子数据块对应的数据块,所述方法还包括:在所述第三指令包括多个操作数,且各操作数对应的数据块的子数据块的分布方式不一致的情况下,选择具有参考分布方式的至少一个数据块作为参考数据块;对与所述参考分布方式不同的第四数据块的各子数据块进行整合,得到第五数据块;根据所述参考分布方式,将所述第五数据块拆分为多个子数据块;对所述第五数据块的多个子数据块及所述参考数据块的多个子数据块进行处理,得到所述第三指令的处理结果。
[0116]
a7.根据权利要求a1-a6中任意一项所述的方法,对各第一子数据块进行处理,确定所述第一指令的处理结果,包括:通过所述处理器的多个处理单元分别对各第一子数据块进行处理,确定所述第一指令的处理结果。
[0117]
a8.一种数据处理装置,所述装置应用于处理器,包括:
[0118]
第一拆分模块,用于根据与第一指令的操作数对应的第一数据块的形状以及预设的数据拆分信息,将所述第一数据块拆分为多个第一子数据块;
[0119]
第一处理模块,用于对各第一子数据块进行处理,确定所述第一指令的处理结果,其中,所述第一指令为人工智能处理指令,所述第一数据块的形状包括所述第一数据块的维度以及各个维度的数据尺寸。
[0120]
a9.根据权利要求a8所述的装置,每个第一子数据块具有形状及位置信息,其中,第一子数据块的形状包括第一子数据块的维度以及各个维度的数据尺寸,第一子数据块的位置信息包括第一子数据块的至少一个数据点在所述第一数据块中的位置、第一子数据块的至少一个维度在所述第一数据块对应的维度中的位置中的至少一种。
[0121]
a10.根据权利要求a8或a9所述的装置,所述第一处理模块包括:第一处理子模块,用于分别对各第一子数据块进行处理,得到多个第二子数据块,所述处理结果包括所述多
个第二子数据块。
[0122]
a11.根据权利要求a8或a9所述的装置,所述第一处理模块包括:第二处理子模块,用于分别对各第一子数据块进行处理,得到多个第二子数据块;第一整合子模块,用于根据各第一子数据块的形状及位置信息,对所述多个第二子数据块进行整合,得到第二数据块,所述处理结果包括所述第二数据块。
[0123]
a12.根据权利要求a10所述的装置,人工智能处理指令还包括待处理的第二指令,所述第二指令的操作数包括与所述多个第二子数据块对应的数据块,所述装置还包括:第一整合模块,用于在所述多个第二子数据块不满足处理条件时,根据各第一子数据块的形状及位置信息,对所述多个第二子数据块进行整合,得到第三数据块;第二拆分模块,用于根据满足所述处理条件的分布方式,将所述第三数据块拆分为多个第三子数据块;第二处理模块,用于对各第三子数据块进行处理,确定所述第二指令的处理结果。
[0124]
a13.根据权利要求a10所述的装置,人工智能处理指令还包括待处理的第三指令,所述第三指令的操作数包括与所述多个第二子数据块对应的数据块,所述装置还包括:数据块选择模块,用于在所述第三指令包括多个操作数,且各操作数对应的数据块的子数据块的分布方式不一致的情况下,选择具有参考分布方式的至少一个数据块作为参考数据块;第二整合模块,用于对与所述参考分布方式不同的第四数据块的各子数据块进行整合,得到第五数据块;第三拆分模块,用于根据所述参考分布方式,将所述第五数据块拆分为多个子数据块;第三处理模块,用于对所述第五数据块的多个子数据块及所述参考数据块的多个子数据块进行处理,得到所述第三指令的处理结果。
[0125]
a14.根据权利要求a8-a13中任意一项所述的装置,所述第一处理模块包括:第三处理子模块,用于通过所述处理器的多个处理单元分别对各第一子数据块进行处理,确定所述第一指令的处理结果。
[0126]
a15、一种人工智能芯片,所述芯片包括如权利要求a8-a14中任意一项所述的数据处理装置。
[0127]
a16、一种电子设备,所述电子设备包括如权利要求a15所述的人工智能芯片。
[0128]
a17、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求a15所述的人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0129]
a18、根据权利要求a17所述的板卡,所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:ddr sdram;所述芯片包括:ddr控制器,用于对每个所述存储单元的数据传输与数据存储的控制;所述接口装置为:标准pcie接口。
[0130]
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1