运算方法、装置及相关产品与流程

文档序号:17590223发布日期:2019-05-03 21:43阅读:151来源:国知局
运算方法、装置及相关产品与流程
本公开涉及人工智能
技术领域
,尤其涉及一种数据处理方法及装置以及人工智能处理装置。
背景技术
:在人工智能
技术领域
,神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用gpu和cpu处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。在这种情况下,新的人工智能处理器被提出以提高神经网络模型的运算速度,节约运算时间,降低功耗。然而,当前对新的人工智能处理器的算法支持却远远不够。技术实现要素:有鉴于此,本公开提出了一种数据处理方法及装置以及人工智能处理装置。根据本公开的一方面,提供了一种数据处理方法,该方法应用于第一处理器,包括:通过第一存储模块接收并存储输入数据的第一存储空间的第一地址,所述第一存储空间为所述输入数据在第二处理器中的存储空间;在人工智能算子编译完成时,根据输入数据的类型、输出数据的类型以及人工智能算子的类型,通过所述第一存储模块为所述输入数据在第一处理器中分配第二存储空间;根据所述第一地址,将所述输入数据复制到所述第二存储空间;根据所述第二存储空间的第二地址,通过所述人工智能算子对所述输入数据执行相应的人工智能运算,得到输出数据。在一种可能的实现方式中,所述方法还包括:在人工智能算子编译完成时,通过所述第一存储模块为输出数据在第一处理器中分配第三存储空间,并在所述第一存储模块中存储所述第三存储空间的第三地址。在一种可能的实现方式中,所述方法还包括:在得到输出数据时,根据所述第三地址,将所述输出数据存储到所述第三存储空间。在一种可能的实现方式中,所述方法还包括:在将所述输入数据复制到所述第二存储空间后,释放所述第一存储模块中的第一地址。在一种可能的实现方式中,所述方法还包括:对所述人工智能算子进行编译。根据本公开的另一方面,提供了一种数据处理方法,该方法应用于第二处理器,包括:在接收到输入数据时,通过第二存储模块为所述输入数据在第二处理器中分配第一存储空间,并在所述第二存储模块中存储所述第一存储空间的第一地址;将接收到的输入数据存储到所述第一存储空间;将所述第一地址传递到第一处理器中的第一存储模块,以使所述第一处理器在人工智能算子编译完成时存储所述输入数据,并对所述输入数据执行相应的人工智能运算。在一种可能的实现方式中,将所述第一地址传递到第一处理器中的第一存储模块,包括:通过中间存储模块将所述第一地址传递到所述第一存储模块。在一种可能的实现方式中,所述方法还包括:在所述第一存储模块中的第一地址被释放后,释放所述第二存储模块中的第一地址,以释放所述第一存储空间。根据本公开的另一方面,提供了一种数据处理装置,该装置应用于第一处理器,所述装置包括:数据接收模块,用于通过第一存储模块接收并存储输入数据的第一存储空间的第一地址,所述第一存储空间为所述输入数据在第二处理器中的存储空间;第一分配模块,用于在人工智能算子编译完成时,根据输入数据的类型、输出数据的类型以及人工智能算子的类型,通过所述第一存储模块为所述输入数据在第一处理器中分配第二存储空间;复制模块,用于根据所述第一地址,将所述输入数据复制到所述第二存储空间;数据运算模块,用于根据所述第二存储空间的第二地址,通过所述人工智能算子对所述输入数据执行相应的人工智能运算,得到输出数据。在一种可能的实现方式中,所述装置还包括:第二分配模块,用于在人工智能算子编译完成时,通过所述第一存储模块为输出数据在第一处理器中分配第三存储空间,并在所述第一存储模块中存储所述第三存储空间的第三地址。在一种可能的实现方式中,所述装置还包括:第一数据存储模块,用于在得到输出数据时,根据所述第三地址,将所述输出数据存储到所述第三存储空间。在一种可能的实现方式中,所述装置还包括:第一释放模块,用于在将所述输入数据复制到所述第二存储空间后,释放所述第一存储模块中的第一地址。在一种可能的实现方式中,所述装置还包括:算子编译模块,用于对所述人工智能算子进行编译。根据本公开的另一方面,提供了一种数据处理装置,该装置应用于第二处理器,所述装置包括:第三分配模块,用于在接收到输入数据时,通过第二存储模块为所述输入数据在第二处理器中分配第一存储空间,并在所述第二存储模块中存储所述第一存储空间的第一地址;第二数据存储模块,用于将接收到的输入数据存储到所述第一存储空间;地址传递模块,用于将所述第一地址传递到第一处理器中的第一存储模块,以使所述第一处理器在人工智能算子编译完成时存储所述输入数据,并对所述输入数据执行相应的人工智能运算。在一种可能的实现方式中,所述地址传递模块用于:通过中间存储模块将所述第一地址传递到所述第一存储模块。在一种可能的实现方式中,所述装置还包括:第二释放模块,用于在所述第一存储模块中的第一地址被释放后,释放所述第二存储模块中的第一地址,以释放所述第一存储空间。根据本公开的另一方面,提供了一种人工智能处理装置,所述装置包括第一处理器和第二处理器,所述第一处理器连接到所述第二处理器,其中,所述第一处理器和所述第二处理器被配置为上述数据处理方法。在一种可能的实现方式中,所述第一处理器用于执行人工智能计算,所述第一处理器包括:运算模块以及控制模块,所述运算模块包括:一个主处理电路和多个从处理电路;所述控制模块,用于获取输入数据以及计算指令;所述控制模块,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;所述多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;所述主处理电路,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。根据本公开的各方面的数据处理方法及装置以及人工智能处理装置,能够在人工智能算子编译完成后为输入数据在第一处理器中分配存储空间,从而能够根据算子类型及数据类型改进数据摆放策略,提高人工智能算子的运行速度。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出根据本公开一实施例的数据处理方法的流程图。图2示出根据本公开一实施例的数据处理方法的流程图。图3示出根据本公开一实施例的数据处理方法的应用示例的示意图。图4示出根据本公开一实施例的数据处理装置的框图。图5示出根据本公开一实施例的数据处理装置的框图。图6示出根据本公开一实施例的人工智能处理装置的框图。图7示出根据本公开一实施例的第一处理器的示意图。图8示出根据本公开一实施例的主处理电路的框图。图9示出根据本公开一实施例的第一处理器的示意图。图10示出根据本公开一实施例的第一处理器的示意图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。图1示出根据本公开一实施例的数据处理方法的流程图。该方法可应用于第一处理器,如图1所示,该方法包括:在步骤s11中,通过第一存储模块接收并存储输入数据的第一存储空间的第一地址,所述第一存储空间为所述输入数据在第二处理器中的存储空间;在步骤s12中,在人工智能算子编译完成时,根据输入数据的类型、输出数据的类型以及人工智能算子的类型,通过所述第一存储模块为所述输入数据在第一处理器中分配第二存储空间;在步骤s13中,根据所述第一地址,将所述输入数据复制到所述第二存储空间;在步骤s14中,根据所述第二存储空间的第二地址,通过所述人工智能算子对所述输入数据执行相应的人工智能运算,得到输出数据。根据本公开实施例的数据处理方法,能够在人工智能算子编译完成后为输入数据在第一处理器中分配存储空间,从而能够根据算子类型及数据类型改进数据摆放策略,提高人工智能算子的运行速度。举例来说,第一处理器可以是用于执行人工智能运算的人工智能处理器(ipu),人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括gpu(graphicsprocessingunit,图形处理单元)、npu(neural-networkprocessingunit,神经网络处理单元)、dsp(digitalsignalprocess,数字信号处理单元)、现场可编程门阵列(field-programmablegatearray,fpga)芯片中的一种或组合。本公开对第一处理器的具体类型不作限制。在一种可能的实现方式中,第二处理器可以是主处理器,例如中央处理单元cpu、图形处理单元gpu等。第二处理器可用于获取输入数据以及要使用的人工智能算子,并将其传输给第一处理器,以使第一处理器执行相应的人工智能运算。本公开对第二处理器的具体类型不作限制。在一种可能的实施方式中,人工智能算子(operator)可以为人工智能中常用的算法,又被称为层,操作,节点.每个神经网络都对应着一个网络结构图,而图中的节点即为算子。可预先设置有人工智能算子库,人工智能算子库中可以包括多个算子(例如卷积算子、全连接算子、池化算子、激活算子等),各个算子可以被包括但不限于中央处理器cpu、图像处理器gpu、人工智能处理器ipu等处理器调用以实现对应的功能。在一种可能的实现方式中,第二处理器可调用第二存储模块在人工智能运算过程中存储数据。其中,第二存储模块可例如为mxnet框架下的内存管理模型中的存储模块ndarray。本公开对第二存储模块的具体类型不作限制。在一种可能的实现方式中,当第二处理器接收到输入数据时,可以通过该第二存储模块为输入数据在第二处理器中分配存储空间(第一存储空间),并在第二存储模块中存储该存储空间的地址(第一地址)。根据该第一地址,可将输入数据缓存到第一存储空间。并且,可将第一地址从该第二存储模块传递到第一处理器中的第一存储模块。在一种可能的实现方式中,第一处理器中可调用第一存储模块在算子内部存储数据。其中,第一存储模块可例如为mxnet框架下的mshadow库中的数据存储模块mshadow::tensor。本公开对第一存储模块的具体类型不作限制。在一种可能的实现方式中,在步骤s11中通过第一存储模块接收并存储第一地址。这样,可以使得第一存储模块和第二存储模块中的数据地址指向同一块内存(第一存储空间)。在一种可能的实现方式中,所述方法还可包括:对所述人工智能算子进行编译。也即,可在第一处理器中对待使用的人工智能算子进行动态编译。在完成编译时,可在步骤s12中为输入数据在第一处理器中分配存储空间。动态编译后,根据对应的人工智能算子的类型、输入数据的类型及输出数据的类型等因素,可通过第一存储模块为输入数据分配合适的存储空间(第二存储空间)。在一种可能的实现方式中,在为输入数据分配第二存储空间后,根据第一地址,可在步骤s13中读取第一存储空间中的输入数据,并将该输入数据复制到第二存储空间。在一种可能的实现方式中,在输入数据被复制到第二存储空间后,根据第二存储空间的第二地址,可在步骤14中通过所述人工智能算子对所述输入数据执行相应的人工智能运算,得到输出数据。通过这种方式,第一处理器可以在算子编译后根据算子类型及输入输出数据类型实现更好的数据摆放策略(例如通过ipu的sopa库实现数据摆放策略),从而优化数据存储方式,提高算子运行速度。在一种可能的实现方式中,所述方法还可包括:在人工智能算子编译完成时,通过所述第一存储模块为输出数据在第一处理器中分配第三存储空间,并在所述第一存储模块中存储所述第三存储空间的第三地址。举例来说,在第一处理器对人工智能算子进行动态编译完成后,执行人工智能运算之前,可通过第一存储模块为输出数据在第一处理器中分配存储空间(第三存储空间),并在第一存储模块中存储该存储空间的地址(第三地址)。在一种可能的实现方式中,所述方法还可包括:在得到输出数据时,根据所述第三地址,将所述输出数据存储到所述第三存储空间。举例来说,根据输出数据的存储空间的第三地址,在执行人工智能运算得到输出数据时,可将输出数据存储到所述第三存储空间,从而完成人工智能运算过程。在一种可能的实现方式中,所述方法还包括:在将所述输入数据复制到所述第二存储空间后,释放所述第一存储模块中的第一地址。举例来说,在输入数据复制到第二存储空间后,可仅在第一存储模块保留第二地址,释放第一地址,从而节省第一存储模块的空间。进而,还可释放第二处理器的第二存储模块中的第一地址,以释放第一存储空间,从而节省第二存储模块的空间以及第二处理器的内存空间。根据本公开实施例的数据处理方法,能够在人工智能算子编译完成后为输入数据和输出数据在第一处理器中分配存储空间,从而能够根据算子类型及数据类型改进数据摆放策略,提高人工智能算子的运行速度。图2示出根据本公开一实施例的数据处理方法的流程图。该方法可应用于第二处理器,如图2所示,该方法包括:在步骤s21中,在接收到输入数据时,通过第二存储模块为所述输入数据在第二处理器中分配第一存储空间,并在所述第二存储模块中存储所述第一存储空间的第一地址;在步骤s22中,将接收到的输入数据存储到所述第一存储空间;在步骤s23中,将所述第一地址传递到第一处理器中的第一存储模块,以使所述第一处理器在人工智能算子编译完成时存储所述输入数据,并对所述输入数据执行相应的人工智能运算。根据本公开实施例的数据处理方法,能够在接收到输入数据时在第二处理器中缓存输入数据,并将缓存地址传递到第一处理器,以使第一处理器在人工智能算子编译完成时复制输入数据,从而提高人工智能算子的运行速度。举例来说,当第二处理器接收到输入数据时,可以通过第二存储模块为输入数据在第二处理器中分配存储空间(第一存储空间),并在第二存储模块中存储该存储空间的地址(第一地址)。根据该第一地址,可将输入数据缓存到第一存储空间。并且,可将第一地址从该第二存储模块传递到第一处理器中的第一存储模块。在一种可能的实现方式中,步骤s23可包括:通过中间存储模块将所述第一地址传递到所述第一存储模块。举例来说,第二处理器还可调用中间存储模块,该中间存储模块分别连接到第一存储模块和第二存储模块,用于传递地址。当第二存储模块需要传递地址时,可通过中间存储模块将所述第一地址传递到所述第一存储模块。其中,中间存储模块可例如为mxnet框架下内存管理模型中的存储模块tblob。本公开对中间存储模块的具体类型不作限制。在一种可能的实现方式中,所述方法还包括:在所述第一存储模块中的第一地址被释放后,释放所述第二存储模块中的第一地址,以释放所述第一存储空间。举例来说,在第一处理器将输入数据复制到其第二存储空间后,第二存储模块可释放第一地址以释放第一存储空间,从而节省第二存储模块的空间以及第二处理器的内存空间。图3示出根据本公开一实施例的数据处理方法的应用示例的示意图。如图3所示,在该应用示例中,第一处理器可以是ipu,第二处理器cpu或gpu。第二处理器在接收到输入数据时,可调用第二存储模块(ndarray)为输入数据分配cpu内存(第一存储空间),并在第二存储模块(ndarray)中存储内存地址。根据分配的内存地址,可将输入数据缓存到cpu内存。并且,第二处理器还可调用中间存储模块(tblob),通过中间存储模块将第二存储模块(ndarray)中存储的内存地址传递到第一存储模块(mshadow::tensor)。在该应用示例中,第一处理器可调用第一存储模块(mshadow::tensor)接收并存储输入数据的cpu内存地址。在人工智能算子编译完成时,根据输入数据的类型、输出数据的类型以及人工智能算子的类型,可确定数据摆放策略,并通过第一存储模块(mshadow::tensor)为输入数据和输出数据在第一处理器中分配ipu内存(第二存储空间和第三存储空间)。根据cpu内存的第一地址,第一处理器可将输入数据复制到ipu内存(第二存储空间),然后释放cpu内存以节省存储空间。在该应用示例中,在输入数据复制到ipu内存后,可通过人工智能算子对输入数据执行相应的人工智能运算,得到输出数据;并将输出数据存储到ipu内存(第三存储空间),从而实现人工智能运算的整个运算过程。通过这种方式,可在算子编译后分配ipu内存,从而优化数据存储方式,提高算子运行速度。图4示出根据本公开一实施例的数据处理装置的框图。该装置应用于第一处理器,如图4所示,所述装置包括:数据接收模块401,用于通过第一存储模块接收并存储输入数据的第一存储空间的第一地址,所述第一存储空间为所述输入数据在第二处理器中的存储空间;第一分配模块402,用于在人工智能算子编译完成时,根据输入数据的类型、输出数据的类型以及人工智能算子的类型,通过所述第一存储模块为所述输入数据在第一处理器中分配第二存储空间;复制模块403,用于根据所述第一地址,将所述输入数据复制到所述第二存储空间;数据运算模块404,用于根据所述第二存储空间的第二地址,通过所述人工智能算子对所述输入数据执行相应的人工智能运算,得到输出数据。在一种可能的实现方式中,所述装置还包括:第二分配模块,用于在人工智能算子编译完成时,通过所述第一存储模块为输出数据在第一处理器中分配第三存储空间,并在所述第一存储模块中存储所述第三存储空间的第三地址。在一种可能的实现方式中,所述装置还包括:第一数据存储模块,用于在得到输出数据时,根据所述第三地址,将所述输出数据存储到所述第三存储空间。在一种可能的实现方式中,所述装置还包括:第一释放模块,用于在将所述输入数据复制到所述第二存储空间后,释放所述第一存储模块中的第一地址。在一种可能的实现方式中,所述装置还包括:算子编译模块,用于对所述人工智能算子进行编译。图5示出根据本公开一实施例的数据处理装置的框图。该装置应用于第二处理器,如图5所示,所述装置包括:第三分配模块501,用于在接收到输入数据时,通过第二存储模块为所述输入数据在第二处理器中分配第一存储空间,并在所述第二存储模块中存储所述第一存储空间的第一地址;第二数据存储模块502,用于将接收到的输入数据存储到所述第一存储空间;地址传递模块503,用于将所述第一地址传递到第一处理器中的第一存储模块,以使所述第一处理器在人工智能算子编译完成时存储所述输入数据,并对所述输入数据执行相应的人工智能运算。在一种可能的实现方式中,所述地址传递模块用于:通过中间存储模块将所述第一地址传递到所述第一存储模块。在一种可能的实现方式中,所述装置还包括:第二释放模块,用于在所述第一存储模块中的第一地址被释放后,释放所述第二存储模块中的第一地址,以释放所述第一存储空间。图6示出根据本公开一实施例的人工智能处理装置的框图。所述装置包括第一处理器30及第二处理器50,第一处理器30连接到第二处理器50。其中,第一处理器30和第二处理器50分别被配置为执行上述的数据处理方法。在一种可能的实现方式中,第一处理器30可以是用于执行人工智能运算的人工智能处理器(ipu)。该人工智能处理器可例如包括gpu(graphicsprocessingunit,图形处理单元)、npu(neural-networkprocessingunit,神经网络处理单元)、dsp(digitalsignalprocess,数字信号处理单元)、现场可编程门阵列(field-programmablegatearray,fpga)芯片中的一种或组合。本公开对第一处理器的具体类型不作限制。在一种可能的实现方式中,第二处理器50可以是主处理器,例如中央处理单元cpu、图形处理单元gpu等。第二处理器可用于获取输入数据以及要使用的人工智能算子,并将其传输给第一处理器,以使第一处理器执行相应的人工智能运算。本公开对第二处理器的具体类型不作限制。在一种可能的实施方式中,人工智能处理装置可以是有不同的处理器形成的(例如ipu+cpu);也可以是由多个相同的处理器形成的,例如多个处理器(xpu)形成类似于第一处理器30及第二处理器50的架构。其中,处理器的类型可以是现有的,也可以是新提出的新型处理器,本公开对此不作限制。图7示出根据本公开一实施例的第一处理器的示意图。在一种可能的实现方式中,如图7所示,第一处理器(人工智能处理器)可包括控制模块32、运算模块33及存储模块31,所述运算模块33包括主处理电路331和多个从处理电路332(图中从处理电路的数目是示例性的)。所述控制模块32,用于获取输入数据及计算指令;所述控制模块32,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路331;所述主处理电路331,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;所述多个从处理电路332,用于依据从所述主处理电路331传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路331;所述主处理电路331,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。本公开所述的第一处理器在接收到输入数据及计算指令后,对输入数据执行相应的运算操作,从而获得所述计算结果。本公开所述的第一处理器可以支持机器学习以及一些非机器学习的人工智能算法。上述计算指令包括但不限于:正向运算指令或反向训练指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。在一种可能的实施方式中,在第一处理器获得所述计算结果后,可将所述计算结果发送给第二处理器(cpu或gpu)等其他处理器。所述运算指令为第一处理器根据人工智能算子获得的可运行代码,上述可运行代码包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,本申请具体实施方式并不限制上述计算指令的具体表现形式。在一种可能的实施方式中,所述第一处理器的运算数据可以通过数据传输模块360得到,该数据传输模块360具体可以为一个或多个数据i/o接口或i/o引脚。所述主处理电路331,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种。图8示出根据本公开一实施例的主处理电路331的框图。在一种可能的实现方式中,如图8所示,主处理电路331可以包括:转换处理电路113、激活处理电路111、加法处理电路112中的一种或任意组合。所述转换处理电路113,用于对所述数据执行所述前序处理,所述前序处理可为:将主处理电路331接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路331接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换)。所述激活处理电路111,用于执行所述后续处理,具体为执行主处理电路331内数据的激活运算;所述加法处理电路112,用于执行所述后续处理,具体为执行加法运算或累加运算。每个从处理电路332,用于根据所述主处理电路331传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路331;所述主处理电路331,用于对多个中间结果执行后续处理得到所述运算指令的最终计算结果。所述控制模块32还用于根据所述状态信息生成调试结果,并向所述状态信息获取装置40输出调试结果。存储模块31用于根据运算指令,存储所述运算过程中的状态信息,其中,所述状态信息包括所述主处理电路331的前序处理过程中的状态信息、所述多个从处理电路332的中间运算过程中的状态信息、所述主处理电路331的后续处理过程中的状态信息中的至少一种。所述存储模块可以包括片上存储子模块310,所述片上存储子模块310可以包括高速暂存存储器。存储模块31还可以包括寄存器、缓存中的一个或者任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述神经网络模型、所述数据和标量;所述缓存为高速暂存缓存。在一种可能的实施方式中,控制模块32可以包括:指令缓存子模块320、指令处理子模块321和存储队列子模块323;指令缓存子模块320,用于存储所述神经网络模型关联的计算指令;所述指令处理子模块321,用于对所述计算指令解析得到多个运算指令;存储队列子模块323,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。在一种可能的实施方式中,主处理电路331也可以包括一个控制模块32,该控制模块32可以包括主指令处理子模块,具体用于将指令译码成微指令。当然在一种可能的实施方式中,从处理电路332也可以包括另一个控制模块32,该另一个控制模块32包括从指令处理子模块,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各模块或各处理电路的控制信号。在一种可选方案中,该计算指令的结构可以如下表一所示。表一操作码寄存器或立即数寄存器/立即数...上表中的省略号表示可以包括多个寄存器或立即数。在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。例如,如下表二所示。表二上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为t维数据,t为大于等于1的整数,例如,t=1时,为1维数据,即向量,如t=2时,为2维数据,即矩阵,如t=3或3以上时,为多维张量。可选的,该控制模块32还可以包括:依赖关系处理子模块322,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令缓存子模块内,在所述第零运算指令执行完毕后,从所述指令缓存子模块提取所述第一运算指令传输至所述运算模块;所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。图9示出根据本公开一实施例的第一处理器的示意图。在一种可能的实施方式中,如图9所示,运算模块33可以包括分支处理电路333,其中,主处理电路331与分支处理电路333连接,分支处理电路333与多个从处理电路332连接;分支处理电路333,用于执行转发主处理电路331与从处理电路332之间的数据或指令。在一种可能的实施方式中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:控制模块从存储模块31内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;主处理电路将输入神经元矩阵x拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将权值矩阵w广播给8个从处理电路,从处理电路并行执行8个子矩阵与权值矩阵w的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制模块,控制模块将该最终结果y输出或存储至存储模块31内。如图9所示的第一处理器执行神经网络正向运算指令的方法具体可以为:控制模块32从存储模块31内提取运算数据(例如神经网络正向运算指令、神经网络运算指令)对应的操作域以及至少一个操作码,控制模块32将该操作域传输至数据访问模块,将该至少一个操作码发送至运算模块。控制模块32从存储模块31内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算模块的主处理电路,控制模块从存储模块31内提取输入数据xi,将该输入数据xi发送至主处理电路。主处理电路将输入数据xi拆分成n个数据块;控制模块32的指令处理子模块321依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、权值w以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该权值w与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏执指令将该累加结果执行加偏执b得到最终结果,将该最终结果发送至该控制模块。另外,加法运算和乘法运算的顺序可以调换。本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。图10示出根据本公开一实施例的第一处理器的示意图。在一种可能的实施方式中,如图10所示,运算模块33可以包括一个主处理电路331和多个从处理电路332。在一种可能的实施方式中,如图10所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图10所示的k个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。所述集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
的其它普通技术人员能理解本文披露的各实施例。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1