[0001]
本公开涉及计算机技术领域,尤其涉及一种数据同步方法及装置以及相关产品。
背景技术:[0002]
随着人工智能技术的不断发展,其应用领域越来越广泛,在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。然而,随着人工智能算法的复杂度提高,需要处理的数据量和数据维度都在不断增大,通常需要多核和/或多芯片进行数据处理。在进行核间或芯片间的数据同步时,采用相关技术的同步方式的同步开销较大,处理效率较低。
技术实现要素:[0003]
有鉴于此,本公开提出了一种数据同步技术方案。
[0004]
根据本公开的一方面,提供了一种数据同步方法,所述方法应用于第一处理器,包括:在接收到来自第二处理器的同步请求指令时,解析所述同步请求指令,得到待同步的张量数据的数据特征以及针对所述张量数据的可同步数据量;根据所述数据特征,确定待同步的张量数据的描述符,所述描述符用于指示待同步的张量数据的形状;根据所述张量数据的描述符及所述可同步数据量,确定所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应;根据所述第一子数据,生成同步指令并向所述第二处理器发送所述同步指令,以指示所述第二处理器获取所述第一子数据。
[0005]
根据本公开的另一方面,提供了一种数据同步方法,所述方法应用于第二处理器,包括:根据待同步的张量数据的描述符,确定所述张量数据的数据特征以及针对所述张量数据的可同步数据量,所述描述符用于指示待同步的张量数据的形状;根据所述数据特征以及所述可同步数据量,生成同步请求指令并向第一处理器发送所述同步请求指令,所述同步请求指令用于指示第一处理器根据所述同步请求指令确定待同步的张量数据以及所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应。
[0006]
根据本公开的另一方面,提供了一种数据同步装置,所述装置应用于第一处理器,包括:请求指令解析模块,用于在接收到来自第二处理器的同步请求指令时,解析所述同步请求指令,得到待同步的张量数据的数据特征以及针对所述张量数据的可同步数据量;第一描述符确定模块,用于根据所述数据特征,确定待同步的张量数据的描述符,所述描述符用于指示待同步的张量数据的形状;数据确定模块,用于根据所述张量数据的描述符及所述可同步数据量,确定所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应;同步指令生成及发送模块,用于根据所述第一子数据,生成同步指令并向所述第二处理器发送所述同步指令,以指示所述第二处理器获取所述第一子数据。
[0007]
根据本公开的另一方面,提供了一种数据同步装置,所述装置应用于第二处理器,包括:特征及数据量确定模块,用于根据待同步的张量数据的描述符,确定所述张量数据的数据特征以及针对所述张量数据的可同步数据量,所述描述符用于指示待同步的张量数据的形状;请求指令生成及发送模块,用于根据所述数据特征以及所述可同步数据量,生成同
步请求指令并向第一处理器发送所述同步请求指令,所述同步请求指令用于指示第一处理器根据所述同步请求指令确定待同步的张量数据以及所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应。
[0008]
根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括如上所述的数据同步装置。
[0009]
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括如上所述的人工智能芯片。
[0010]
根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如上所述的人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0011]
根据本公开的实施例,通过设定指示张量数据的形状的描述符,接收方能够通过同步请求指令以主动请求同步部分数据,发送方可根据该指令中的数据特征确定张量数据的描述符,并根据可同步数据量确定本次同步的子数据,根据该子数据生成并发送同步指令,以使接收方获取本次同步的子数据,从而在不改变指令结构的情况下减少同步开销,提高数据同步的效率。
[0012]
通过权要中的技术特征进行推导,能够达到对应背景技术中的技术问题的有益效果。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
[0013]
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
[0014]
图1示出根据本公开实施例的数据同步方法的处理系统的示意图。
[0015]
图2示出根据本公开实施例的数据同步方法的流程图。
[0016]
图3示出根据本公开实施例的数据同步方法的流程图。
[0017]
图4示出根据本公开实施例的数据同步方法的数据存储空间的示意图。
[0018]
图5示出根据本公开实施例的数据同步装置的框图。
[0019]
图6示出根据本公开实施例的数据同步装置的框图。
[0020]
图7示出根据本公开实施例的板卡的结构框图。
具体实施方式
[0021]
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0022]
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,
但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0023]
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0024]
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0025]
根据本公开实施例的数据同步方法可应用于包括多个处理器(多核)的处理系统(例如人工智能芯片)的任意一个处理器中。该处理器可以是通用处理器,例如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)芯片中的一种或组合。本公开对处理器的具体类型不作限制。此外,处理系统中的多个处理器的类型可以相同或不同,本公开对此不作限制。
[0026]
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
[0027]
图1示出根据本公开实施例的数据同步方法的处理系统的示意图。如图1所示,处理系统100包括多个处理器101以及存储器102,多个处理器101用于执行指令序列,存储器102用于存储数据,可包括随机存储器(ram,random access memory)和寄存器堆。处理系统100中的多个处理器101既可共用部分存储空间,例如共用部分ram存储空间和寄存器堆,又可同时拥有各自的存储空间。
[0028]
图2示出根据本公开一实施例的数据同步方法的流程图。如图2所示,该方法应用于第一处理器(处理系统中的任意一个处理器),该方法包括:
[0029]
在步骤s11中:在接收到来自第二处理器的同步请求指令时,解析所述同步请求指令,得到待同步的张量数据的数据特征以及针对所述张量数据的可同步数据量;
[0030]
在步骤s12中:根据所述数据特征,确定待同步的张量数据的描述符,所述描述符用于指示待同步的张量数据的形状;
[0031]
在步骤s13中:根据所述张量数据的描述符及所述可同步数据量,确定所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应;
[0032]
在步骤s14中:根据所述第一子数据,生成同步指令并向所述第二处理器发送所述同步指令,以指示所述第二处理器获取所述第一子数据。
[0033]
举例来说,待同步的数据可包括n维的张量数据(n为大于或等于零的整数,例如n=1、2或3),其中,张量可以包含多种形式的数据组成方式,张量可以是不同维度的,比如标
量可以看作是0维张量,向量可以看作1维张量,而矩阵可以是2维或2维以上的张量。张量的形状包括张量的维度、张量各个维度的尺寸等信息。例如对于张量:
[0034][0035]
该张量的形状可以被描述符描述为(2,4),也即通过两个参数表示该张量为二维张量,且该张量的第一维度(列)的尺寸为2、第二维度(行)的尺寸为4。需要说明的是,本公开对于描述符指示张量形状的方式并不做限定。在存储器中存储张量数据时,根据其数据地址(或存储区域)无法确定张量数据的形状,进而也无法确定多个张量数据之间相互关系等相关信息,导致处理器对张量数据的存取效率较低,在进行数据同步时的复杂度也较大。
[0036]
在该情况下,可设定描述符(张量描述符)来指示张量数据(n维的张量数据)的形状。其中,n的取值可根据张量数据的维数(阶数)来确定,也可以根据张量数据的使用需要进行设定。例如,在n的取值为3时,张量数据为三维的张量数据,描述符可用来指示该三维的张量数据在三个维度方向上的形状(例如偏移量、尺寸等)。应当理解,本领域技术人员可以根据实际需要对n的取值进行设置,本公开对此不作限制。
[0037]
在一种可能的实现方式中,描述符可包括标识和内容等,描述符的标识可用于对描述符进行区分,例如为编号;描述符的内容可包括表示张量数据的形状的至少一个形状参数(例如张量的各个维度方向上的尺寸等),还可以包括表示张量数据的地址的至少一个地址参数(例如数据基准点的基准地址)。本公开对描述符的内容包括的具体参数不作限制。
[0038]
通过采用描述符来指示张量数据的方式,能够表达张量数据的形状,进而也能够确定多个张量数据之间的相互关系等相关信息,提高对张量数据的存取效率,从而降低数据同步时的复杂度。
[0039]
在一种可能的实现方式中,在数据处理过程中,可能需要进行多个处理器(例如人工智能芯片的多个核)之间的数据同步,例如将处理器a1的运算结果同步到处理器a2中作为另一项运算的输入数据。在该情况下,可以采用基于描述符的数据同步机制实现数据同步。
[0040]
在一种可能的实现方式中,各个处理器的非共用存储空间可分配给待同步的张量数据的空间可能有限,无法实现张量数据的整体同步。在该情况下,可进行张量数据的部分同步,通过多次的部分同步来实现整个张量数据的同步过程。
[0041]
在一种可能的实现方式中,可由数据同步的接收方发起对张量数据的部分同步请求,也即接收方发出同步请求指令,该指令中可指示待同步的张量数据的数据特征以及针对该张量数据的可同步数据量,也即接收方的非共用存储空间能够分配给该张量数据的空间所能容纳的数据量。
[0042]
在一种可能的实现方式中,可以设定多个处理器中的第一处理器是数据同步的发送方,第二处理器是数据同步的接收方。第一处理器和第二处理器均为多个处理器中的任意处理器,第二处理器可与第一处理器的类型相同或不同,本公开对第一处理器和第二处理器的类型不作限制。
[0043]
在一种可能的实现方式中,第一处理器在步骤s11中接收到来自第二处理器的同步请求指令时,可对该指令进行解析以得到该指令的内容,也即待同步的张量数据的数据
特征和可同步数据量。该数据特征可包括张量数据的标识(例如数据编号)、形状、来源、存储地址等信息中的至少一种。
[0044]
在一种可能的实现方式中,待同步的张量数据的数据特征可包括张量数据的标识、形状、来源、地址等信息。例如,该张量数据的数据来源为第k个发送方(第k个处理器)、该张量数据的数据来源为编号200的卷积操作的运算结果、该张量数据的地址为特定的地址区域(例如地址addr0-addr127)、该张量数据的形状为指定的形状(例如20*10的二维张量)等。本领域技术人员可根据实际情况设定待同步的张量数据的数据特征,本公开对此不作限制。
[0045]
在一种可能的实现方式中,第一处理器可在步骤s12中根据数据特征确定出待同步的张量数据的描述符;进而在步骤s13中根据描述符确定待同步的张量数据,并根据可同步数据量从该张量数据中确定出本次可同步的部分数据,也即第一子数据。该第一子数据的数据量可与所述可同步数据量相对应,例如第一子数据的数据量小于或等于所述可同步数据量。
[0046]
在一种可能的实现方式中,如果该张量数据的全部数据均未同步,则可从该张量数据中选择可同步数据量的数据作为第一子数据;如果该张量数据的部分数据未同步,且未同步的部分数据的数据量大于可同步数据量,则可从未同步的部分数据(也即该张量数据的第二子数据)中选择可同步数据量的数据作为第一子数据;如果未同步的部分数据的数据量小于或等于可同步数据量,则可将未同步的部分数据直接作为第一子数据,应当理解,本领域技术人员可根据实际情况确定第一子数据,本公开对此不作限制。
[0047]
在一种可能的实现方式中,同步请求指令中也可包括待同步的张量数据的部分数据的范围,例如该部分子数据等存储地址范围等,以便指定获取待同步的部分数据。第一处理器可根据该部分数据的范围直接确定待同步的第一子数据。
[0048]
在一种可能的实现方式中,在步骤s14中,第一处理器可根据第一子数据生成同步指令并向第二处理器发送同步指令。该指令中可包括待同步的张量数据的数据特征及第一子数据。第二处理器在接收到同步指令后,可解析该指令以确定该数据特征及第一子数据,从而根据该数据特征确定描述符,根据描述符确定待同步的张量数据,并将张量数据的第一子数据存储到自身的非共用存储空间中。
[0049]
通过这种方式,接收方能够发出同步请求指令以主动请求同步部分数据,发送方可根据接收方的可同步数据量确定本次同步的子数据,根据该子数据生成并发送同步指令,以使接收方获取本次同步的子数据,从而在不改变指令结构的情况下减少同步开销,提高数据同步的效率。
[0050]
在一种可能的实现方式中,步骤s13可包括:
[0051]
根据所述张量数据的描述符,确定所述张量数据以及所述张量数据中处于待同步状态的第二子数据;
[0052]
根据所述第二子数据及所述可同步数据量,确定第一子数据。
[0053]
举例来说,可设定张量数据中数据的状态,将已同步的部分数据设定为已同步,并将未同步的部分数据设定为待同步。在该情况下,当第一处理器接收到来自第二处理器的同步请求指令时,可根据张量数据中数据的状态,确定出处于待同步状态的第二子数据;根据第二子数据以及同步请求指令所指示的可同步数据量,可确定本次同步的第一子数据。
[0054]
在一种可能的实现方式中,如果第二子数据的数据量大于可同步数据量,则可从第二子数据中选择出本次同步的第一子数据;如果第二子数据的数据量小于或等于可同步数据量,则可将第二子数据直接作为第一子数据。
[0055]
通过这种方式,可确定出本次同步的部分数据,以便实现张量数据的部分同步,提高数据同步的效率。
[0056]
在一种可能的实现方式中,所述方法还包括:将所述张量数据的第一子数据的状态由待同步状态变更为已同步状态。
[0057]
举例来说,第一处理器在根据张量数据的第一子数据生成并发送同步指令,使得第二处理器实现张量数据的第一子数据的同步后,第一处理器可对张量数据中数据的状态进行变更,也即,将第一子数据的状态由待同步状态变更为已同步状态。这样,在下一接收到第二处理器的同步请求指令时,可以从处于待同步状态的部分数据中确定下一次同步的数据,从而避免数据的重复同步,提高数据同步的效率。
[0058]
图3示出根据本公开一实施例的数据同步方法的流程图。如图3所示,该方法应用于第二处理器,该方法包括:
[0059]
在步骤s31中,根据待同步的张量数据的描述符,确定所述张量数据的数据特征以及针对所述张量数据的可同步数据量,所述描述符用于指示待同步的张量数据的形状;
[0060]
在步骤s32中,根据所述数据特征以及所述可同步数据量,生成同步请求指令并向第一处理器发送所述同步请求指令,所述同步请求指令用于指示第一处理器根据所述同步请求指令确定待同步的张量数据以及所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应。
[0061]
举例来说,数据同步的接收方(即第二处理器)可发起对张量数据的部分同步请求。在第二处理器中存在待同步的张量数据时,可确定张量数据的描述符。该描述符可以是已注册(创建)的用于指示该张量数据的形状的描述符,也可以根据该张量数据的形状参数注册(创建)新的描述符,本公开对此不作限制。
[0062]
在一种可能的实现方式中,在步骤s31中,第二处理器可根据该描述符确定张量数据的数据特征,例如张量数据的标识(例如数据编号)、形状、来源、存储地址等信息中的至少一种。并且,第二处理器可以确定自身的非共用存储空间能够分配给该张量数据的空间所能容纳的数据量,也即可同步数据量。
[0063]
在一种可能的实现方式中,在步骤s32中,根据该张量数据的数据特征及可同步数据量,第二处理器可生成同步请求指令并发送该指令。该同步请求指令可用于指示第一处理器根据该指令确定待同步的张量数据以所述张量数据的第一子数据。
[0064]
在一种可能的实现方式中,数据同步的接收方(即第一处理器)在接收到同步请求指令时,可对该指令进行解析,确定出待同步的张量数据的数据特征以及可同步数据量;根据数据特征确定,待同步的张量数据的描述符;根据描述符确定出待同步的张量数据,并根据可同步数据量从该张量数据中确定出本次可同步的部分数据,也即第一子数据。该第一子数据的数据量可与所述可同步数据量相对应,例如第一子数据的数据量小于或等于所述可同步数据量。
[0065]
在一种可能的实现方式中,如果该张量数据的全部数据均未同步,则可从该张量数据中选择可同步数据量的数据作为第一子数据;如果该张量数据的部分数据未同步,且
未同步的部分数据的数据量大于可同步数据量,则可从未同步的部分数据(也即该张量数据的第二子数据)中选择可同步数据量的数据作为第一子数据;如果未同步的部分数据的数据量小于或等于可同步数据量,则可将未同步的部分数据直接作为第一子数据,应当理解,本领域技术人员可根据实际情况确定第一子数据,本公开对此不作限制。
[0066]
在一种可能的实现方式中,同步请求指令中也可包括待同步的张量数据的部分数据的范围,例如该部分子数据的描述符内容或存储地址范围等,以便指定获取待同步的部分数据。
[0067]
通过这种方式,能够由接收方发起张量数据的部分同步请求,使得发送方确定本次同步的子数据,从而提高数据同步的效率。
[0068]
在一种可能的实现方式中,所述方法还包括:
[0069]
在接收到来自所述第一处理器的同步指令时,解析所述同步指令,得到待同步的张量数据的数据特征及所述张量数据的第一子数据;
[0070]
根据所述数据特征,确定所述张量数据的描述符;
[0071]
根据所述张量数据的描述符,存储所述张量数据的第一子数据。
[0072]
举例来说,第一处理器可根据张量数据的数据特征及第一子数据生成并发送同步指令。第二处理器在接收到该同步指令时,可解析该指令以确定待同步的张量数据的数据特征及本次同步的该张量数据的第一子数据;根据数据特征确定描述符,进而根据描述符确定待同步的张量数据,并将张量数据的第一子数据存储到自身的非共用存储空间中。
[0073]
通过这种方式,接收方能够根据同步指令确定描述符并获取本次同步的子数据,从而减少同步开销,提高数据同步的效率,并且实现了指令传递及处理过程中的指令兼容。
[0074]
在一种可能的实现方式中,在数据同步的发送方有待同步的张量数据,例如在完成一项运算得到运算结果(张量数据)时,也可由发送方查询接收方的状态,确定数据同步的接收方的非共用存储空间能够分配给该张量数据的空间所能容纳的数据量,以便进行张量数据的部分同步。
[0075]
在一种可能的实现方式中,还提供了一种数据同步方法,应用于第一处理器,该方法包括:
[0076]
根据待同步的张量数据的描述符,确定所述张量数据的数据特征,所述描述符用于指示待同步的张量数据的形状;
[0077]
根据所述张量数据的数据特征,生成状态查询指令并向第二处理器发送所述状态查询指令,所述状态查询指令用于指示第二处理器确定针对所述张量数据的可同步数据量并生成同步状态指令。
[0078]
举例来说,当第一处理器确定存在待同步的张量数据时,可以获取该张量数据的描述符。该描述符可以是已注册(创建)的用于指示该张量数据的形状的描述符,也可以根据该张量数据的形状参数注册(创建)新的描述符,本公开对此不作限制。
[0079]
在一种可能的实现方式中,根据该张量数据的描述符,第一处理器可确定该张量数据的数据特征。该数据特征可包括张量数据的标识(例如数据编号)、形状、来源、存储地址等信息中的至少一种。
[0080]
在一种可能的实现方式中,待同步的张量数据的数据特征可包括张量数据的标识、形状、来源、地址等信息。例如,该张量数据的数据来源为第k个发送方(第k个处理器)、
该张量数据的数据来源为编号200的卷积操作的运算结果、该张量数据的地址为特定的地址区域(例如地址addr0-addr127)、该张量数据的形状为指定的形状(例如20*10的二维张量)等。本领域技术人员可根据实际情况设定待同步的张量数据的数据特征,本公开对此不作限制。
[0081]
在一种可能的实现方式中,根据该张量数据的数据特征,第一处理器可生成状态查询指令并向待同步的第二处理器发送该状态查询指令。如果第二处理器中已具有该张量数据的信息(例如已注册有指示该待同步的张量数据的描述符),则状态查询指令可仅包括部分数据特征,例如张量数据的标识,以指示第二处理器根据该张量数据的标识确定待同步的张量数据的描述符;如果第二处理器中不具有该张量数据的信息,则同步指令可包括更多的数据特征,例如张量数据的标识及存储地址等,以指示第二处理器确定待同步的张量数据的描述符。本公开对状态查询指令包括的具体内容不作限制。
[0082]
在一种可能的实现方式中,如果状态查询指令包括张量数据的标识,则第二处理器可根据该标识确定待同步的张量数据,并注册或获取指示该待同步的张量数据的描述符。如果状态查询指令包括更多的数据特征(标识及存储地址等),则第二处理器可根据指令中的数据特征注册指示该张量数据的描述符。
[0083]
在一种可能的实现方式中,在确定待同步的张量数据的描述符后,第二处理器可确定能够分配给描述符对应的张量数据的空间,确定针对该张量数据的可同步数据量。根据可同步数据量及数据特征,第二处理器可生成并发送同步状态指令,以使得第一处理器能够确定待同步的张量数据以及本次同步的可同步数据量。
[0084]
根据本公开实施例的数据同步方法,通过设定指示张量数据的形状的描述符,发送方能够根据描述符确定张量数据的数据特征,根据数据特征生成并发送状态查询指令,以指示接收方根据状态查询指令反馈自身状态(也即可同步的数据量),从而实现张量数据的部分同步,在不改变指令结构的情况下减少同步开销,提高数据同步的效率。
[0085]
在一种可能的实现方式中,所述方法还包括:
[0086]
在接收到来自所述第二处理器的同步状态指令时,解析所述同步状态指令,确定待同步的张量数据的数据特征及可同步数据量,
[0087]
根据所述数据特征,确定待同步的张量数据的描述符;
[0088]
根据所述描述符及所述可同步数据量,确定所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应;
[0089]
根据所述第一子数据,生成同步指令并向所述第二处理器发送所述同步指令,以指示所述第二处理器获取所述第一子数据。
[0090]
举例来说,第一处理器在接收到来自第二处理器的同步状态指令时,可对该指令进行解析以得到该指令的内容,也即待同步的张量数据的数据特征及可同步数据量。根据该数据特征,可确定待同步的张量数据的描述符,从而确定待同步的张量数据;并根据可同步数据量从该张量数据中确定出本次可同步的部分数据,也即第一子数据。该第一子数据的数据量可与可同步数据量相对应,例如第一子数据的数据量小于或等于所述可同步数据量。
[0091]
在一种可能的实现方式中,如果该张量数据的全部数据均未同步,则可从该张量数据中选择可同步数据量的数据作为第一子数据;如果该张量数据的部分数据未同步,且
未同步的部分数据的数据量大于可同步数据量,则可从未同步的部分数据(也即该张量数据的第二子数据)中选择可同步数据量的数据作为第一子数据;如果未同步的部分数据的数据量小于或等于可同步数据量,则可将未同步的部分数据直接作为第一子数据,应当理解,本领域技术人员可根据实际情况确定第一子数据,本公开对此不作限制。
[0092]
在一种可能的实现方式中,同步状态指令中也可包括待同步的张量数据的部分数据的范围,例如该部分子数据等存储地址范围等,以便指定获取待同步的部分数据。第一处理器可根据该部分数据的范围直接确定待同步的第一子数据。
[0093]
在一种可能的实现方式中,第一处理器可根据第一子数据生成同步指令并向第二处理器发送同步指令。该指令中可包括待同步的张量数据的数据特征及第一子数据。第二处理器在接收到同步指令后,可解析该指令以确定待同步的张量数据的数据特征及张量数据的第一子数据,根据数据特征确定描述符,根据描述符确定待同步的张量数据,并将张量数据的第一子数据存储到自身的非共用存储空间中。
[0094]
通过这种方式,能够根据来自发送方的同步状态指令中确定张量数据的描述符及可同步数据量,根据可同步数据量确定本次同步的子数据,根据该子数据生成并发送同步指令,以使接收方获取本次同步的子数据,从而减少同步开销,提高数据同步的效率。
[0095]
在一种可能的实现方式中,根据所述描述符及所述可同步数据量,确定所述张量数据的第一子数据的步骤,可包括:
[0096]
根据所述描述符,确定待同步的张量数据以及所述张量数据中处于待同步状态的第二子数据;
[0097]
根据所述第二子数据及所述可同步数据量,确定第一子数据。
[0098]
举例来说,可设定张量数据中数据的状态,将已同步的部分数据设定为已同步,并将未同步的部分数据设定为待同步。在该情况下,当第一处理器接收到来自第二处理器的同步状态指令时,可根据张量数据中数据的状态,确定出处于待同步状态的第二子数据;根据第二子数据以及同步状态指令所指示的可同步数据量,可确定本次同步的第一子数据。
[0099]
在一种可能的实现方式中,如果第二子数据的数据量大于可同步数据量,则可从第二子数据中选择出本次同步的第一子数据;如果第二子数据的数据量小于或等于可同步数据量,则可将第二子数据直接作为第一子数据。
[0100]
通过这种方式,可确定出本次同步的部分数据,以便实现张量数据的部分同步,提高数据同步的效率。
[0101]
在一种可能的实现方式中,所述方法还包括:将所述张量数据的第一子数据的状态由待同步状态变更为已同步状态。
[0102]
举例来说,第一处理器在根据张量数据的第一子数据生成并发送同步指令,使得第二处理器实现张量数据的第一子数据的同步后,第一处理器可对张量数据中数据的状态进行变更,也即,将第一子数据的状态由待同步状态变更为已同步状态。这样,在下一次查询第二处理器的状态并接收到第二处理器的同步状态指令时,可以从处于待同步状态的部分数据中确定下一次同步的数据,从而避免数据的重复同步,提高数据同步的效率。
[0103]
在一种可能的实现方式中,还提供了一种数据同步方法,应用于第二处理器,该方法包括:
[0104]
在接收到来自第一处理器的状态查询指令时,解析所述状态查询指令,得到待同
步的张量数据的数据特征;
[0105]
根据所述数据特征,确定待同步的张量数据的描述符,所述描述符用于指示待同步的张量数据的形状;
[0106]
根据所述张量数据的描述符,确定针对所述张量数据的可同步数据量;
[0107]
根据所述张量数据的数据特征及所述可同步数据量,生成同步状态指令并向所述第一处理器发送所述同步状态指令,所述同步状态指令用于指示所述第一处理器确定所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应。
[0108]
举例来说,在数据同步的发送方有待同步的张量数据时,发送方可查询接收方的状态。第一处理器(发送方)可生成并发送状态查询指令,第二处理器在接收到该状态查询指令时,可解析该指令,已确定待同步的张量数据的数据特征。该数据特征可包括张量数据的标识(例如数据编号)、形状、来源、存储地址等信息中的至少一种。
[0109]
在一种可能的实现方式中,第二处理器可根据数据特征,确定待同步的张量数据的描述符。该描述符可以是已注册(创建)的用于指示该张量数据的形状的描述符,也可以根据该张量数据的形状参数注册(创建)新的描述符,本公开对此不作限制。
[0110]
在一种可能的实现方式中,第二处理器可根据该描述符确定待同步的张量数据,并确定自身的非共用存储空间能够分配给该张量数据的空间所能容纳的数据量,即可同步数据量,以便进行张量数据的部分同步。
[0111]
在一种可能的实现方式中,第二处理器可根据确定出的可同步数据量及该张量数据的数据特征,生成并向第一处理器发送同步状态指令,以指示第一处理器确定本次同步的可同步数据量。第一处理器在确定本次可同步的部分数据(也即第一子数据)后,可生成同步指令并向第二处理器发送同步指令。该指令中可包括待同步的张量数据的数据特征及第一子数据。
[0112]
通过这种方式,可由发送方查询接收方的状态,接收方在接收到状态查询指令后确定并回复自身的状态(即可同步数据量),通过交互实现张量数据的部分同步,提高数据同步的效率。
[0113]
在一种可能的实现方式中,所述方法还包括:
[0114]
在接收到来自所述第一处理器的同步指令时,解析所述同步指令,得到待同步的张量数据的数据特征及所述张量数据的第一子数据;
[0115]
根据所述数据特征,确定所述张量数据的描述符;
[0116]
根据所述张量数据的描述符,存储所述张量数据的第一子数据。
[0117]
举例来说,第二处理器在接收到同步指令时,可解析该指令以确定待同步的张量数据的数据特征及本次同步的该张量数据的第一子数据;根据该数据特征查找到待同步的张量数据的描述符;进而根据描述符确定待同步的张量数据,并将张量数据的第一子数据存储到自身的非共用存储空间中。
[0118]
通过这种方式,接收方能够根据同步指令确定描述符并获取本次同步的子数据,从而减少同步开销,提高数据同步的效率。
[0119]
在一种可能的实现方式中,描述符的标识和内容可存储在描述符存储空间中,该描述符存储空间可以为处理器的内部存储器(例如寄存器、片上的sram或其他介质缓存等)中的存储空间。描述符所指示的张量数据的数据存储空间可为处理器的内部存储器(例如
片上缓存)或与处理器连接的外部存储器(片下存储器)中的存储空间。数据存储空间中的数据地址可以为实际的物理地址或虚拟地址。本公开对描述符存储空间及数据存储空间的位置以及数据地址的类型不作限制。
[0120]
在一种可能的实现方式中,描述符的标识、内容以及描述符所指示的张量数据可以位于同一块区域,例如,可使用片上缓存的一块连续区域存储描述符的相关内容,其地址为addr0-addr1023,其中,地址addr0-addr31可用于存储描述符的标识,地址addr32-addr63可用于存储描述符的内容,地址addr64-addr1023可用于存储描述符指示的张量数据。其中,地址addr并不限于1位或一个字节,此处用来表示一个地址,是一个地址单位。本领域技术人员可以实际情况确定存储区域及其地址,本公开对此不作限制。
[0121]
在一种可能的实现方式中,描述符的标识、内容以及描述符所指示的张量数据可以分开存储在内部存储器的不同区域,例如,可以将寄存器作为描述符存储空间,在寄存器中存储描述符的标识及内容,将片上缓存作为数据存储空间,存储描述符所指示的张量数据。
[0122]
在一种可能的实现方式中,还可以设置专门供描述符使用的专用寄存器(sr),描述符中的数据可以是立即数也可以从专用寄存器中获取。在使用寄存器存储描述符的标识和内容时,可以使用寄存器的编号来表示描述符的标识,例如,寄存器的编号为0时,其存储的描述符的标识为0。当寄存器中的描述符有效时,可根据描述符所指示的张量数据的大小在缓存空间中分配一块区域(例如在缓存中为每个张量数据创建一个张量缓存单元)用于存储该张量数据。应当理解,也可以采用预设的缓存空间存储该张量数据,本公开对此不作限制。
[0123]
在一种可能的实现方式中,描述符的标识及内容可存储在内部存储器,描述符所指示的张量数据可存储在外部存储器。例如,可以采用在片上存储描述符的标识及内容、在片下存储描述符所指示的张量数据的方式。
[0124]
在一种可能的实现方式中,与描述符对应的数据存储空间的数据地址可以是固定地址。例如,可以为张量数据划分单独的数据存储空间,每个张量数据在数据存储空间的起始地址与描述符的标识一一对应。在这种情况下,处理器根据描述符的内容即可确定张量数据的数据地址。
[0125]
在一种可能的实现方式中,在与描述符对应的数据存储空间的数据地址为可变地址时,所述描述符还可用于指示n维的张量数据的地址,其中,所述描述符的内容还可包括表示张量数据的地址的至少一个地址参数。例如,张量数据为3维数据,在描述符指向该张量数据的地址时,描述符的内容可包括表示该张量数据的地址的一个地址参数,例如张量数据的起始地址,也可以包括该张量数据的地址的多个地址参数,例如张量数据的起始地址+地址偏移量,或张量数据基于各维度的地址参数。本领域技术人员可以根据实际需要对地址参数进行设置,本公开对此不作限制。
[0126]
在一种可能的实现方式中,所述张量数据的地址参数包括所述描述符的数据基准点在所述张量数据的数据存储空间中的基准地址。其中,基准地址可根据数据基准点的变化而不同。本公开对数据基准点的选取不作限制。
[0127]
在一种可能的实现方式中,所述基准地址可包括所述数据存储空间的起始地址。在描述符的数据基准点是数据存储空间的第一个数据块时,描述符的基准地址即为数据存
储空间的起始地址。在描述符的数据基准点是数据存储空间中第一个数据块以外的其他数据时,描述符的基准地址即为该数据块在数据存储空间中的物理地址。
[0128]
在一种可能的实现方式中,所述张量数据的形状参数包括以下至少一种:所述张量数据的数据存储空间在n个维度方向的至少一个方向上的尺寸、所述存储区域在n个维度方向的至少一个方向上的尺寸、所述存储区域在n个维度方向的至少一个方向上的偏移量、处于n个维度方向的对角位置的至少两个顶点相对于所述数据基准点的位置、所述描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系。其中,数据描述位置是描述符所指示的张量数据中的点或区域的映射位置,例如,张量数据为3维数据时,描述符可使用三维空间坐标(x,y,z)来表示该张量数据的形状,该张量数据的数据描述位置可以是使用三维空间坐标(x,y,z)表示的、该张量数据映射在三维空间中的点或区域的位置。
[0129]
应当理解,本领域技术人员可以根据实际情况选择表示张量数据的形状参数,本公开对此不作限制。
[0130]
图4示出根据本公开一实施例的数据同步方法的数据存储空间的示意图。如图4所示,数据存储空间21采用行优先的方式存储了一个二维数据,可通过(x,y)来表示(其中,x轴水平向右,y轴垂直向下),x轴方向上的尺寸(每行的尺寸)为ori_x(图中未示出),y轴方向上的尺寸(总行数)为ori_y(图中未示出),数据存储空间21的起始地址pa_start(基准地址)为第一个数据块22的物理地址。数据块23是数据存储空间21中的部分数据,其在x轴方向上的偏移量25表示为offset_x,在y轴方向上的偏移量24表示为offset_y,在x轴方向上的尺寸表示为size_x,在y轴方向上的尺寸表示为size_y。
[0131]
在一种可能的实现方式中,使用描述符来定义数据块23时,描述符的数据基准点可使用数据存储空间21的第一个数据块,描述符的基准地址为数据存储空间21的起始地址pa_start,然后可以结合数据存储空间21在x轴的尺寸ori_x、在y轴上的尺寸ori_y,以及数据块23在y轴方向的偏移量offset_y、x轴方向上的偏移量offset_x、x轴方向上的尺寸size_x以及y轴方向上的尺寸size_y来确定数据块23的描述符的内容。
[0132]
在一种可能的实现方式中,可以使用下述公式(1)来表示描述符的内容:
[0133][0134]
应当理解,虽然上述示例中,描述符描述的是二维空间,但本领域技术人员可以根据实际情况对描述符的内容表示的维度进行设置,本公开对此不作限制。
[0135]
在一种可能的实现方式中,可根据所述描述符的数据基准点在所述数据存储空间中的基准地址、处于n个维度方向的对角位置的至少两个顶点相对于所述数据基准点的位置,确定所述张量数据的描述符的内容。
[0136]
举例来说,可以使用描述符的数据基准点在数据存储空间中的基准地址pa_base,以及对角位置的两个顶点相对于数据基准点的位置,确定出图2中数据块23的描述符的内容。首先,确定描述符的数据基准点以及其在数据存储空间中的基准地址pa_base,例如,可以在数据存储空间21中选取一个数据(例如,位置为(2,2)的数据)作为数据基准点,将该数据在数据存储空间中的物理地址作为基准地址pa_base;然后,确定数据块23的对角位置的至少两个顶点相对于数据基准点的位置,例如,使用左上至右下方向的对角位置顶点相对
于数据基准点的位置,其中,左上角顶点的相对位置为(x_min,y_min),右下角顶点的相对位置为(x_max,y_max),然后可以根据基准地址pa_base、左上角顶点的相对位置(x_min,y_min)以及右下角顶点的相对位置(x_max,y_max)确定出数据块23的描述符的内容。
[0137]
在一种可能的实现方式中,可以使用下述公式(2)来表示描述符的内容:
[0138][0139]
应当理解,虽然上述示例中使用左上角和右下角两个顶点来确定描述符的内容,但本领域技术人员可以根据实际需要对至少两个顶点的具体顶点进行设置,本公开对此不作限制。
[0140]
在一种可能的实现方式中,可根据所述描述符的数据基准点在所述数据存储空间中的基准地址,以及所述描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,确定所述张量数据的描述符的内容。其中,数据描述位置与数据地址之间的映射关系可以根据实际需要进行设定,例如,描述符所指示的张量数据为三维空间数据时,可是使用函数f(x,y,z)来定义数据描述位置与数据地址之间的映射关系。
[0141]
在一种可能的实现方式中,可以使用下述公式(3)来表示描述符的内容:
[0142][0143]
应当理解,本领域技术人员可以根据实际情况对数据描述位置与数据地址之间的映射关系进行设定,本公开对此不作限制。
[0144]
在采用公式(1)表示描述符的内容的情况下,对于张量数据中的任意一个数据点,设其数据描述位置为(x
q
,y
q
),那么,该数据点在数据存储空间中的数据地址pa2
(x,y)
可以使用下述公式(4)来确定:
[0145]
pa2
(x,y)
=pa_start+(offset_y+y
q-1)*ori_x+(offset_x+x
q
) (4)
[0146]
通过这种方式,处理器可以根据描述符的内容计算出描述符所指示的张量数据在数据存储空间中的数据地址,进而根据该地址执行对应的处理(例如数据运算、数据同步等),从而可降低数据存取的复杂度,提高处理器的处理效率。
[0147]
根据本公开实施例的数据同步方法,能够在数据同步的接收方空间不足时实现张量数据的部分同步,通过多次的部分同步来实现整个张量数据的同步,从而避免了在空间不足的情况下张量数据整体同步失败或同步延迟等问题,提高了数据同步的效率;并且设定有指示张量数据的形状的描述符,在数据同步过程中根据描述符来确定张量数据,从而减少了同步开销,降低了数据存取的复杂度,并且实现了指令传递及处理过程中的指令兼容。
[0148]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
[0149]
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0150]
图5示出根据本公开实施例的数据同步装置的框图。该数据同步装置应用于第一处理器,如图5所示,该数据同步装置包括:
[0151]
请求指令解析模块51,用于在接收到来自第二处理器的同步请求指令时,解析所述同步请求指令,得到待同步的张量数据的数据特征以及针对所述张量数据的可同步数据量;
[0152]
第一描述符确定模块52,用于根据所述数据特征,确定待同步的张量数据的描述符,所述描述符用于指示待同步的张量数据的形状;
[0153]
数据确定模块53,用于根据所述张量数据的描述符及所述可同步数据量,确定所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应;
[0154]
同步指令生成及发送模块54,用于根据所述第一子数据,生成同步指令并向所述第二处理器发送所述同步指令,以指示所述第二处理器获取所述第一子数据。
[0155]
在一种可能的实现方式中,所述数据确定模块包括:
[0156]
第一确定子模块,用于根据所述张量数据的描述符,确定所述张量数据以及所述张量数据中处于待同步状态的第二子数据;
[0157]
第二确定子模块,用于根据所述第二子数据及所述可同步数据量,确定第一子数据。
[0158]
在一种可能的实现方式中,所述装置还包括:
[0159]
状态变更模块,用于将所述张量数据的第一子数据的状态由待同步状态变更为已同步状态。
[0160]
图6示出根据本公开实施例的数据同步装置的框图。该数据同步装置应用于第二处理器,如图6所示,该数据同步装置包括:
[0161]
特征及数据量确定模块61,用于根据待同步的张量数据的描述符,确定所述张量数据的数据特征以及针对所述张量数据的可同步数据量,所述描述符用于指示待同步的张量数据的形状;
[0162]
请求指令生成及发送模块62,用于根据所述数据特征以及所述可同步数据量,生成同步请求指令并向第一处理器发送所述同步请求指令,所述同步请求指令用于指示第一处理器根据所述同步请求指令确定待同步的张量数据以及所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应。
[0163]
在一种可能的实现方式中,所述装置还包括:
[0164]
同步指令解析模块,用于在接收到来自所述第一处理器的同步指令时,解析所述同步指令,得到待同步的张量数据的数据特征及所述张量数据的第一子数据;
[0165]
第二描述符确定模块,用于根据所述数据特征,确定所述张量数据的描述符;
[0166]
数据存储模块,用于根据所述张量数据的描述符,存储所述张量数据的第一子数据。
[0167]
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
[0168]
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0169]
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如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)等等。
[0170]
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0171]
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述数据同步装置。
[0172]
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0173]
图7示出根据本公开实施例的板卡的结构框图,参阅图7,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
[0174]
所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可以理解,每一组所述存储单元可以是ddr sdram(英文:double data rate sdram,双倍速率
同步动态随机存储器)。
[0175]
ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述人工智能芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。
[0176]
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
[0177]
所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie 3.0 x 16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
[0178]
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(micro controller unit,mcu)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
[0179]
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0180]
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。
[0181]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0182]
依据以下条款可更好地理解前述内容:
[0183]
a1、一种数据同步方法,所述方法应用于第一处理器,包括:
[0184]
在接收到来自第二处理器的同步请求指令时,解析所述同步请求指令,得到待同步的张量数据的数据特征以及针对所述张量数据的可同步数据量;
[0185]
根据所述数据特征,确定待同步的张量数据的描述符,所述描述符用于指示待同
步的张量数据的形状;
[0186]
根据所述张量数据的描述符及所述可同步数据量,确定所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应;
[0187]
根据所述第一子数据,生成同步指令并向所述第二处理器发送所述同步指令,以指示所述第二处理器获取所述第一子数据。
[0188]
a2、根据权利要求a1所述的方法,根据所述张量数据的描述符及所述可同步数据量,确定所述张量数据的第一子数据,包括:
[0189]
根据所述张量数据的描述符,确定所述张量数据以及所述张量数据中处于待同步状态的第二子数据;
[0190]
根据所述第二子数据及所述可同步数据量,确定第一子数据。
[0191]
a3、根据权利要求a1或a2所述的方法,所述方法还包括:
[0192]
将所述张量数据的第一子数据的状态由待同步状态变更为已同步状态。
[0193]
a4、一种数据同步方法,所述方法应用于第二处理器,包括:
[0194]
根据待同步的张量数据的描述符,确定所述张量数据的数据特征以及针对所述张量数据的可同步数据量,所述描述符用于指示待同步的张量数据的形状;
[0195]
根据所述数据特征以及所述可同步数据量,生成同步请求指令并向第一处理器发送所述同步请求指令,所述同步请求指令用于指示第一处理器根据所述同步请求指令确定待同步的张量数据以及所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应。
[0196]
a5、根据权利要求a4所述的方法,所述方法还包括:
[0197]
在接收到来自所述第一处理器的同步指令时,解析所述同步指令,得到待同步的张量数据的数据特征及所述张量数据的第一子数据;
[0198]
根据所述数据特征,确定所述张量数据的描述符;
[0199]
根据所述张量数据的描述符,存储所述张量数据的第一子数据。
[0200]
a6、一种数据同步装置,所述装置应用于第一处理器,包括:
[0201]
请求指令解析模块,用于在接收到来自第二处理器的同步请求指令时,解析所述同步请求指令,得到待同步的张量数据的数据特征以及针对所述张量数据的可同步数据量;
[0202]
第一描述符确定模块,用于根据所述数据特征,确定待同步的张量数据的描述符,所述描述符用于指示待同步的张量数据的形状;
[0203]
数据确定模块,用于根据所述张量数据的描述符及所述可同步数据量,确定所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应;
[0204]
同步指令生成及发送模块,用于根据所述第一子数据,生成同步指令并向所述第二处理器发送所述同步指令,以指示所述第二处理器获取所述第一子数据。
[0205]
a7、根据权利要求a6所述的装置,所述数据确定模块包括:
[0206]
第一确定子模块,用于根据所述张量数据的描述符,确定所述张量数据以及所述张量数据中处于待同步状态的第二子数据;
[0207]
第二确定子模块,用于根据所述第二子数据及所述可同步数据量,确定第一子数据。
[0208]
a8、根据权利要求a6或a7所述的装置,所述装置还包括:
[0209]
状态变更模块,用于将所述张量数据的第一子数据的状态由待同步状态变更为已同步状态。
[0210]
a9、一种数据同步装置,所述装置应用于第二处理器,包括:
[0211]
特征及数据量确定模块,用于根据待同步的张量数据的描述符,确定所述张量数据的数据特征以及针对所述张量数据的可同步数据量,所述描述符用于指示待同步的张量数据的形状;
[0212]
请求指令生成及发送模块,用于根据所述数据特征以及所述可同步数据量,生成同步请求指令并向第一处理器发送所述同步请求指令,所述同步请求指令用于指示第一处理器根据所述同步请求指令确定待同步的张量数据以及所述张量数据的第一子数据,所述第一子数据的数据量与所述可同步数据量相对应。
[0213]
a10、根据权利要求a9所述的装置,所述装置还包括:
[0214]
同步指令解析模块,用于在接收到来自所述第一处理器的同步指令时,解析所述同步指令,得到待同步的张量数据的数据特征及所述张量数据的第一子数据;
[0215]
第二描述符确定模块,用于根据所述数据特征,确定所述张量数据的描述符;
[0216]
数据存储模块,用于根据所述张量数据的描述符,存储所述张量数据的第一子数据。
[0217]
a11、一种人工智能芯片,所述芯片包括如权利要求a6-a10中任意一项所述的数据同步装置。
[0218]
a12、一种电子设备,所述电子设备包括如权利要求a11所述的人工智能芯片。
[0219]
a13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求a11所述的人工智能芯片;
[0220]
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
[0221]
所述存储器件,用于存储数据;
[0222]
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
[0223]
所述控制器件,用于对所述人工智能芯片的状态进行监控。
[0224]
a14、根据权利要求a13所述的板卡,
[0225]
所述存储器件包括:多组存储单元,每一组所述存储单元与所述人工智能芯片通过总线连接,所述存储单元为:ddr sdram;
[0226]
所述芯片包括:ddr控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
[0227]
所述接口装置为:标准pcie接口。
[0228]
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。