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

文档序号:17625215发布日期:2019-05-10 23:35阅读:95来源:国知局
运算方法、装置及相关产品与流程
本公开涉及信息处理
技术领域
,尤其涉及一种运算方法、装置及相关产品。
背景技术
:随着人工智能行业的发展,越来越多的深度学习框架被大家再开发和使用。为加速人工智能应用的计算,人工智能处理器应运而生,而人工智能处理器根据应用场景,具有云和端两个层次应用,针对服务器的云端应用往往采用多核的人工智能处理器,实现更高的计算能力,对人工智能处理器内部多个核的有效利用,对发挥人工智能处理器的效能具有重要价值。技术实现要素:有鉴于此,本公开提出了一种并行执行方法及装置,通过命令行传参数的方式传入并行度参数,可以根据待处理任务对吞吐量和延时的需求调整、设置第二处理器的模型并行度和数据并行度,以达到高吞吐、低延时的最佳点,具有很强的通用性。根据本公开的一方面,提供了一种并行执行方法,所述方法应用于第一处理器,所述方法包括:在接收到第一命令时,获取所述第一命令中的并行度参数;根据所述并行度参数设置第二处理器的并行度,以使所述第二处理器中的多个核以所述并行度执行待处理任务;其中,所述并行度参数包括模型并行参数和数据并行参数,所述并行度包括模型并行度和数据并行度。在一种可能的实现方式中,所述待处理任务包括在线任务,其中,根据所述并行度参数设置第二处理器的并行度,包括:根据所述模型并行参数设置所述待处理任务的第一配置文件中的模型并行度;根据所述数据并行参数设置所述待处理任务的第二配置文件中的数据并行度;其中,所述第一配置文件和第二配置文件存储在所述第一处理器中。在一种可能的实现方式中,根据所述并行度参数设置第二处理器的并行度,以使所述第二处理器中的多个核以所述并行度执行待处理任务,还包括:根据第一配置文件中的模型并行度对所述在线任务进行编译,在第二处理器上生成待执行程序;通过第二命令将第二配置文件中的数据并行度发送给第二处理器,以使第二处理器根据所述数据并行度获取数据,并执行待执行程序对所述数据进行处理。在一种可能的实现方式中,所述待处理任务包括离线任务,其中,根据所述并行度参数设置第二处理器的并行度,以使所述第二处理器中的多个核以所述并行度执行待处理任务,包括:分别根据模型并行参数和数据并行参数确定模型并行度和数据并行度;根据模型并行度对所述离线任务进行编译,生成离线文件;通过第三命令将所述离线文件中的数据和数据并行度发送给第二处理器,以使第二处理器根据数据并行度获取数据,并执行离线文件中的待执行程序对所述数据进行处理。在一种可能的实现方式中,所述第一处理器为通用处理器,所述第二处理器为人工智能处理器。根据本公开的另一方面,提供了一种计算机设备,包括存储器、处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上所述方法的步骤。根据本公开的另一方面,提供了一种可读存储介质,其上存储有计算机程序如上所述方法的步骤。根据本公开的另一方面,提供了一种并行执行方法,所述方法应用于第二处理器,所述方法包括:从第一处理器接收待执行程序以及数据并行参数,其中,所述数据并行参数包括数据并行度;根据所述数据并行度获取数据,其中,所述数据为所述待执行程序的输入数据;执行所述待执行程序对所述数据进行处理。在一种可能的实现方式中,从第一处理器接收数据并行参数,包括:接收第一处理器发送的第四命令,第四命令中携带有数据并行参数。在一种可能的实现方式中,所述第一处理器为通用处理器,所述第二处理器为人工智能处理器。根据本公开的另一方面,提供了一种计算机设备,包括存储器、处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上所述方法的步骤。根据本公开的另一方面,提供了一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述方法的步骤。根据本公开的一方面,提供了一种并行执行装置,所述装置应用于第一处理器,所述装置包括:获取模块,用于在接收到第一命令时,获取所述第一命令中的并行度参数;设置模块,用于根据所述并行度参数设置第二处理器的并行度,以使所述第二处理器中的多个核以所述并行度执行待处理任务;其中,所述并行度参数包括模型并行参数和数据并行参数,所述并行度包括模型并行度和数据并行度。在一种可能的实现方式中,所述待处理任务包括在线任务,所述设置模块包括:第一设置单元,用于根据所述模型并行参数设置所述待处理任务的第一配置文件中的模型并行度;第二设置单元,用于根据所述数据并行参数设置所述待处理任务的第二配置文件中的数据并行度;其中,所述第一配置文件和第二配置文件存储在所述第一处理器中。在一种可能的实现方式中,所述设置模块还包括:第一编译单元,用于根据第一配置文件中的模型并行度对所述在线任务进行编译,在第二处理器上生成待执行程序;第一发送单元,用于通过第二命令将第二配置文件中的数据并行度发送给第二处理器,以使第二处理器根据所述数据并行度获取数据,并执行待执行程序对所述数据进行处理。在一种可能的实现方式中,所述待处理任务包括离线任务,所述设置模块还包括:确定单元,用于分别根据模型并行参数和数据并行参数确定模型并行度和数据并行度;第二编译单元,用于根据模型并行度对所述离线任务进行编译,生成离线文件;第二发送单元,用于通过第三命令将所述离线文件中的数据和数据并行度发送给第二处理器,以使第二处理器根据数据并行度获取数据,并执行离线文件中的待执行程序对所述数据进行处理。在一种可能的实现方式中,所述第一处理器为通用处理器,所述第二处理器为人工智能处理器。根据本公开的另一方面,提供了一种并行执行装置,所述装置应用于第二处理器,所述装置包括:控制模块,用于从第一处理器接收待执行程序以及数据并行参数,其中,所述数据并行参数包括数据并行度;控制模块还用于根据所述数据并行度获取数据,其中,所述数据为所述待执行程序的输入数据;运算模块,用于执行所述待执行程序对所述数据进行处理。在一种可能的实现方式中,所述控制模块包括:接收单元,用于接收第一处理器发送的第四命令,第四命令中携带有数据并行参数。在一种可能的实现方式中,所述第一处理器为通用处理器,所述第二处理器为人工智能处理器。根据本公开的另一方面,提供了一种人工智能处理装置,所述装置包括第一处理器和第二处理器,所述第一处理器连接到所述第二处理器,其中,所述第一处理器用于执行如上所述的第一处理器执行的方法,所述第二处理器用于执行如上所述的第二处理器执行的方法。在一种可能的实现方式中,所述第二处理器用于执行人工智能计算,所述第二处理器包括:运算模块以及控制模块,所述运算模块包括:一个主处理电路和多个从处理电路;所述控制模块,用于从第一处理器接收待执行程序以及数据并行参数,所述数据并行参数包括数据并行度,所述待执行程序包括计算指令,所述控制模块,还用于根据所述数据并行度获取数据,其中,所述数据为所述待执行程序的输入数据;所述控制模块,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;所述多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;所述主处理电路,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。根据本公开的另一方面,提供了一种组合处理装置,其特征在于,所述组合处理装置包括如上所述的人工智能处理装置,通用互联接口和其它处理装置;所述人工智能处理装置与所述其它处理装置进行交互,共同完成用户指定的计算操作。在一种可能的实现方式中,所述组合处理装置还包括:存储装置,该存储装置分别与所述人工智能处理装置和所述其它处理装置连接,用于保存所述人工智能处理装置和所述其它处理装置的数据。通过命令行传参数的方式传入并行度参数,可以根据待处理任务对吞吐量和延时的需求调整、设置第二处理器的模型并行度和数据并行度,以达到高吞吐、低延时的最佳点,具有很强的通用性。针对不同的模型,方便达到用户希望得到的吞吐量和延时的最佳点,具有很强的灵活性。并且,能够更有效的利用第二处理器中多个核的计算能力。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出根据本公开一实施例的并行执行方法的流程图。图2示出根据本公开一实施例的步骤s12的方法的流程图。图3示出根据本公开一实施例的步骤s12的方法的流程图。图4示出根据本公开一实施例的并行执行方法的流程图。图5示出根据本公开一实施例的并行执行装置的框图。图6示出根据本公开一实施例的并行执行装置的框图。图7示出根据本公开一实施例的并行执行装置的框图。图8示出根据本公开一实施例的人工智能处理装置的框图。图9是根据一示例性实施例示出的一种第二处理器的框图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。对人工智能模型(以下简称模型)的并行化的处理分为数据并行和模型并行:其中,数据并行是不同的核有同一个模型的多个副本,每个核分配到不同的数据,然后将所有核的计算结果按照某种方式合并,因此,可以提升网络单次读入的图片等数据数量;模型并行是分布式系统中的不同核负责人工智能模型的不同部分,例如,人工智能模型的不同网络层被分配到不同的核,或者同一层内部的不同参数被分配到不同核,也就是对于模型固有的算子等特征进行分拆,使之运行在不同的核上。对于多核性能的提升目标在于高吞吐和低延时,针对特定的应用,对延时和吞吐量的需求各不相同,为了解决这一技术问题,本公开提供了一种并行执行方法以及相关装置。在一种可能的实现方式中,本公开下文中提到的并行执行方法及装置可以是基于caffe(convolutionalarchitectureforfastfeatureembedding,卷积神经网络框架)开发的。当然,本公开不限于此,也可以根据实际需要基于其他的机器学习框架开发多核并行执行方法,以提高人工智能处理器的效能。图1示出根据本公开一实施例的并行执行方法的流程图。该方法可以应用于第一处理器,第一处理器可以是主处理器,可以采用通用处理器,例如中央处理单元cpu、图形处理单元gpu等,本公开对第一处理器的具体类型不作限定。第一处理器可以为一终端上的处理器,该终端还可以包括存储器、输入设备等,该终端可以为计算机等,本公开对此不作限定。在第一处理器上可以基于caffe开发基于caffe的多核并行执行方法及装置,如图1所示,该方法可以包括:步骤s11,在接收到第一命令时,获取所述第一命令中的并行度参数;步骤s12,根据所述并行度参数设置第二处理器的并行度,以使所述第二处理器中的多个核以所述并行度执行待处理任务;其中,所述并行度参数包括模型并行参数和数据并行参数,所述并行度包括模型并行度和数据并行度。通过命令行传参数的方式传入并行度参数,可以根据待处理任务对吞吐量和延时的需求调整、设置第二处理器的模型并行度和数据并行度,以达到高吞吐、低延时的最佳点,具有很强的通用性。针对不同的模型,方便达到用户希望得到的吞吐量和延时的最佳点,具有很强的灵活性。并且,能够更有效的利用第二处理器中多个核的计算能力。另外,设置方法具有如上所述的通用性,与用户的应用场景解耦,便与用户保护自己的核心数据不泄露。对于灵活性,举例来说,应用可能需要啊延时较低,那么这种情况下可以适度增加模型并行度,如果应用需要的吞吐量较大,那么这种情况下可以适度增加数据并行度,模型并行度和数据并行度都可以通过命令行传参数的方式直接设置,灵活方便。对于步骤s11,其中,第一命令可以为用于对并行度参数进行配置的配置命令,可以是用户通过终端的输入设备输入的命令行,命令行中携带有并行度参数,并行度参数可以包括如上所述的模型并行参数(mp,modelparallelism)和数据并行参数(dp,dataparallelism)。第一处理器在接收到第一命令时,可以获取模型并行参数mp和数据并行参数dp。对于步骤s12,其中,待处理任务可以为待训练的模型,待处理任务可以包括在线任务,在线任务可以是指第一处理器需要通过在线程序对第二处理器上的程序进行编译和执行。第二处理器可以是用于执行人工智能运算的人工智能处理器,第二处理器可以包括多个核。该人工智能处理器可例如包括mlu(majoritylogicunit)、npu(neural-networkprocessingunit,神经网络处理单元)、dsp(digitalsignalprocess,数字信号处理单元)、现场可编程门阵列(field-programmablegatearray,fpga)芯片中的一种或组合。本公开对第二处理器的具体类型不作限制。对于在线任务,步骤s12中的“根据所述并行度参数设置第二处理器的并行度”可以包括:根据所述模型并行参数设置所述待处理任务的第一配置文件中的模型并行度;根据所述数据并行参数设置所述待处理任务的第二配置文件中的数据并行度。其中,所述第一配置文件和第二配置文件可以为存储在所述第一处理器中的文件,第一配置文件和第二配置文件可以是对caffe进行配置的配置文件。第一配置文件中和第二配置文件中可以包括相应的函数作为接口,第一处理器在接收到第一命令后,根据模型并行参数可以调用第一配置文件中的第一函数完成模型并行度的设置,根据数据并行参数可以调用第二配置文件中的第二函数完成数据并行度的设置。第一函数和第二函数可以为基于caffe开发的用于配置并行度参数的函数。需要说明的是,第一配置文件以及第二配置文件的文件名称、存储位置可以根据实际应用的需要设置,本公开对此不作限定。同样的,第一函数和第二函数也可以根据实际应用的场景选择,本公开对此不作限定。以上设置的第一配置文件中的模型并行度和第二配置文件数据并行度可以作为待处理任务对应的线程的全局变量,适用于线程的整个生命周期。图2示出根据本公开一实施例的步骤s12的方法的流程图。如图2所示,步骤s12还可以包括:步骤s121,根据第一配置文件中的模型并行度对所述在线任务进行编译,在第二处理器上生成待执行程序;步骤s122,通过第二命令将第二配置文件中的数据并行度发送给第二处理器,以使第二处理器根据所述数据并行度获取数据,并执行待执行程序对所述数据进行处理。模型并行的实现主要在编译时实现,因此,第一处理器可以根据第一配置文件中已经设置好的模型并行度对在线任务进行编译,在第二处理器上生成待执行程序。在编译过程中将在线任务中的模型按照模型并行度拆分为不同的部分(例如,不同的网络层)进行编译,并在该部分对应的第二处理器的核上生成待执行程序。在一种可能的实现方式中,第一处理器可以调用第一配置文件中的第一函数(接口)获取模型并行度。第二命令可以是在线任务对应的线程中的命令行,第一处理器可以调用第二配置文件的第二函数(接口)获取数据并行度,并通过命令行的方式将数据并行度传入第二处理器中。第二处理器可以根据数据并行度获取数据,该数据可以是在线任务的需要处理的数据,例如,图片、声音等数据。举例来说,通过设置数据并行度可以设置第二处理器每次获取的图片的张数。在第二处理器的多个不同的核上可以有同一个模型的多个副本,多个副本的数量可以与数据并行度相同,因此,第二处理器上的多个核可以同时对获取的多张图片进行处理,实现数据并行。对于在线任务,通过以上过程即可完成第二处理器的模型并行度和数据并行度的设置。针对不同的模型,方便达到用户希望得到的吞吐量和延时的最佳点,具有很强的灵活性,能够更有效的利用第二处理器中多个核的计算能力。在一种可能的实现方式中,待处理任务还可以包括离线任务,对于离线任务,编译和运行的过程是分离的。图3示出根据本公开一实施例的步骤s12的方法的流程图,对于离线任务,步骤s12可以包括:步骤s123,分别根据模型并行参数和数据并行参数确定模型并行度和数据并行度;步骤s124,根据模型并行度对所述离线任务进行编译,生成离线文件;步骤s125,通过第三命令将所述离线文件中的数据和数据并行度发送给第二处理器,以使第二处理器根据数据并行度获取数据,并执行离线文件中的待执行程序对所述数据进行处理。在一种可能的实现方式中,第一处理器可以根据第一命令中的模型并行参数确定模型并行度,根据第一命令中的数据并行参数确定数据并行度。需要说明的是,确定模型并行度和数据并行度的过程可以不是同时执行的,本公开对此不作限定。在另一种可能的实现方式中,可以根据所述模型并行参数设置第三配置文件中的模型并行度。其中,第三配置文件可以为所述离线任务的配置文件,第三配置文件也可以存储在第一处理器中,举例来说,第三配置文件可以为对caffe的离线任务进行配置的配置文件。第一处理器可以根据上述确定的模型并行度对离线任务进行编译,生成离线文件,或者,也可以调用第三配置文件的接口获取模型并行度,根据该获取的模型并行度对离线任务进行编译,生成离线文件。具体地,可以在编译过程中将离线任务中的模型按照模型并行度拆分为不同的部分进行编译,生成离线文件。离线文件中的数据可以包括第二处理器需要执行的待执行程序以及相关参数,相关参数可以是模型的权重等。第三命令可以是离线任务对应的线程中的命令行,第一处理器可以通过命令行的方式将所述离线文件中的数据和数据并行度传入第二处理器。第二处理器的处理过程可以参见上文的介绍,不再赘述。对于离线任务,通过以上过程即可完成第二处理器的模型并行度和数据并行度的设置。针对不同的模型,方便达到用户希望得到的吞吐量和延时的最佳点,具有很强的灵活性,能够更有效的利用第二处理器中多个核的计算能力。图4示出根据本公开一实施例的并行执行方法的流程图。该方法可以应用于第二处理器,如上文所述,第二处理器可以是用于执行人工智能运算的人工智能处理器(ipu),第二处理器可以包括多个核。该人工智能处理器可例如包括mlu(majoritylogicunit)、gpu(graphicsprocessingunit,图形处理单元)、npu(neural-networkprocessingunit,神经网络处理单元)、dsp(digitalsignalprocess,数字信号处理单元)、现场可编程门阵列(field-programmablegatearray,fpga)芯片中的一种或组合。本公开对第二处理器的具体类型不作限制。如图4所示,所述方法可以包括:步骤s21,从第一处理器接收待执行程序以及数据并行参数;步骤s22,根据所述数据并行度获取数据,其中,所述数据为所述待执行程序的输入数据;步骤s23,执行所述待执行程序对所述数据进行处理。对于步骤s21,从第一处理器接收待执行程序可以是指以在线或者离线的方式接收,比如说,对于在线任务,第一处理器在编译过程中在第二处理器上生成待执行程序,或者,对于离线任务,第一处理器编译完后生成离线文件,离线文件中包括待执行程序和相关参数,再将离线文件中的数据以命令行的方式传入第二处理器。其中,第一处理器在编译过程中,可以根据模型并行度对待处理任务(在线任务或者离线任务)进行编译。从第一处理器接收数据并行参数可以包括接收第一处理器发送的第四命令,第四命令中携带有数据并行参数。其中,第四命令可以是如上文所述的第二命令或者第三命令。其中,所述数据并行参数可以为数据并行度。对于步骤s22和步骤s23可以参见上文中关于步骤s122部分的描述,不再赘述。通过命令行传参数的方式传入并行度参数,可以根据待处理任务对吞吐量和延时的需求调整、设置第二处理器的模型并行度和数据并行度,以达到高吞吐、低延时的最佳点,具有很强的通用性。针对不同的模型,方便达到用户希望得到的吞吐量和延时的最佳点,具有很强的灵活性。并且,能够更有效的利用第二处理器中多个核的计算能力。图5示出根据本公开一实施例的并行执行装置的框图。所述装置可以应用于第一处理器,所述装置可以包括:获取模块31,用于在接收到第一命令时,获取所述第一命令中的并行度参数;设置模块32,用于根据所述并行度参数设置第二处理器的并行度,以使所述第二处理器中的多个核以所述并行度执行待处理任务;其中,所述并行度参数包括模型并行参数和数据并行参数,所述并行度包括模型并行度和数据并行度。通过命令行传参数的方式传入并行度参数,可以根据待处理任务对吞吐量和延时的需求调整、设置第二处理器的模型并行度和数据并行度,以达到高吞吐、低延时的最佳点,具有很强的通用性。针对不同的模型,方便达到用户希望得到的吞吐量和延时的最佳点,具有很强的灵活性。并且,能够更有效的利用第二处理器中多个核的计算能力。图6示出根据本公开一实施例的并行执行装置的框图。在一种可能的实现方式中,所述待处理任务包括在线任务,如图6所示,所述设置模块32可以包括:第一编译单元321,用于根据第一配置文件中的模型并行度对所述在线任务进行编译,在第二处理器上生成待执行程序;第一发送单元322,用于通过第二命令将第二配置文件中的数据并行度发送给第二处理器,以使第二处理器根据所述数据并行度获取数据,并执行待执行程序对所述数据进行处理。在一种可能的实现方式中,所述待处理任务包括离线任务,所述设置模块32还包括:确定单元323,用于分别根据模型并行参数和数据并行参数确定模型并行度和数据并行度;第二编译单元324,用于根据模型并行度对所述离线任务进行编译,生成离线文件;第二发送单元325,用于通过第三命令将所述离线文件中的数据和数据并行度发送给第二处理器,以使第二处理器根据数据并行度获取数据,并执行离线文件中的待执行程序对所述数据进行处理。在一种可能的实现方式中,所述设置模块32还可以包括:第一设置单元326,用于根据所述模型并行参数设置所述待处理任务的第一配置文件中的模型并行度;第二设置单元327,用于根据所述数据并行参数设置所述待处理任务的第二配置文件中的数据并行度;其中,所述第一配置文件和第二配置文件存储在所述第一处理器中。图7示出根据本公开一实施例的并行执行装置的框图。所述装置应用于第二处理器,所述装置可以包括:控制模块51,用于从第一处理器接收待执行程序以及数据并行参数,其中,所述数据并行参数包括数据并行度;控制模块51,还用于根据所述数据并行度获取数据,其中,所述数据为所述待执行程序的输入数据;运算模块52,用于执行所述待执行程序对所述数据进行处理。通过命令行传参数的方式传入并行度参数,可以根据待处理任务对吞吐量和延时的需求调整、设置第二处理器的模型并行度和数据并行度,以达到高吞吐、低延时的最佳点,具有很强的通用性。针对不同的模型,方便达到用户希望得到的吞吐量和延时的最佳点,具有很强的灵活性。并且,能够更有效的利用第二处理器中多个核的计算能力。在一种可能的实现方式中,所述控制模块51可以包括:接收单元,用于接收第一处理器发送的第四命令,第四命令中携带有数据并行参数。图8示出根据本公开一实施例的人工智能处理装置的框图。如图8所示,所述装置包括第一处理器41和第二处理器42,所述第一处理器41连接到所述第二处理器42,其中,所述第一处理器41用于执行上文中图1-图3部分所述的方法,所述第二处理器42用于执行图4部分所述的方法。在一种可能的实现方式中,第一处理器41可以是主处理器,可以采用通用处理器,例如中央处理单元cpu、图形处理单元gpu等。第一处理器41可用于获取输入数据以及要使用的人工智能算子,并将其传输给第二处理器42,以使第二处理器42执行相应的人工智能运算。本公开对第一处理器的具体类型不作限制。第二处理器42可以是用于执行人工智能运算的人工智能处理器(ipu),第二处理器可以包括多个核。该人工智能处理器可例如包括mlu(majoritylogicunit)、gpu(graphicsprocessingunit,图形处理单元)、npu(neural-networkprocessingunit,神经网络处理单元)、dsp(digitalsignalprocess,数字信号处理单元)、现场可编程门阵列(field-programmablegatearray,fpga)芯片中的一种或组合。本公开对第二处理器的具体类型不作限制。在一种可能的实施方式中,人工智能处理装置可以是有不同的处理器形成的(例如ipu+cpu);也可以是由多个相同的处理器形成的,例如多个处理器(xpu)形成类似于第一处理器41及第二处理器42的架构。其中,处理器的类型可以是现有的,也可以是新提出的新型处理器,本公开对此不作限制。图9是根据一示例性实施例示出的一种第二处理器的框图。参阅图9,该第二处理器用于执行机器学习计算,该第二处理器包括:控制模块141和运算模块142,其中,控制模块141与运算模块142连接,该运算模块142包括:一个主处理电路和多个从处理电路;控制模块141,用于获取输入数据以及计算指令;控制模块141获取的计算指令可以是由第一处理器对待处理任务进行编译后的待执行程序中的指令,输入数据可以是如上文所述的待处理任务的输入数据,还可以包括相关参数。在一种可选方案中,一个主处理电路和多个从处理电路可以为树型结构、h型结构或者脉冲阵列机结构,本公开对主处理电路和从处理电路之前的连接方式不作限定。在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据i/o接口或i/o引脚。上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。控制模块141,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。本申请提供的技术方案将运算模块设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算模块中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算模块中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有l层,k=1,2,...,l-1,对于第k层和第k+1层来说,我们将第k层称为输入层,其中的神经元为所述输入神经元,第k+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。可选的,上述第二处理器还可以包括:该存储单元140和直接内存访问单元50,存储单元140可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。可选的,该控制模块包括:指令存储单元410、指令处理单元411和存储队列单元413;指令存储单元410,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元411,用于对所述计算指令解析得到多个运算指令;存储队列单元413,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制模块,该控制模块可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制模块,该另一个控制模块包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。在一种可选方案中,该计算指令的结构可以如下表所示。操作码寄存器或立即数寄存器/立即数…上表中的省略号表示可以包括多个寄存器或立即数。在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。可选的,该控制模块还可以包括:所述依赖关系处理单元412,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算模块;所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
的其它普通技术人员能理解本文披露的各实施例。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1