一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

算子运行方法、装置和相关产品与流程

2022-11-23 06:51:34 来源:中国专利 TAG:


1.本披露实施例涉及神经网络技术领域,特别是涉及一种算子运行的方法、装置和相关产品。


背景技术:

2.随着人工智能技术的发展,神经网络已经广泛应用于各个领域,例如,处理图像领域的任务会用到卷积神经网络进行图像识别。
3.神经网络中涉及各种算子,例如,卷积算子、池化算子、采样算子等等。各算子之间的切换以及互相调用均会产生较多的io消耗,因此,为了减少神经网络中的io消耗,降低时延,部分硬件提供了相应的底层机制和接口。
4.但是,这些硬件往往是针对不同模式的算子提供接口,导致在框架层面增加了极大地维护成本和调试难度。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种能够在框架层面降低维护成本和调试难度的算子运行的方法、装置和相关产品。
6.第一方面,本披露实施例提供一种算子运行的方法,该方法包括:
7.根据指令,在深度学习框架中生成目标算子;
8.基于预设的检测策略,确定目标算子的运行模式;
9.若目标算子的运行模式为第一运行模式,以第一运行模式执行目标算子;若目标算子的运行模式为第二运行模式,以第二运行模式执行目标算子。
10.第二方面,本披露实施例提供一种算子运行的装置,该装置包括:
11.生成模块,用于根据指令,在深度学习框架中生成目标算子;
12.确定模块,用于基于预设的检测策略,确定目标算子的运行模式;
13.运行模块,用于若目标算子的运行模式为第一运行模式,以第一运行模式执行目标算子;若目标算子的运行模式为第二运行模式,以第二运行模式执行目标算子。
14.第三方面,本披露实施例提供一种数据处理装置,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述第一方面实施例中的步骤。
15.第四方面,本披露实施例提供一种组合处理装置,组合处理装置包括上述第三方面实施例中的数据处理装置、通用互联接口和除该数据处理装置以外的其它处理装置;该数据处理装置与其它处理装置进行交互。
16.第五方面,本披露实施例提供一种芯片,芯片包括上述第四方面实施例中的组合处理装置。
17.第六方面,本披露实施例提供一种板卡,板卡包括上述第五方面实施例中的芯片。
18.第七方面,本披露实施例提供一种电子设备,电子设备包括上述第六方面实施例中的板卡。
19.第八方面,本披露实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序处理器执行计算机程序时实现上述第一方面实施例中的方法的步骤。
20.第九方面,本披露实施例提供一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面实施例中的方法的步骤。
21.本披露实施例提供的算子运行的方法、装置和相关产品,根据指令,在深度学习框架中生成目标算子,然后基于预设的检测策略,确定目标算子的运行模式,若目标算子的运行模式为第一运行模式,以第一运行模式执行目标算子;若目标算子的运行模式为第二运行模式,以第二运行模式执行目标算子。该方法中,通过在执行算子之前基于预设的检测策略,确定算子的运行模式,相当于设置了算子运行模式检测环节,通过该算子运行模式检测环节可确定出目标算子的运行模式,再以对应的运行模式运行该算子,这样,无需单独在深度学习框架中对不同模式的算子进行单独封装,使得在深度学习框架层面仅需封装一套算子就可实现同时支持多种运行模式的算子,在保证运行结果的前提下,在框架层面极大地降低了维护成本和调试难度。
附图说明
22.图1a为一个实施例中pytorch框架中算子不同运行模式流程示意图;
23.图1b为一个实施例中算子运行的方法的应用环境图;
24.图2为一个实施例中算子运行的方法的流程示意图;
25.图2a为另一个实施例中pytorch框架中不同算子模式流程示意图;
26.图3为另一个实施例中算子运行的方法的流程示意图;
27.图4为另一个实施例中算子运行的方法的流程示意图;
28.图5为另一个实施例中算子运行的方法的流程示意图;
29.图6为另一个实施例中算子运行的方法的流程示意图;
30.图7为一个实施例中算子运行的装置的结构框图;
31.图8为另一个实施例中算子运行的装置的结构框图;
32.图9为另一个实施例中算子运行的装置的结构框图;
33.图10为一个实施例中的组合处理装置的结构图;
34.图11为一个实施例中的板卡的结构示意图。
具体实施方式
35.下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
36.应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
37.还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0038]
首先,在具体介绍本披露实施例的技术方案之前,先对本披露实施例基于的技术背景或者技术演进脉络进行介绍。以人工智能处理器为例,支持逐层与融合两种运行模式的算子api,其中,逐层的运行模式指的是每个算子生成后单独进行编译(即每个算子都需编译一次)后执行,而融合的运行模式指的是每个算子生成后,将多个生成的算子一起编译(即所有算子只编译一次)后执行。相应地,以逐层模式运行的算子可称为逐层算子,以融合模式运行的算子可称为融合算子。由于融合模式与逐层模式机制的不同,逐层模式的算子和融合模式的算子的使用方式也不同,其中,逐层模式和融合模式这两种模式的算子在pytorch的神经网络框架中的使用流程请参见图1a所示。图1a中,逐层算子通过分发系统(dispatch)发起,而融合算子则是从即时编译系统(jit)到融合算子分发系统(fusedkernel)中发起。从图1a中可以看到,为了支持逐层与融合两种模式,在框架层面需要各自单独封装逐层与融合两套算子,这样,就极大地增加了维护成本和调试难度。另外,需要说明的是,从确定技术问题以及下述实施例介绍的技术方案,申请人均付出了大量的创造性劳动。并且针对该缺陷,本披露提供的算子运行方法,可以实现在一套算子内同时支持逐层与融合两种模式。
[0039]
本披露提供的一种算子运行方法可以应用于如图1b所示的应用环境中,该应用环境包括为以计算机设备01,该计算机设备01可以是任何类型,例如,各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等终端,或者,是独立的服务器或者是多个服务器组成的服务器集群等等。该计算机设备的内部结构中包括处理器011、非易失性存储介质012、内存储器013、网络接口014;其中,处理器011用于提供执行算子运行方法时的计算和控制能力,该处理器011可以是任何类型的处理器,包括但不限于是机器学习处理器、人工智能处理器ipu,中央处理器cpu、图形处理器gpu中的一种或多种组成异构处理器、该处理器可设置于任何类型的计算机设备中。其中,非易失性存储介质012存储有操作系统0121、计算机程序0122和数据库0123;该内存储器为非易失性存储介质012中的操作系统0121和计算机程序0122的运行提供环境,该数据库0123用于存储算子运行方法过程的相关数据。该网络接口用于与外部的其他设备通过网络连接通信。。
[0040]
为了使本披露的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本披露进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本披露,并不用于限定本披露。下面将通过实施例并结合附图具体地对本披露的技术方案以及本披露的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。需要说明的是,本披露提供
的一种算子运行的方法,执行主体为计算机设备或人工智能处理器,其中,该方法的执行主体均还可以为算子运行的装置,该装置可以通过软件、硬件或者软硬件结合的方式实现成为计算机设备或人工智能处理器的部分或者全部。
[0041]
图2提供了一种算子运行的方法,本方法涉及的是在生成了目标算子之后,检测该目标算子的对应运行模式,并根据对应的运行模式运行该目标算子的具体过程。如图2所示,该方法包括:
[0042]
s101,根据指令,在深度学习框架中生成目标算子。
[0043]
其中,指令为生成目标算子的指令,示例地,计算机设备接收到生成目标算子的指令后根据该指令生成目标算子。其中,计算机设备接收该指令的方式可以是计算机设备直接接收用户输入的指令,其中,用户输入的方式包括但不限于是语音输入、通过外设输入;该指令也可以是计算机设备在满足触发条件时,主动从数据库中获取生成文件,并从生成文件中解析出指令,当然还有其他方式,本披露实施例对此并不做限定。例如,请参见图2a所示,对于计算机设备来说,接收到分发系统/融合算子分发系统派发的算子调用指示后,就相当于接收到了上述指令,也即,此时计算机设备开始执行生成目标算子的操作。
[0044]
计算机设备在接收到指令之后,开始在深度学习框架中生成目标算子。其中,深度学习框架可以是pytorch,该pytorch是torch的python版本,是用于针对gpu加速的深度神经网络(dnn)编程的神经网络框架。深度学习框架是整个深度学习生态体系中的第一层,需要将神经网络映射的计算图结构所表达的深度学习任务具体化成可以在cpu或者人工智能处理器执行的指令和数据。在这个过程中,深度学习框架采用算子作为落实计算任务的具体元素,为每个算子都提供了在cpu或者人工智能处理器上执行的核函数(kernel),根据计算图,深度学习框架调度执行计算图中每个算子对应的核函数,完成整个神经网络的计算。相当于,将神经网络计算进一步拆分为各类常见的面向张量数据的算子,通过执行各算子对应的核函数实现神经网络的功能。
[0045]
深度学习框架中的算子需要预先生成才可在神经网络使用时正常执行,其中,在深度学习框架中生成目标算子,该目标算子泛指当前待生成的任一算子。实际应用时,计算机设备可以是执行目标算子的源码文件,便可得到生成好的目标算子。
[0046]
s102,基于预设的检测策略,确定目标算子的运行模式。
[0047]
请继续参见图2a所示,由于分发系统/融合算子分发系统派发的算子调用指示是用户在需要调用深度学习网络时触发的,而用户在触发调用深度学习网络指示时,已经确定了深度学习网络中的算子的运行模式,但对于计算机设备来说,其此时并不能确定目标算子的运行模式,所以,在生成了目标算子之后,正式执行目标算子之前,计算机设备需要确定该目标算子的运行模式。其中运行模式可以理解为算子的程序运行的方式,不同的运行模式,算子执行方式不相同。其中,实际应用中,算子的运行方式包括但不限于延迟运行模式、触发运行模式、复合运行模式、逐层运行模式、融合运行模式等。
[0048]
为了进一步对算子的运行模式进行说明,以逐层运行模式和融合运行模式为例,对算子具体运行模式进行说明。逐层模式和融合模式的机制不相同,其算子的使用方法也不相同,其中,逐层模式的算子使用方式是:createop(生成算子)-》compileop(编译算子)-》computeop(执行每个编译后的算子);融合模式的算子的使用方式是:createop(生成算子)-》fuseop(融合编译算子)-》computeop(执行融合编译后的算子);即逐层的运行模式指
的是每个算子生成后单独进行编译(即每个算子都需编译一次)然后执行,而融合的运行模式指的是每个算子生成后,将多个生成的算子一起编译(即所有算子只编译一次)然后执行。
[0049]
计算机设备可以基于预设的检测策略,确定目标算子的运行模式。可选地,该预设的检测策略为基于不同运行模式算子的调用栈规则确定的策略。即该检测策略为预先建立地,用于确定目标算子的运行模式的策略。具体地,在深度学习框架中,例如pytorch框架中,逐层和融合模式下算子的调用栈完全不同,且在pytorch框架中,融合模式下算子的调用一定是从融合算子分发系统(fuse dkernel)中发起的,但分发系统(dispatch)中发起的不止存在逐层算子,也可能有其他模式的算子,所以基于此,设定一检测策略。例如,定义一个全局变量(runningmode),选择在进入fusedkernel时将runningmode设为融合,fusedkernel结束时将runningmode设为逐层。然后计算机设备可以基于此来确定目标算子的运行模式,这样,便可保证在底层独立的kernel(核)中访问到当前正确的runningmode,从而准确地确定出目标算子的运行模式。其中,除了此检测策略之外,还可以通过其他方式进行检测以确定目标算子的运行模式,本披露实施例对确定目标算子的运行模式不作限定。
[0050]
s103,若目标算子的运行模式为第一运行模式,以第一运行模式执行目标算子;若目标算子的运行模式为第二运行模式,以第二运行模式执行目标算子。
[0051]
计算机设备开始生成完目标算子,且确定了该目标算子的运行模式之后,则以确定出目标算子的运行模式来执行目标算子。具体地,若目标算子的运行模式是第一运行模式,则以第一运行模式对应执行该目标算子,若目标算子的运行模式是第二运行模式,则以第二运行模式对应执行该目标算子。
[0052]
可选地,第一运行模式是逐层运行模式,第二运行模式是融合运行模式,那么目标算子的运行模式若是第一运行模式,就以逐层运行模式执行该目标算子,具体地,即是单独对目标算子进行编译。若目标算子的运行模式是第二运行模式,就以融合运行模式执行该目标算子,具体地,将该目标算子和其他已生成算子融合编译。
[0053]
本披露实施例中提供的算子运行方法、装置和相关产品,根据生成指令,在深度学习框架中生成目标算子,然后基于预设的检测策略,确定目标算子的运行模式,若目标算子的运行模式为第一运行模式,以第一运行模式执行目标算子;若目标算子的运行模式为第二运行模式,以第二运行模式执行目标算子。该方法中,通过在执行算子之前基于预设的检测策略,确定算子的运行模式,相当于设置了算子运行模式检测环节,通过该算子运行模式检测环节可确定出目标算子的运行模式,再以对应的运行模式运行该算子,这样,无需单独在深度学习框架中对不同模式的算子进行单独封装,使得在深度学习框架层面仅需封装一套算子就可实现同时支持多种运行模式的算子,在保证运行结果的前提下,在框架层面极大地降低了维护成本和调试难度。
[0054]
基于上述实施例,下面对基于预设的检测策略确定目标算子的运行模式的过程进行详细说明,如图3所示,本实施例包括以下步骤:
[0055]
s201,检测融合分发系统中是否存在预设的全局标志位。
[0056]
本实施例中,全局标志位指的是深度学习网络中每个子系统都可以识别的标志位,通过该全局标志位可以识别出目标算子的运行模式。可选地,该预设的全局标志位是基
于pytorch机制在特定时机设置的。该特定时机是借助pytorc h机制,然后在kernel里面判断,也就是通过全局变量设置runningmode时,设置预设的全局标志位。具体来说,由于逐层模式和融合模式运行的方式不同,融合模式下算子的调用一定是从fusedkernel(融合算子分发系统)发起的,而全局标志位runningmode是基于pytorch机制选择在进入fusedkernel时设定为融合,在fusedkernel结束时设置为逐层,这样便可保证在底层独立的kernel中访问到当前正确的runningmode,从而实现一套算子kernel对逐层融合两种模式的支持。如图2a所示,预先设置该全局标志位,使得只要是从图2a中融合算子分发系统派发的调用指示,此时该调用指示所要用的算子均为需要以融合模式运行的算子,即为融合算子。而若不是从图2a中融合算子分发系统派发的调用指示,调用指示所要用的算子均则是需要以逐层模式运行的算子,即为逐层算子。其中,该全局标志位可以是具体地数值;当然,该全局标志为也可以设置为字母、数值与字母的组合等,本披露实施例对此不作限定。
[0057]
s202,若融合分发系统中存在全局标志位,确定目标算子的运行模式为第一运行模式;若融合分发系统中不存在全局标志位,确定目标算子的运行模式为第二运行模式。
[0058]
可选地,以第一运行模式为融合运行模式,第二运行模式为逐层运行模式为例进行示意说明,计算机设备在生成了目标算子之后,在融合分发系统(即融合算子分发系统)中检测是否存在全局标志位,若存在,则确定目标算子的运行模式为第一运行模式(融合运行模式)。若不存在,则确定目标算子的运行模式为第二运行模式(逐层运行模式)。
[0059]
本披露实施例中,通过设置全局标志位来区分算子的运行模式,只需要判断融合分发系统中是否存在预设的全局标志位,则可确定出目标算子的运行模式,然后以对应的运行模式执行该目标算子,这样,无需单独在深度学习框架中对不同模式的算子进行单独封装,使得在深度学习框架层面仅需封装一套算子就可实现同时支持多种运行模式的算子,从而在框架层面极大地降低了维护成本和调试难度。
[0060]
在确定了目标算子的运行模式之后,采用确定的运行模式执行目标算子。前文有提及,逐层模式的算子和融合模式的算子的使用方式,从使用方式可以看出,逐层模式的算子就是按照正常的生成算子、单独编译该算子后执行该算子的过程执行,但是融合算子在生成算子之后,将所有生成的算子融合编译后执行的过程。那么以第一运行模式为融合运行模式,第二运行模式为逐层运行模式为例对执行目标算子进行说明。则在一个实施例中,如图4所示,若运行模式是逐层运行模式,则上述s103包括以下步骤:
[0061]
s301,对目标算子进行编译,得到目标算子的可执行文件。
[0062]
s302,将目标算子的可执行文件在人工智能处理器上运行。
[0063]
执行目标算子时,需将目标算子的进行编译形成可执行文件,然后将得到的可执行文件在人工智能处理器上运行,即完成目标算子操作。本实施例是目标算子为逐层运行模式,所以可以是直接编译和运行。示例地,假设目标算子包括三个:算子a、算子b、算子c,该三个算子之间的运算逻辑为算子a的输出作为算子b的全部输入,算子b的输出和算子a的输出共同为算子c的输入,算子c输出为最终运算结果。那么采用逐层运行模式执行该三个算子,则是先执行算子a,得到算子a的输出后会将该输出存储在内存中,在执行算子b时,需到内存中调取算子a的输出作为算子b的输入,同样,算子b的输出也会存储在内存中,在执行算子c时,会到内存中调取算子a和算子b的输出作为算子c的输入。
[0064]
在另外一个实施例中,如图5所示,若运行模式是融合运行模式,则上述s103包括
以下步骤:
[0065]
s401,将目标算子发送至融合单元中。
[0066]
s402,在融合单元中,对目标算子和融合单元中的其他算子同时进行编译,并将编译后的可执行文件在人工智能处理器上运行。
[0067]
融合运行模式的算子,需将目标算子发送至融合单元(或者融合容器)中,然后以融合单元整体进行编译,将编译后的可执行文件在人工智能处理器上运行,完成对目标算子的操作。仍以上述算子a、算子b、算子c为例进行说明,采用融合模式运行该三个算子,是将算子a、算子b、算子c放置在同一容器中,在该容器中运行该三个算子时,算子a的输出无需存在内容中,会直接给到算子b和算子c作为输入,同样,算子b的输出也会直接给到算子c作为输入,这样以融合运行模式执行算子时,无需进行内存存储这一过程,从而节省了操作资源。
[0068]
本披露实施例中,以目标算子对应的运行模式执行目标算子,不同运行模式运行方式不同,保证了目标算子的执行的准确性。
[0069]
如图6所示,本披露还提供一种多模式运行方法,该方法包括如下步骤:
[0070]
s1,根据指令,在深度学习框架中生成目标算子。
[0071]
s2,检测融合分发系统中是否存在预设的全局标志位。
[0072]
s3,若融合分发系统中存在全局标志位,确定目标算子为融合运行模式。
[0073]
s4,将目标算子发送至融合单元中。
[0074]
s5,对融合单元中的目标算子和融合单元中的其他算子同时进行编译,并将编译后的可执行文件在人工智能处理器上运行。
[0075]
s6,若融合分发系统中不存在全局标志位,确定目标算子为逐层运行模式。
[0076]
s7,对目标算子进行编译,得到目标算子的可执行文件。
[0077]
s8,将目标算子的可执行文件在人工智能处理器上运行。
[0078]
具体地,本实施例中框架层面算子的组织和调用流程为:
[0079][0080]
本披露实施例为了实现一套算子能够同时支持逐层和融合两种模式,对框架层面算子的组织和调用形式增加了checkfuse(检测算子的运行模式)的环节,该checkfuse的环节用于检测目标算子的运行模式是否为融合运行模式,若为融合模式,则运行fuseop(融合编译该算子后执行编译后的孙子),若为逐层模式,则执行compileop(单独编译生成的算子)-》computeop(执行该单独编译的算子)。采用本披露中的策略组织算子后,可以只使用一套算子同时支持逐层和融合两种模式,在保证运行结果的前提下,极大地降低了维护成本和调试难度。
[0081]
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0082]
在一个实施例中,如图7所示,提供了一种算子运行的装置,该装置包括:生成模块10、确定模块11和运行模块12,其中:
[0083]
生成模块10,用于根据指令,在神经网络框架中生成目标算子;
[0084]
确定模块11,用于基于预设的检测策略,确定目标算子的运行模式;
[0085]
运行模块12,用于若目标算子的运行模式为第一运行模式,以第一运行模式执行目标算子;若目标算子的运行模式为第二运行模式,以第二运行模式执行目标算子。
[0086]
在一个实施例中,检测策略为基于不同运行模式算子的调用栈规则确定的。
[0087]
在一个实施例中,如图8所示,上述确定模块11包括:检测单元111和确定单元112,其中,
[0088]
检测单元111,用于检测融合分发系统中是否存在预设的全局标志位;
[0089]
确定单元112,用于若融合分发系统中存在全局标志位,确定目标算子的运行模式为第一运行模式;若融合分发系统中不存在全局标志位,确定目标算子的运行模式为第二运行模式。
[0090]
在一个实施例中,预设的全局标志位是基于pytorch机制在特定时机设置的。进一步,该特定时机是借助pytorch机制,然后再kernel里面判断。也就是通过全局变量设置runningmode时,设置预设的全局标志位。具体来说,由于逐层模式和融合模式运行的方式不同,融合模式下算子的调用一定是从fusedkernel发起的,而全局标志位runningmode是基于pytorch机制选择在进入fusedkernel时设定为融合,在fusedkernel结束时设置为逐层,这样便可保证在底层独立的kernel中访问到当前正确的runningmode,从而实现一套算子kernel对逐层融合两种模式的支持。
[0091]
在一个实施例中,如图9所示,上述运行模块12包括:编译单元121和执行单元122,其中,
[0092]
编译单元121,用于对目标算子进行编译,得到目标算子的可执行文件;
[0093]
执行单元122,用于将目标算子的可执行文件在人工智能处理器上运行。
[0094]
在一个实施例中,上述编译单元121,还用于将目标算子发送至融合单元中;上述执行单元122,还用于在融合单元中,在融合单元中,对目标算子和融合单元中的其他算子同时进行编译,并将编译后的可执行文件在人工智能处理器上运行。
[0095]
关于算子运行的装置的具体限定可以参见上文中对于算子运行的方法的限定,在此不再赘述。上述算子运行的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0096]
在一个实施例中,本披露实施例还提供一种数据处理装置,包括处理器和存储器,存储器存储有计算机程序,处理器执行所述计算机程序时实现上述算子运行方法中任一实施例中的步骤。
[0097]
本实施例提供的一种数据处理装置,其实现原理和技术效果与上述算子运行方法的实施例类似,在此不再赘述。
[0098]
图10是示出根据本披露实施例的一种组合处理装置1000的结构图。如图10中所示,该组合处理装置1000包括计算处理装置1002、接口装置1004、其他处理装置1006和存储装置1008。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1010,该计
算装置可以配置用于执行本文结合附图多模式算子运行所描述的操作。
[0099]
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
[0100]
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
[0101]
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
[0102]
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
[0103]
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
[0104]
在一些实施例里,本披露还公开了一种芯片(例如图11中示出的芯片1102)。在一种实现中,该芯片是一种系统级芯片(system on chip,soc),并且集成有一个或多个如图10中所示的组合处理装置。该芯片可以通过对外接口装置(如图11中示出的对外接口装置1106)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如dram接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图11对该板卡进行详细地描述。
[0105]
图11是示出根据本披露实施例的一种板卡1100的结构示意图。如图11中所示,该板卡包括用于存储数据的存储器件1104,其包括一个或多个存储单元1110。该存储器件可以通过例如总线等方式与控制器件1108和上文所述的芯片1102进行连接和数据传输。进一步,该板卡还包括对外接口装置1106,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1112(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准pcie接口等。
[0106]
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(micro controller unit,mcu),以用于对所述芯片的工作状态进行调控。
[0107]
根据上述结合图10和图11的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
[0108]
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
[0109]
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
[0110]
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设
备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
[0111]
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
[0112]
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0113]
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如cpu、gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(resistive random access memory,rram)、动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random access memory,sram)、增强动态随机存取存储器(enhanced dynamic random access memory,edram)、高带宽存储器(high bandwidth memory,hbm)、混合存储器立方体(hybrid memory cube,hmc)、rom和ram等。
[0114]
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
[0115]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0116]
依据以下条款可更好地理解前述内容:
[0117]
条款a1,一种算子运行的方法,所述方法包括:
[0118]
根据指令,在深度学习框架中生成目标算子;
[0119]
基于预设的检测策略,确定所述目标算子的运行模式;
[0120]
若所述目标算子的运行模式为第一运行模式,以所述第一运行模式执行所述目标算子;若所述目标算子的运行模式为第二运行模式,以所述第二运行模式执行所述目标算子。
[0121]
条款a2,根据条款a1所述的方法,所述检测策略为基于不同运行模式算子的调用栈规则确定的。
[0122]
条款a3,根据条款a1或a2所述的方法,当所述第一运行模式为融合运行模式,所述第二运行模式为逐层运行模式时,所述基于预设的检测策略,确定所述目标算子的运行模式,包括:
[0123]
检测融合分发系统中是否存在预设的全局标志位;
[0124]
若所述融合分发系统中存在所述全局标志位,确定所述目标算子的运行模式为所述第一运行模式;若所述融合分发系统中不存在所述全局标志位,确定所述目标算子的运行模式为所述第二运行模式。
[0125]
条款a4,根据条款a3所述的方法,所述预设的全局标志位是基于pytorch机制在特定时机设置的。
[0126]
条款a5,根据条款a4所述的方法,所述以所述第一运行模式执行所述目标算子,包括:
[0127]
对所述目标算子进行编译,得到所述目标算子的可执行文件;
[0128]
将所述目标算子的可执行文件在人工智能处理器上运行。
[0129]
条款a6,根据条款a4所述的方法,所述以所述第二运行模式执行所述目标算子,包括:
[0130]
将所述目标算子发送至融合单元中;
[0131]
在所述融合单元中,对所述目标算子和所述融合单元中的其他算子同时进行编译,并将编译后的可执行文件在人工智能处理器上运行。
[0132]
条款a7、一种算子运行的装置,所述装置包括:
[0133]
生成模块,用于根据指令,在深度学习框架中生成目标算子;
[0134]
确定模块,用于基于预设的检测策略,确定所述目标算子的运行模式;
[0135]
运行模块,用于若所述目标算子的运行模式为第一运行模式,以所述第一运行模式执行所述目标算子;若所述目标算子的运行模式为第二运行模式,以所述第二运行模式执行所述目标算子。
[0136]
条款a8、根据条款a7所述的装置,所述检测策略为基于不同运行模式算子的调用栈规则确定的。
[0137]
条款a9、根据条款a7或a8所述的装置,所述确定模块包括:检测单元和确定单元,其中,
[0138]
所述检测单元,用于检测融合分发系统中是否存在预设的全局标志位;
[0139]
所述确定单元,用于若所述融合分发系统中存在所述全局标志位,确定所述目标
算子的运行模式为所述第一运行模式;若所述融合分发系统中不存在所述全局标志位,确定所述目标算子的运行模式为所述第二运行模式。
[0140]
条款a10、根据条款a7或a8所述的装置,所述预设的全局标志位是基于pytorch机制在特定时机设置的。
[0141]
条款a11、根据条款a10所述的装置,所述运行模块包括:编译单元和执行单元;所述编译单元,用于对所述目标算子进行编译,得到所述目标算子的可执行文件;所述执行单元,用于将所述目标算子的可执行文件在人工智能处理器上运行。
[0142]
条款a12、根据条款a10所述的装置,所述编译单元,还用于将所述目标算子发送至融合单元中;所述执行单元,还用于在所述融合单元中,对所述目标算子和所述融合单元中的其他算子同时进行编译,并将编译后的可执行文件在人工智能处理器上运行。
[0143]
条款a13、一种数据处理装置,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现条款a1至条款a6中任一项所述方法的步骤。
[0144]
条款a14、一种组合处理装置,所述组合处理装置包括如条款a13所述的数据处理装置、通用互联接口和除所述数据处理装置以外的其它处理装置;所述数据处理装置与所述其它处理装置进行交互。
[0145]
条款a15、一种芯片,所述芯片包括如条款a14所述的组合处理装置。
[0146]
条款a16、一种板卡,所述板卡包括如条款a15所述的芯片。
[0147]
条款a17、一种电子设备,所述电子设备包括如条款a16所述的板卡。
[0148]
条款a18、一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现条款a1至条款a6中任一项所述方法的步骤。
[0149]
条款a19、一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现条款a1至条款a6中任一项所述方法的步骤。
[0150]
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献