本技术实施例涉及计算机领域,具体而言,涉及一种应用的运行方法、装置、存储介质及电子装置。
背景技术:
1、近年来,随着深度学习技术的快速发展,出现了很多种前端软件模型框架和后端硬件计算器件。一套完整的深度学习计算体系包括前端软件框架以及后端硬件计算器件,后端的计算器件为了支持前端框架,通常需要进行大量的算子适配工作。
2、在目前的前端框架中,一般通过运行代码调用基础算子实现复杂算子的功能,因此现有技术中,复杂算子的运行代码描述了在复杂算子使用过程中对于基础算子的调用过程,但采用这样的工作方式就会使得应用在运行的过程中,每次使用复杂算子都需要通过对应的代码调用基础算子才能够完成复杂算子的运算,导致应用使用复杂算子的效率降低,应用的运行效率随之降低。
3、针对相关技术中,应用算子的适配效率较低等问题,尚未提出有效的解决方案。
技术实现思路
1、本技术实施例提供了一种应用的运行方法、装置、存储介质及电子装置,以至少解决相关技术中应用算子的适配效率较低的问题。
2、根据本技术的一个实施例,提供了一种应用的运行方法,包括:
3、在目标应用运行的过程中,接收所述目标应用的目标调用请求,其中,所述目标调用请求用于请求调用目标算子;
4、响应所述目标调用请求,检测所述目标算子的目标算子类型;
5、在所述目标算子类型为基础算子类型的情况下,从第一算子库中调用所述目标算子的目标算子函数,其中,所述第一算子库中存储了目标设备为应用提供的属于所述基础算子类型的基础算子的基础算子函数;
6、在所述目标算子类型为复杂算子类型的情况下,从第二算子库中调用所述目标算子的目标算子函数,其中,所述第二算子库中存储了允许所述目标应用调用的除所述基础算子外属于所述复杂算子类型的复杂算子的复杂算子函数。
7、在一个示例性实施例中,所述从第一算子库中调用所述目标算子,包括:从所述目标设备的存储空间中所存储的所述第一算子库中调用所述目标算子;所述从第二算子库中调用所述目标算子,包括:从所述目标应用的应用内存中所存储的所述第二算子库中调用所述目标算子。
8、在一个示例性实施例中,在所述从第二算子库中调用所述目标算子之前,所述方法还包括:获取所述目标应用的目标配置文件,其中,所述目标配置文件用于将所述目标应用部署在所述目标设备上;从所述目标配置文件中提取算子描述,其中,所述算子描述用于描述所述复杂算子通过所述基础算子的连接实现的从输入到输出的逻辑关系;按照所述算子描述使用所述基础算子函数构建所述复杂算子函数,得到所述第二算子库。
9、在一个示例性实施例中,所述按照所述算子描述使用所述基础算子函数构建所述复杂算子函数,得到所述第二算子库,包括:按照所述算子描述使用所述基础算子构建所述复杂算子对应的复杂算子结构,其中,所述复杂算子结构用于通过树结构表征所述逻辑关系;按照所述复杂算子结构调用所述基础算子函数构建所述复杂算子函数;将所述复杂算子函数存储至所述目标应用的应用内存中,得到所述第二算子库。
10、在一个示例性实施例中,所述按照所述算子描述使用所述基础算子构建所述复杂算子对应的复杂算子结构,包括:按照所述算子描述构建节点集合,其中,所述节点集合包括算子输入节点,算子中间节点和算子输出节点;按照所述算子描述中所包括的多个子节点表达式使用所述节点集合中所包括的节点构建多个子结构;从所述多个子结构中所述算子输出节点所在的输出子结构开始遍历节点,在所遍历的节点为所述算子中间节点的情况下,从所述多个子结构中提取所述算子中间节点所在的中间子结构;使用所述中间子结构替换所述算子中间节点,直至将所述多个子结构合并为一,得到所述复杂算子结构。
11、在一个示例性实施例中,所述按照所述复杂算子结构调用所述基础算子函数构建所述复杂算子函数,包括:按照所述复杂算子结构从所述算子输出节点到所述算子输入节点从所述第一算子库提取所述基础算子函数;将提取出的所述基础算子函数按照所述复杂算子结构的连接关系拼接为所述复杂算子函数。
12、在一个示例性实施例中,所述从所述目标配置文件中提取算子描述,包括:从所述目标配置文件中提取算子表达式字段所在的文本段落作为所述算子描述,其中,所述算子表达式字段用于指示所述复杂算子的复杂表达式,所述算子描述包括所述算子输入节点所对应的输入数据,所述算子中间节点所对应的子节点表达式,以及所述算子输出节点所对应的子节点表达式,每个子节点表达式用于表示一个所述基础算子的输入节点和输出节点。
13、根据本技术的另一个实施例,提供了一种应用的运行装置,包括:
14、接收模块,用于在目标应用运行的过程中,接收所述目标应用的目标调用请求,其中,所述目标调用请求用于请求调用目标算子;
15、检测模块,用于响应所述目标调用请求,检测所述目标算子的目标算子类型;
16、第一调用模块,用于在所述目标算子类型为基础算子类型的情况下,从第一算子库中调用所述目标算子的目标算子函数,其中,所述第一算子库中存储了目标设备为应用提供的属于所述基础算子类型的基础算子的基础算子函数;
17、第二调用模块,用于在所述目标算子类型为复杂算子类型的情况下,从第二算子库中调用所述目标算子的目标算子函数,其中,所述第二算子库中存储了允许所述目标应用调用的除所述基础算子外属于所述复杂算子类型的复杂算子的复杂算子函数。
18、根据本技术的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
19、根据本技术的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
20、通过本技术,在目标应用运行的过程中,接收目标应用的目标调用请求,其中,目标调用请求用于请求调用目标算子;响应目标调用请求,检测目标算子的目标算子类型;在目标算子类型为基础算子类型的情况下,从第一算子库中调用目标算子的目标算子函数,其中,第一算子库中存储了目标设备为应用提供的属于基础算子类型的基础算子的基础算子函数;在目标算子类型为复杂算子类型的情况下,从第二算子库中调用目标算子的目标算子函数,其中,第二算子库中存储了允许目标应用调用的除基础算子外属于复杂算子类型的复杂算子的复杂算子函数。由于第一算子库存储了基础算子的基础算子函数,第二算子库存储了复杂算子的复杂算子函数,使得在算子调用的过程中只需要确定出算子的类型即可从相应的算子库中调用算子的函数执行算子的运算,也就是说,在需要调用复杂算子时,能够从其对应的复杂算子库中直接调用到复杂算子的复杂算子函数完成复杂算子的运算,无需执行基础算子调用的代码通过基础算子的调用实现复杂算子的运算。因此,可以解决应用算子的适配效率较低问题,达到提高了应用算子的适配效率效果。