一种算子调度方法、装置、设备及计算机可读存储介质与流程
- 国知局
- 2024-07-31 22:44:53
本发明涉及深度学习,特别是涉及一种算子调度方法、装置、设备及计算机可读存储介质。
背景技术:
1、在复杂的深度学习模型中,往往需要组合多个算子来实现特定的计算逻辑,从而导致了大量的重复性工作,降低了代码的可读性和可维护性。
2、目前的算子调度方法主要包括直接函数调用、面向对象的设计、计算图框架等方法。但是上述方法均存在各自的缺陷,首先直接函数调用是将算子作为直接的函数或方法被调用,不同的算子可能需要不同的参数格式和调用方式,增加了算子使用和维护的复杂性,难以扩展和管理。其次,面向对象的设计是算子被封装为对象,通过方法调用来执行,存在性能开销。再者,计算图框架是算子操作被表示为计算图中的节点,通过图优化进行执行,构建和解析计算图较为复杂。在执行算子时,用户需要手动创建和管理算子的输入输出数据结构,增加了开发工作量。
3、综上所述,如何有效地解决目前的算子调度方法维护的复杂性高,开发工作量高,算子调度效率低等问题,是目前本领域技术人员急需解决的问题。
技术实现思路
1、本发明的目的是提供一种算子调度方法,该方法减少了算子间调用的差异性,简化了算子的使用和维护,提升了深度学习框架后端算子的调用效率;本发明的另一目的是提供一种算子调度装置、设备及计算机可读存储介质。
2、为解决上述技术问题,本发明提供如下技术方案:
3、一种算子调度方法,包括:
4、获取当前深度学习框架中包含的各待调度算子和计算逻辑;
5、从后端算子库中查找各待调度算子;
6、利用高级语言表达式根据所述计算逻辑对各待调度算子进行组合,得到目标表达式;
7、利用执行引擎对所述目标表达式进行解析,得到解析结果;
8、根据所述解析结果利用预设通用函数接口对各待调度算子进行调度,以对所述当前深度学习框架的输入数据进行计算处理。
9、在本发明的一种具体实施方式中,利用执行引擎对所述目标表达式进行解析,得到解析结果,包括:
10、利用所述执行引擎对所述目标表达式进行解析,得到目标执行树;其中,所述目标执行树中包含各待调度算子涉及的各计算步骤和各计算步骤之间的依赖关系;
11、相应的,根据所述解析结果利用预设通用函数接口对各待调度算子进行调度,以对所述当前深度学习框架的输入数据进行计算处理,包括:
12、按照所述目标执行树的顺序利用所述预设通用函数接口对各待调度算子进行调度,以执行各计算步骤对所述当前深度学习框架的输入数据进行计算处理。
13、在本发明的一种具体实施方式中,利用所述执行引擎对所述目标表达式进行解析,得到目标执行树,包括:
14、利用所述执行引擎中的词法分析器对所述目标表达式进行分解,得到词法令牌序列;
15、利用所述执行引擎中的语法分析器根据所述词法令牌序列构建所述目标执行树。
16、在本发明的一种具体实施方式中,按照所述目标执行树的顺序利用预设通用函数接口对各待调度算子进行调度,包括:
17、以所述目标执行树的根节点为执行起始点对所述目标执行树中各节点进行遍历,得到遍历结果;
18、根据所述遍历结果按照所述目标执行树的顺序利用所述预设通用函数接口对各待调度算子进行调度。
19、在本发明的一种具体实施方式中,以所述目标执行树的根节点为执行起始点对所述目标执行树中各节点进行遍历,包括:
20、以所述目标执行树的根节点为执行起始点,按照从左到右的顺序对所述目标执行树中各节点进行遍历。
21、在本发明的一种具体实施方式中,在按照从左到右的顺序对所述目标执行树中各节点进行遍历之后,还包括:
22、当遍历到代表基础算子的子节点时,将所述代表基础算子的子节点确定为第一子节点;
23、递归遍历所述第一子节点的各孩子节点,直至达到所述目标执行树的叶子节点。
24、在本发明的一种具体实施方式中,根据所述遍历结果按照所述目标执行树的顺序利用所述预设通用函数接口对各待调度算子进行调度,以执行各计算步骤对所述当前深度学习框架的输入数据进行计算处理,包括:
25、当根据所述遍历结果确定存在孩子节点均为外部输入节点的子节点时,将孩子节点均为外部输入节点的子节点确定为第二子节点;
26、获取各外部输入节点的输入值;
27、利用所述预设通用函数接口调用所述第二子节点对应的目标算子;
28、根据所述目标算子和各输入值生成输出值;
29、将所述输出值确定为所述目标算子的上一级算子的输入,按照所述目标执行树的顺序利用所述预设通用函数接口对除所述目标算子之外的其他待调度算子进行递归调度,以执行各计算步骤对所述当前深度学习框架的输入数据进行计算处理。
30、在本发明的一种具体实施方式中,获取各外部输入节点的输入值,包括:
31、从所述第二子节点对应的输入容器中获取各外部输入节点的输入值;
32、相应的,在根据所述目标算子和各输入值生成输出值之后,还包括:
33、将所述输出值存储至所述第二子节点对应的输出容器。
34、在本发明的一种具体实施方式中,在将所述输出值存储至所述第二子节点对应的输出容器之后,还包括:
35、对所述第二子节点对应的各外部输入节点进行删除;
36、获取通过删除各外部输入节点得到的释放内存;
37、对所述释放内存进行记录。
38、在本发明的一种具体实施方式中,按照所述目标执行树的顺序利用所述预设通用函数接口对除所述目标算子之外的其他待调度算子进行递归调度,以执行各计算步骤对所述当前深度学习框架的输入数据进行计算处理,包括:
39、按照所述目标执行树的顺序利用所述预设通用函数接口对除所述目标算子之外的其他待调度算子进行递归调度,以根据各中间算子分别对应的输入容器中的输入值和输出容器中的输出值执行各计算步骤,对所述当前深度学习框架的输入数据进行计算处理;
40、其中,各中间算子为除所述目标算子之外的其他待调度算子中用于中间过程计算的待调度算子。
41、在本发明的一种具体实施方式中,根据所述解析结果利用预设通用函数接口对各待调度算子进行调度,包括:
42、根据所述解析结果利用通过操作符名称函数模板构建的预设通用函数接口对各待调度算子进行调度;其中,所述预设通用函数接口包括由用于存储各类数据的联合体和用于标识数据类型的枚举类型构成的结构体。
43、在本发明的一种具体实施方式中,获取当前深度学习框架中包含的各待调度算子和计算逻辑,包括:
44、获取当前深度学习框架中包含的各待调度算子分别对应的算子名称和计算逻辑;
45、相应的,从后端算子库中查找各待调度算子,包括:
46、根据各待调度算子分别对应的算子名称从后端算子库中查找各待调度算子。
47、一种算子调度设备,包括:
48、存储器,用于存储计算机程序;
49、处理器,用于执行所述计算机程序时实现如前所述算子调度方法的步骤。
50、一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述算子调度方法的步骤。
51、相应于上面的方法实施例,本发明还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如前所述算子调度方法的步骤。
52、本发明所提供的算子调度方法,获取当前深度学习框架中包含的各待调度算子和计算逻辑;从后端算子库中查找各待调度算子;利用高级语言表达式根据计算逻辑对各待调度算子进行组合,得到目标表达式;利用执行引擎对目标表达式进行解析,得到解析结果;根据解析结果利用预设通用函数接口对各待调度算子进行调度,以对当前深度学习框架的输入数据进行计算处理。
53、本发明的有益效果在于,通过设置统一的通用函数接口对各待调度算子进行调度,所有算子遵循统一的调用模式,减少了算子间调用的差异性,简化了算子的使用和维护。通过利用高级语言表达式对各待调度算子进行组合,较大地减少了重复代码,增加了代码的可重用性,简化了算子调用的复杂性,使代码更加简洁,进而减少了对系统硬件的消耗。通过执行引擎对目标表达式进行自动解析,减少了手动编码的工作量,提高了执行效率,提升了开发流程的便捷性和框架的整体性能,提升了深度学习框架后端算子的调用效率。
54、相应的,本发明还提供了与上述算子调度方法相对应的算子调度装置、设备和计算机可读存储介质,具有上述技术效果,在此不再赘述。
本文地址:https://www.jishuxx.com/zhuanli/20240730/194431.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表