CN117271101A - 一种算子融合方法、装置、电子设备及存储介质 - Google Patents
一种算子融合方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117271101A CN117271101A CN202311559655.8A CN202311559655A CN117271101A CN 117271101 A CN117271101 A CN 117271101A CN 202311559655 A CN202311559655 A CN 202311559655A CN 117271101 A CN117271101 A CN 117271101A
- Authority
- CN
- China
- Prior art keywords
- fusion
- operator
- target
- calculation graph
- graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000007500 overflow downdraw method Methods 0.000 title claims abstract description 25
- 230000004927 fusion Effects 0.000 claims abstract description 514
- 238000004364 calculation method Methods 0.000 claims abstract description 226
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000010586 diagram Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims description 8
- 238000005457 optimization Methods 0.000 claims description 7
- 238000003062 neural network model Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 4
- 238000007499 fusion processing Methods 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 4
- 230000008521 reorganization Effects 0.000 claims description 2
- 238000013528 artificial neural network Methods 0.000 abstract description 8
- 230000006399 behavior Effects 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 8
- 230000006798 recombination Effects 0.000 description 6
- 238000005215 recombination Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种算子融合方法、装置、设备及存储介质。该方法包括:获取待融合处理的目标计算图,根据多种算子融合策略和目标计算图中各算子之间的依赖关系,构建得到融合计划表;根据融合计划表,确定与目标计算图匹配的算子融合方案,根据算子融合方案,生成与目标计算图对应的原始融合计算图;通过对原始融合计算图进行运行时建模,对至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。本发明实施例的技术方案通过精细的算子融合策略和调度方案,减少了数据移动和内存访问等运行时行为,提升了深度神经网络的计算性能,节约了算子的内存占用,提高了运算速度。
Description
技术领域
本发明涉及深度神经网络技术领域,尤其涉及一种算子融合方法、装置、电子设备及存储介质。
背景技术
当前深度神经网络在不同领域中得到了广泛应用,但在实际部署时,往往面临着计算资源受限、内存访问瓶颈等挑战。在传统的深度神经网络执行中,每个算子都会引入额外的开销,如内存访问、计算时间等。而随着深度学习模型规模和复杂度的快速发展,使用算子融合技术将多个连续的算子融合为一个融合算子,可以有效而减少算子间的开销,实现更快速、更节省资源的深度学习推理过程。
然而,现有的算子融合方法无法充分利用不同内存层次和硬件设备的特性,往往会导致计算任务的效率低下和内存资源的浪费。
发明内容
有鉴于此,本发明提供了一种算子融合方法、装置、设备及存储介质,为在多级内存感知下的算子融合优化提供了有效的解决方案,进而可以提高模型在部署目标硬件上的执行性能,减少内存占用。
第一方面,本发明实施例提供了一种算子融合方法,该方法包括:
获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;
其中,融合计划表中包括至少一个备选融合算子,以及与每种备选融合算子分别对应的至少一种可选融合模式;
根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图;
通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。
第二方面,本发明实施例还提供了一种算子融合装置,该装置包括:
融合计划表构建模块,用于获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;
其中,融合计划表中包括至少一个备选融合算子,以及与每种备选融合算子分别对应的至少一种可选融合模式;
原始计算图生成模块,用于根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图;
目标计算图生成模块,用于通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。
第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的算子融合方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的算子融合方法。
本发明实施例的技术方案通过获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图;通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图的技术手段,综合利用精细的算子融合策略和调度方案,为算子融合优化提供了有效的解决方案。通过充分利用不同内存层次和硬件设备的特性,可以在综合考虑实际运行时硬件设备为各个算子所分配的缓存空间的前提下,以更小的拆分单元为单位进行算子的有效重组,可以针对不同内存特性的硬件环境,自适应的选择最优的算子融合方案,可以科学调度计算机的硬件资源,最大程度地减少在实际硬件环境中的数据移动和内存访问等运行时行为,从而显著提升深度神经网络的计算性能,最大程度的节约了算子在其所适配硬件环境的内存占用,提高了实际硬件环境中的运算速度。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种算子融合方法的流程图;
图2是根据本发明实施例二提供的另一种算子融合方法的流程图;
图3是本发明实施例所适用的生成融合计划表的过程示意图;
图4是本发明实施例所适用的一种采用动态规划算法在融合计划表中进行寻优遍历的示意图;
图5是本发明实施例三提供的又一种算子融合方法的流程图;
图6是本发明实施例所适用的一种运行时行为建模与算子拆分与重组的过程示意图;
图7是根据本发明实施例四提供的一种算子融合装置的结构示意图;
图8是实现本发明实施例的一种算子融合方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种算子融合方法的流程图,本实施例可适用于对各种类型与规模的深度神经网络模型和科学计算模型中包括的各项算子进行融合的情况,该方法可以由算子融合装置来执行,该算子融合装置可以采用硬件和/或软件的形式实现,该算子融合装置可配置于具有数据处理功能的电子设备中,与多个异构计算设备(例如,通用处理器、加速芯片或者计算集群等)配合使用。如图1所示,该方法包括:
S110、获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表。
其中,融合计划表中包括至少一个备选融合算子,以及与每种备选融合算子分别对应的至少一种可选融合模式。
具体的,计算图中包含通过有向边连接的多个算子。算子可以理解为用于实现设定计算逻辑的计算符,例如,加法算子、矩阵乘算子或者卷积算子等。计算图中的有向边用于描述各个算子的计算顺序。
在本实施例中,目标计算图是指需要进行算子融合处理的计算图。每个算子融合策略定义了一项算子融合规则,例如:加法算子可以和减法算子进行融合、数据转换类型的算子可以和数据计算类型的算子进行融合,或者设定维度的张量算子可以和相同维度的其他张量算子进行融合等算子融合规则。
算子之间的依赖关系,可以理解为哪一个算子的实施对哪一个算子的实施完成具有直接或者间接的依赖。在一个具体的例子中,如果在目标算子图中包括形如:A->B->C的有向依赖关系,说明算子B的实施需要算子A实施完成后得到的计算结果,算子C的实施需要算子B实施完成后得到的计算结果,进而,算子B直接依赖算子A,算子C直接依赖算子B,间接依赖算子A。
在本实施例中,在获取多种算子融合策略以及目标计算图中各算子之间的依赖关系之后,可以确定出该目标计算图全部的可选融合模式,在确定出全部的可选融合模式之后,可以基于每种可选融合模式中包括的全部算子(也即,备选融合算子),生成该融合计划表。
在一个具体的例子中,目标计算图中包括算子1、算子2、算子3和算子4,假设共包含有可选融合模式1:算子2和算子3,可选融合模式2:算子2、算子3和算子4,以及可选融合模式3:算子3和算子4。进而,可以获取各可选融合方式中包括的全部算子,即:算子2、算子3和算子4。相应的,可以将算子2、算子3和算子4作为备选融合算子,构建如表1所述的融合计划表。
表1
S120、根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图。
在本实施例中,所生成的融合计划表中列举出了各个备选融合算子在目标计算图中的全部可行的可选融合模式。通过使用该融合计划表,可以完整的遍历确定出针对该目标计算图的一项或者多项可选算子融合方案。续前例,针对如表1所示的融合计划表,可以共遍历得到三种针对该目标计算图的可选算子融合方案。也即,可选算子融合方案1:算子1、由算子2和算子3融合得到的融合算子以及算子4、可选算子融合方案1:算子1、由算子2和算子3融合得到的融合算子以及算子4,可选算子融合方案2:算子1、由算子2、算子3和算子4融合得到的融合算子,以及可选算子融合方案3:算子1、算子2、和由算子3和算子4融合得到的融合算子。
在获取全部可选算子融合方案之后,需要按照预设的选取策略,在全部可选算子融合方案中选择中一种在某一个或者某几个维度上最优的融合方案,作为与目标计算图匹配的算子融合方案,进而,可以基于最终确定出的算子融合方案,对目标计算图中相对应的各算子进行融合处理,以最终得到与该算子融合方案相适配的原始融合计算图。
可以理解的是,该原始融合计算图中同时包含了目标计算图中未参与融合的原始算子,以及由目标计算图中的两个或者两个以上的原始算子融合得到的新的融合算子。
可选地,可以采用融合算子最少或者融合代价最低等选取策略,在全部可选算子融合方案中确定出最终的算子融合方案,本实施例对此并不进行限制。
S130、通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。
本发明实施例提出了一种运行时建模机制,该机制考虑了内存约束和数据移动模式等因素,通过该机制能够对原始融合计算图中的至少一个融合算子进行拆分,则该被拆分算子被拆分成了多个拆分单元。由于算子与算子间也可能具有相似的计算和内存访问模式,因此通过相似的计算和内存访问模式等重组规则将多个拆分单元与原始融合计算图中的至少一个其他算子进行重组后,得到了新的融合计算图,即目标融合图。
可选的,对原始融合计算图进行运行时建模,可以理解为针对原始融合计算图中的各个算子(前述的原始算子或者融合算子)所涉及各项的操作数据,分配对应的L1缓存,以供直接访问L1缓存的计算单元可以直接读取相应的操作数据,执行匹配的算子计算逻辑。
在完成上述运行时建模后,可能会出现分配给一个融合算子的L1缓存,不足以容纳该融合算子的操作数据的情况。进而,在执行融合算子相关的计算时,无法直接利用L1缓存,会出现从L2缓存中分批次加载数据至L1缓存进行计算的情况,这会大大增加计算图的执行时间,降低执行效率。
为了应对上述问题,发明人创造性的提出,对运行时建模后所分配的L1缓存不足的融合算子,再次进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,以最大程度的减少了数据移动和内存访问等运行时行为。通过上述两次算子融合策略,可以得到性能最优的目标融合计算图。
本发明实施例的技术方案通过获取待融合处理的目标计算图,根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;根据融合计划表,确定与目标计算图匹配的算子融合方案,根据算子融合方案,生成与目标计算图对应的原始融合计算图;通过对原始融合计算图进行运行时建模,对至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。本发明实施例的技术方案通过精细的算子融合策略和调度方案,减少了数据移动和内存访问等运行时行为,提升了深度神经网络的计算性能,节约了算子的内存占用,提高了运算速度。
在上述各实施例的基础上,获取待融合处理的目标计算图,可以包括:
获取与待计算的深度神经网络模型或者科学计算模型对应的计算图,作为待融合处理的目标计算图;
相应的,在得到目标融合计算图之后,还包括:
将所述目标融合计算图编译为目标机器代码后,将所述目标机器代码部署至异构计算设备上运行。
在本可选实施方式中,进一步明确了算子融合方法的具体应用场景。也即,当需要多异构设备协同对某一个的深度神经网络模型或者科学计算模型执行模型训练或者模型推理操作时,可以首先在一个电子设备中,将该深度神经网络模型或者科学计算模型转换为计算图的形式,也即,生成目标计算图的过程。之后,可以通过本发明各实施例的技术方案将上述目标计算组转换得到目标融合计算图。
在得到目标融合计算图之后,可以首先将该目标融合计算图转换为多级中间表示文本,并将该将多级中间表示文本编译为虚拟机模块(VM Module)类型的目标机器代码。最后,将所述目标机器代码部署至异构计算设备上,由各个异构计算设备将该目标机器代码加载至本地的运行时虚拟机中运行。
实施例二
图2为本发明实施例二提供的另一种算子融合方法的流程图,本实施例以上述实施例为基础进行细化。在本实施例中,具体对构建得到融合计划表以及确定与目标计算图匹配的算子融合方案的实现方式进行细化。
相应的,如图2所示,所述方法具体可以包括:
S210、获取待融合处理的目标计算图,并使用目标计算图中的各算子,构建得到与目标计算图匹配的后支配树。
其中,在一个有向无环图中,对于一个节点n来说,从初始节点s出发到达n的所有路径都经历一个节点m,那么m就是n的支配点。而距离n最近的支配点被称作立即支配点。以r为树根,将所有立即支配点按照支配关系连接起来就形成了支配树。立即后支配点是从一个点n出发所有到终止节点的路径中通过的最近节点,形成的支配树是后支配树。
相应的,如果将目标计算图看成一个有向无环图之后,通过综合分析目标计算图中各个算子之间的有向边,可以生成与目标计算图匹配的后支配树。通过该后支配树,可以直接确定两两算子之间的依赖关系。其中,后支配树中的树节点对应目标计算图中的算子。
具体的,如果在后支配树中,节点A中分叉出来节点B和节点C,节点B分叉出节点D,则可以直接确定出节点D依赖于节点B,而节点B和节点C同时依赖于节点A。
S220、在目标计算图中依次获取一个当前算子,并根据多种算子融合策略,确定与当前算子匹配的全部待验证融合模式。
在本实施例的一个可选的实施方式中,可以按照数据在目标计算图的前向流动方向,依次在目标计算图获取到一个当前算子。在成功获取到该当前算子后,可以依据预先设定的多种算子融合策略,确定出与当前算子匹配的全部待验证融合模式。
在一个具体的例子中,该当前算子X0为一个加法算子,而预设的多种算子融合策略中包括:加法算子可以和减法或者其他加法算子融合。在确定与当前算子匹配的全部待验证融合模式的过程中,可以首先在目标计算图中获取该当前算子前后相邻的其他算子,如果该当前算子X9仅包括后一相邻算子X1,且该算子X1为加法或者减法算子,则可以确定与当前算子X0对应的一个待验证融合模式为算子X0和算子X1。进一步的,还可以继续获取该算子X1的后一相邻算子X2,如果该算子X2也为加法或者减法算子,则可以继续确定出与当前算子X0对应的另一个待验证融合模式为算子X0、算子X1以及算子X2,依次类推,可以确定出当前算子针对全部算子融合策略的全部待验证融合模式。
S230、在各待验证融合模式中依次获取当前待验证模式,并获取当前待验证模式中的多个待验证算子。
在针对当前算子确定出全部待验证融合模式之后,可以结合后支配树,验证这些待验证融合模式是否均为满足依赖关系的可选融合模式,并将不满足依赖关系的待验证融合模式进行滤除。
相应的,可以从当前算子的各待验证融合模式中依次获取当前待验证模式,并获取当前待验证模式中的多个待验证算子。
例如,当前算子X0对应的当前待验证模式中包括算子X0、算子X1以及算子X2,上述三个算子均作为待验证算子进行依赖关系的验证。
S240、在后支配树中,分别获取依赖于各待验证算子的依赖算子,并在确定全部依赖算子均为各待验证算子的子集时,将当前待验证模式确定为与当前算子对应的可选融合模式。
如前所述,在后支配树中,某些算子与算子间存在着固定的依赖关系。当在后支配树中的一个节点1分叉出另一个节点2时,说明节点2依赖于节点1。
相应的,在获取当前待验证模式中的多个待验证算子之后,通过查询该后支配树,可以确定出依赖于各待验证算子的依赖算子。当全部依赖算子均为各待验证算子的子集时,说明对上述每个待验证算子,均不会被除去各待验证算子之外的算子所依赖,因此,基于上述各待验证算子构成的当前待验证模式,是一种可行的融合方式(也即,可选融合模式)。反之,当出现不属于待验证算子的依赖算子时,说明上述的一个或者多个待验证算子,会被除去各待验证算子之外的算子所依赖,因此,基于上述各待验证算子构成的当前待验证模式,是一种不可行的融合方式,需要去除。
S250、判断是否完成对全部待验证融合模式的处理:若是,执行S260;否则,返回执行S230。
由于当前待验证模式是从各待验证融合模式中依次获取得到,因此在本实施例中需要重复执行S230-S240的操作,直至全部待验证融合模式都已被验证。
S260、判断是否筛选出至少一个可选融合模式,若是,则执行S270;否则,直接执行S280。
S270、将当前算子以及与当前算子对应的可选融合模式,加入至融合计划表中,执行S280。
S280、判断是否完成对目标计算图中全部算子的处理:若是,执行S290;否则,返回执行S220。
在上述循环结束后,可以完整构建得到与该目标计算图对应的融合计划表。
S290、计算与融合计划表中的每种可选融合模式分别对应的融合代价值。
在本实施例的一个可选的实施方式中,计算与融合计划表中的每种可选融合模式分别对应的融合代价值,可以包括:
将融合计划表中的每种可选融合模式分别输入至预先训练的代价模型中,获取与每种可选融合模式分别对应的融合代价值;
其中,所述融合代价值中包括内存占用代价值、执行时间代价值以及上下文切换代价值中的至少一项。
当然,可以理解的是,所述融合代价值中还可以包括各种类型的其他代价值,本实施例对此并不进行限制。
具体的,由于每种算子包括唯一的算子标识,用于描述该算子的计算逻辑,同时,每种算子还包括输入输出数据的数据尺度,例如,10*float32,或者[50,50]*int16等。在获取每种可选融合模式中,可以将该可选融合模式中包括的全部算子的算子标识以及输入输出数据尺度共同输入至该代价模型中,获取与每种可选融合模式分别对应的融合代价值。其中,在得到每种可选融合模式分别对应的融合代价值,可以将上述各融合代价值分别加入至融合计划表中。
具体的,在图3示出了本发明实施例所适用的一种生成融合计划表的过程示意图。具体的,如图3所述,用户通过手动输入手动融合模式或者从规则库加载自动融合模式的方式,首先输入多种算子融合策略。同时,系统可以针对输入的目标计算图,生成与之对应的后支配树。之后,通过综合使用多种算子融合策略以及该后支配树,可以生成多种可选融合模式,进而,可以通过代价模型评估每种可选融合模式的代价值,最终得到融合计划表。
S2100、根据各可选融合模式的融合代价值,采用动态规划算法在融合计划表中进行寻优遍历,确定与目标计算图匹配的算子融合方案。
在本实施例中,在获取每种可选融合模式的融合代价值之后,可以使用代价值最小这一目标函数,遍历全部可选融合模式,以得到与目标计算图匹配的算子融合方案。
在本实施例的一个可选的实施方式中,根据各可选融合模式的融合代价值,采用动态规划算法在融合计划表中进行寻优遍历,确定与目标计算图匹配的算子融合方案,可以包括:
在目标计算图中获取首个算子,并将首个算子作为初始节点加入至优先级队列中;以初始节点为起点,匹配融合计划表中的各可选融合模式,并将每次匹配的可选融合模式中的各算子添加至优先级队列后,根据各可选融合模式的融合代价值以及预设的内存限制条件在优先级队列中进行寻优遍历,直至完成对目标计算图中的全部算子的遍历,以得到算子融合方案。
需要说明的是,本发明实施例中所采用的动态规划策略针对的是按模式划分的算子组,但参与融合的某些算子可能不包含在任何模式中,针对该情况,在最初生成分组时只包含单个算子本身,即将首个算子作为初始节点,并使用优先队列来加速动态规划进程。选定初始节点后,从初始节点开始依次从融合计划表中匹配各个算子的可选融合模式,将匹配了可选融合模式后的算子依次添加至优先级队列。最终得到的算子融合方案在遵循内存限制的同时对资源的占用更少。
以图4为例,一开始,我们将S1算子作为初始节点放入优先级队列,并且dp[1] =cost(S1)。当匹配到某个模式时,该模式中包含的所有算子都会被添加到队列中。然后,根据模式的融合代价值确定遍历顺序,并重复上述过程,直到找到最优解或遍历完所有节点,并最终找到最优融合计划,也即算子融合方案。对于不满足内存限制的模式将会直接跳过,整个目标计算图的最终优化融合计划表示考虑整个子图后达到的最小融合代价值。
S2110、根据算子融合方案,生成与目标计算图对应的原始融合计算图。
S2120、通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。
本发明实施例的技术方案通过综合使用多种算子融合策略,可以尽可能多的遍历全部待验证融合模式,以避免对可能的最优融合方案的错失,同时,通过结合目标计算图的后支配树在全部待验证融合模式提取可行的可选融合模式,可以最大程度的避免对无效的待验证融合模式的错误引入,最后,通过采用动态规划算法在融合计划表中进行寻优遍历,可以高效、准确的识别出最优的算子融合方案。
实施例三
图5为本发明实施例三提供的又一种算子融合方法的流程图,本实施例以上述实施例为基础进行细化。在本实施例中,具体是将通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图的实现方式进行细化。
相应的,如图5所示,所述方法具体可以包括:
S510、获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表。
其中,融合计划表中包括至少一个备选融合算子,以及与每种备选融合算子分别对应的至少一种可选融合模式。
S520、根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图。
S530、在原始融合计算图的各算子中识别可拆分算子,并在各可拆分算子中识别可拆分融合算子。
在本实施例中,为了最大程度的保证算子的融合效果,不再是以常规的算子为最小融合单位进行算子融合,而是考虑对算子进行进一步的拆分,并使用拆分得到的拆分单元为最小融合单位,进行算子融合重组。
相应的,需要首先在原始融合计算图的各算子中识别可以拆分成两个或者两个以上拆分单元的可拆分算子。
其中,可以通过一个算子的具体计算逻辑,来确定该算子是否为可拆分算子。具体的,如果一个算子的计算逻辑通过下述代码表示:
for i in 0..9
load A[i], B[0] # B[0] 为输出元素
B[0] += A[i] # 对输出元素进行累加
store B[0]
可以得知,该算子的计算逻辑是一个单层循环形式,进而可以通过对该单层循环进行拆分的方式,便捷的将该算子拆分为两个拆分单元。
也即:
for i in 0..4
load A[i], B[0] # B[0] 为输出元素
B[0] += A[i] # 对输出元素进行累加
store B[0]
以及
for i in 5..9
load A[i], B[0] # B[0] 为输出元素
B[0] += A[i] # 对输出元素进行累加
store B[0]
相应的,可以通过识别一个算子是否为循环形式算子的方式,确定该算子是否为可拆分算子。也即,如果一个算子可以拆分为循环形式算子,则该算子为可拆分算子。当然还可以采取其他的识别方式,例如,计算模式识别等,验证算子是否为可拆分算子,本实施例对此并不进行限制。
同时,由于原始融合计算图的算子包含原始算子和融合算子。通过上述识别可拆分算子的过程,可以进一步在可拆分算子中确定出可拆分融合算子。
S540、通过对原始融合计算图进行运行时建模,将原始融合计算图中的各算子分配至建模得到的缓存空间中。
其中,对原始融合计算图的运行时建模主要指通过分析数据重用和访问模式,优化缓存空间的利用率,使数据移动最小化,数据局部性最大化。进而,在完成上述运行时建模后,可以建模得为原始融合计算图中的每个算子所分配的L1缓存。
S550、如果确定目标可拆分融合算子的数据尺度大于所分配的缓存空间,则将目标可拆分融合算子拆分为多个拆分单元。
在本实施例中,通过获取原始融合计算图中每个可拆分融合算子的数据尺度,可以识别出数据尺度大于所分配的缓存空间的目标可拆分融合算子。对于目标可拆分融合算子来说,虽然通过融合技术实现了算子优化,但是由于缓存分配的限制,该目标可拆分融合算子也无法达到预期的算子优化效果,基于此,可以进一步对该目标可拆分融合算子进行拆分。
其中,将目标可拆分融合算子拆分为多个拆分单元的方式可以为最小拆分粒度策略,或者最少拆分次数策略等,本实施例对此并不进行限制。
在本实施例的一个可选的实施方式中,将目标可拆分融合算子拆分为多个拆分单元,可以包括:
获取与目标可拆分融合算子对应的最小拆分粒度,并按照最小拆分粒度,将目标可拆分融合算子拆分为多个拆分单元。
通过对原始融合计算图进行运行时建模,在内存区中构建出了一个个缓存空间,将每个算子进行缓存空间的分配。比较可拆分融合算子的数据尺度与其相对应缓存空间的大小,当可拆分融合算子数据尺度超出为其分配的缓存空间的缓存容量时,需要将其拆分为多个拆分单元。
可以将最小拆分粒度理解为将目标可拆分算子不可再拆分的最小算子尺度。也就是说,将融合算子拆分得到多个拆分单元后,每个拆分单元的内存空间都已为最小,无法再次进行拆分,最小拆分粒度能够保证拆分单元在与其他算子重组过程中更顺利,提供了更多可能性。
S560、在原始融合计算图中识别与所述目标可拆分融合算子满足计算相似性条件和/或内存访问亲和性条件的至少一个其他可拆分算子。
其中,计算相似性条件可以理解为两个算子的计算特征相同,例如,均为张量运算或者均为标量运算等,均为布尔运算或者均为简单逻辑运算等。内存访问亲和性条件,是指为两个算子所分配的计算单元均能访问为两个算子所分配的缓存空间。
在本实施例中,如果能够在原始融合计算图中获取满足计算相似性条件以及内存访问亲和性条件中的任一项的其他可拆分算子,则考虑将该目标可拆分融合算子与上述可拆分算子进行二次融合,也即重组。
S570、根据各其他可拆分算子所分配的缓存空间的空闲存量,将多个拆分单元与各其他可拆分算子进行重组,得到目标融合计算图。
对该实施例的具体说明如下:如图6所示,中间的数据块B表示可拆分融合算子B的数据尺度超出了为其分配的缓存容量,将B进行拆分后得到了三个拆分单元B1、B2以及B3。而算子拆分后的重组环节需要考虑待重组算子间的计算相似性条件以及内存访问亲和性条件中的至少一项,算子间的计算相似性或内存访问亲和性重合度越高,二者更容易进行重组。经比对得到,与B1满足内核块亲和性条件的为A算子,与B2、B3满足内核块亲和性条件的为C算子。随即计算A算子与C算子所在缓存空间的剩余缓存容量,由于此时的拆分单元B1、B2与B3都是由最小拆分粒度拆分得到,因此,若剩余缓存容量可以容纳拆分单元,则算子重组成功,得到目标融合计算图。否则算子无法融合,同时也说明,算子A与算子C受剩余缓存空间限制,即使与其他拆分单元满足内核亲和性等条件也无法在之后的融合过程中参与融合。
本发明实施例的技术方案通过获取待融合处理的目标计算图,根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;根据融合计划表,确定与目标计算图匹配的算子融合方案,根据算子融合方案,生成与目标计算图对应的原始融合计算图;通过对原始融合计算图进行运行时建模,对至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。本发明实施例的技术方案通过精细的算子融合策略和调度方案,减少了数据移动和内存访问等运行时行为,提升了深度神经网络的计算性能,节约了算子的内存占用,提高了运算速度。
实施例四
图7为本发明实施例四提供的一种算子融合装置的结构示意图。如图7所示,该装置包括:
融合计划表构建模块710,用于获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;
其中,融合计划表中包括至少一个备选融合算子,以及与每种备选融合算子分别对应的至少一种可选融合模式;
原始计算图生成模块720,用于根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图;
目标计算图生成模块730,用于通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。
本发明实施例的技术方案通过获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图;通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图的技术手段,综合利用精细的算子融合策略和调度方案,为算子融合优化提供了有效的解决方案。最大程度地减少数据移动和内存访问等运行时行为,从而显著提升深度神经网络的计算性能,节约了算子的内存占用,提高了运算速度。
在上述各实施例的基础上,融合计划表构建模块710,具体可以包括:
后支配书构建单元,用于使用目标计算图中的各算子,构建得到与目标计算图匹配的后支配树;
融合模式确定单元,用于在目标计算图中依次获取一个当前算子,并根据多种算子融合策略,确定与当前算子匹配的全部待验证融合模式;
融合模式筛选单元,用于根据后支配树中各算子之间的依赖关系,在各待验证融合模式中筛选与当前算子对应的可选融合模式;
融合模式添加单元,用于如果筛选出至少一个可选融合模式,则将当前算子以及与当前算子对应的可选融合模式,加入至融合计划表中;
循环操作单元,用于返回执行在目标计算图中依次获取一个当前算子的操作,直至完成对目标计算图中全部算子的处理。
在上述各实施例的基础上,融合模式筛选单元,具体可以用于:
在各待验证融合模式中依次获取当前待验证模式,并获取当前待验证模式中的多个待验证算子;
在后支配树中,分别获取依赖于各待验证算子的依赖算子,并在确定全部依赖算子均为各待验证算子的子集时,将前待验证模式确定为与当前算子对应的可选融合模式;
返回执行在各待验证融合模式中依次获取当前待验证模式的操作,直至完全对全部待验证融合模式的处理。
在上述各实施例的基础上,原始计算图生成模块720,可以具体包括:
融合代价值计算单元,用于计算与融合计划表中的每种可选融合模式分别对应的融合代价值;
动态规划单元,用于根据各可选融合模式的融合代价值,采用动态规划算法在融合计划表中进行寻优遍历,确定与目标计算图匹配的算子融合方案。
在上述各实施例的基础上,融合代价值计算单元可以具体用于:
将融合计划表中的每种可选融合模式分别输入至预先训练的代价模型中,获取与每种可选融合模式分别对应的融合代价值;
其中,所述融合代价值中包括内存占用代价值、执行时间代价值以及上下文切换代价值中的至少一项。
在上述各实施例的基础上,动态规划单元,可以具体用于:
在目标计算图中获取首个算子,并将首个算子作为初始节点加入至优先级队列中;
以初始节点为起点,匹配融合计划表中的各可选融合模式,并将每次匹配的可选融合模式中的各算子添加至优先级队列后,根据各可选融合模式的融合代价值以及预设的内存限制条件在优先级队列中进行寻优遍历,直至完成对目标计算图中的全部算子的遍历,以得到算子融合方案。
在上述各实施例的基础上,目标计算图生成模块730,可以具体包括:
可拆分算子识别单元,用于在原始融合计算图的各算子中识别可拆分算子,并在各可拆分算子中识别可拆分融合算子;
运行时建模单元,用于通过对原始融合计算图进行运行时建模,将原始融合计算图中的各算子分配至建模得到的缓存空间中;
拆分单元,用于如果确定目标可拆分融合算子的数据尺度大于所分配的缓存空间,则将目标可拆分融合算子拆分为多个拆分单元;
其他可拆分算子识别单元,用于在原始融合计算图中识别与所述目标可拆分融合算子满足计算相似性条件和/或内存访问亲和性条件的至少一个其他可拆分算子;
算子重组单元,英语根据各其他可拆分算子所分配的缓存空间的空闲存量,将多个拆分单元与各其他可拆分算子进行重组,得到目标融合计算图。
在上述各实施例的基础上,拆分单元,可以具体用于:
获取与目标可拆分融合算子对应的最小拆分粒度,并按照最小拆分粒度,将目标可拆分融合算子拆分为多个拆分单元。
在上述各实施例的基础上,融合计划表构建模块710可以具体用于:
获取与待计算的深度神经网络模型或者科学计算模型对应的计算图,作为待融合处理的目标计算图;
相应的,所述装置还可以包括:代码生成部署模块,用于:
在得到目标融合计算图之后,将所述目标融合计算图编译为目标机器代码后,将所述目标机器代码部署至异构计算设备上运行。
本发明实施例所提供的一种算子融合装置可执行本发明任意实施例所提供的一种算子融合方法,具备执行方法相应的功能模块和有益效果。
实施例五
图8示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图8所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如一种算子融合方法。
也即:获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;
其中,融合计划表中包括至少一个备选融合算子,以及与每种备选融合算子分别对应的至少一种可选融合模式;
根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图;
通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图。
在一些实施例中,一种算子融合方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的一种算子融合方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行一种算子融合方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (11)
1.一种算子融合方法,其特征在于,包括:
获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;
其中,融合计划表中包括至少一个备选融合算子,以及与每种备选融合算子分别对应的至少一种可选融合模式;
根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图;
通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图;
其中,通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图,包括:
在原始融合计算图的各算子中识别可拆分算子,并在各可拆分算子中识别可拆分融合算子;
通过对原始融合计算图进行运行时建模,将原始融合计算图中的各算子分配至建模得到的缓存空间中;
如果确定目标可拆分融合算子的数据尺度大于所分配的缓存空间,则将目标可拆分融合算子拆分为多个拆分单元;
在原始融合计算图中识别与所述目标可拆分融合算子满足计算相似性条件和/或内存访问亲和性条件的至少一个其他可拆分算子;
根据各其他可拆分算子所分配的缓存空间的空闲存量,将多个拆分单元与各其他可拆分算子进行重组,得到目标融合计算图。
2.根据权利要求1所述的方法,其特征在于,根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表,包括:
使用目标计算图中的各算子,构建得到与目标计算图匹配的后支配树;
在目标计算图中依次获取一个当前算子,并根据多种算子融合策略,确定与当前算子匹配的全部待验证融合模式;
根据后支配树中各算子之间的依赖关系,在各待验证融合模式中筛选与当前算子对应的可选融合模式;
如果筛选出至少一个可选融合模式,则将当前算子以及与当前算子对应的可选融合模式,加入至融合计划表中;
返回执行在目标计算图中依次获取一个当前算子的操作,直至完成对目标计算图中全部算子的处理。
3.根据权利要求2所述的方法,其特征在于,根据后支配树中各算子之间的依赖关系,在各待验证融合模式中筛选与当前算子对应的可选融合模式,包括:
在各待验证融合模式中依次获取当前待验证模式,并获取当前待验证模式中的多个待验证算子;
在后支配树中,分别获取依赖于各待验证算子的依赖算子,并在确定全部依赖算子均为各待验证算子的子集时,将前待验证模式确定为与当前算子对应的可选融合模式;
返回执行在各待验证融合模式中依次获取当前待验证模式的操作,直至完全对全部待验证融合模式的处理。
4.根据权利要求1-3任一项所述的方法,其特征在于,根据融合计划表,确定与目标计算图匹配的算子融合方案,包括:
计算与融合计划表中的每种可选融合模式分别对应的融合代价值;
根据各可选融合模式的融合代价值,采用动态规划算法在融合计划表中进行寻优遍历,确定与目标计算图匹配的算子融合方案。
5.根据权利要求4所述的方法,其特征在于,计算与融合计划表中的每种可选融合模式分别对应的融合代价值,包括:
将融合计划表中的每种可选融合模式分别输入至预先训练的代价模型中,获取与每种可选融合模式分别对应的融合代价值;
其中,所述融合代价值中包括内存占用代价值、执行时间代价值以及上下文切换代价值中的至少一项。
6.根据权利要求4所述的方法,其特征在于,根据各可选融合模式的融合代价值,采用动态规划算法在融合计划表中进行寻优遍历,确定与目标计算图匹配的算子融合方案,包括:
在目标计算图中获取首个算子,并将首个算子作为初始节点加入至优先级队列中;
以初始节点为起点,匹配融合计划表中的各可选融合模式,并将每次匹配的可选融合模式中的各算子添加至优先级队列后,根据各可选融合模式的融合代价值以及预设的内存限制条件在优先级队列中进行寻优遍历,直至完成对目标计算图中的全部算子的遍历,以得到算子融合方案。
7.根据权利要求1所述的方法,其特征在于,将目标可拆分融合算子拆分为多个拆分单元,包括:
获取与目标可拆分融合算子对应的最小拆分粒度,并按照最小拆分粒度,将目标可拆分融合算子拆分为多个拆分单元。
8.根据权利要求1所述的方法,其特征在于,获取待融合处理的目标计算图,包括:
获取与待计算的深度神经网络模型或者科学计算模型对应的计算图,作为待融合处理的目标计算图;
在得到目标融合计算图之后,还包括:
将所述目标融合计算图编译为目标机器代码后,将所述目标机器代码部署至异构计算设备上运行。
9.一种算子融合装置,其特征在于,包括:
融合计划表构建模块,用于获取待融合处理的目标计算图,并根据多种算子融合策略以及目标计算图中各算子之间的依赖关系,构建得到融合计划表;
其中,融合计划表中包括至少一个备选融合算子,以及与每种备选融合算子分别对应的至少一种可选融合模式;
原始计算图生成模块,用于根据融合计划表,确定与目标计算图匹配的算子融合方案,并根据算子融合方案,生成与目标计算图对应的原始融合计算图;
目标计算图生成模块,用于通过对原始融合计算图进行运行时建模,对原始融合计算图中的至少一个融合算子进行拆分处理,并将拆分得到的多个拆分单元与原始融合计算图中的至少一个其他算子进行重组,得到目标融合计算图;
目标计算图生成模块,具体包括:
可拆分算子识别单元,用于在原始融合计算图的各算子中识别可拆分算子,并在各可拆分算子中识别可拆分融合算子;
运行时建模单元,用于通过对原始融合计算图进行运行时建模,将原始融合计算图中的各算子分配至建模得到的缓存空间中;
拆分单元,用于如果确定目标可拆分融合算子的数据尺度大于所分配的缓存空间,则将目标可拆分融合算子拆分为多个拆分单元;
其他可拆分算子识别单元,用于在原始融合计算图中识别与所述目标可拆分融合算子满足计算相似性条件和/或内存访问亲和性条件的至少一个其他可拆分算子;
算子重组单元,英语根据各其他可拆分算子所分配的缓存空间的空闲存量,将多个拆分单元与各其他可拆分算子进行重组,得到目标融合计算图。
10.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的一种算子融合方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-8中任一项所述的一种算子融合方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311559655.8A CN117271101B (zh) | 2023-11-22 | 2023-11-22 | 一种算子融合方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311559655.8A CN117271101B (zh) | 2023-11-22 | 2023-11-22 | 一种算子融合方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117271101A true CN117271101A (zh) | 2023-12-22 |
CN117271101B CN117271101B (zh) | 2024-03-01 |
Family
ID=89220013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311559655.8A Active CN117271101B (zh) | 2023-11-22 | 2023-11-22 | 一种算子融合方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117271101B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117576125A (zh) * | 2024-01-16 | 2024-02-20 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
CN117971251A (zh) * | 2024-04-01 | 2024-05-03 | 深圳市卓驭科技有限公司 | 软件部署方法、设备、存储介质及产品 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150154052A1 (en) * | 2013-12-03 | 2015-06-04 | International Business Machines Corporation | Lazy initialization of operator graph in a stream computing application |
US20160381129A1 (en) * | 2015-06-26 | 2016-12-29 | International Business Machines Corporation | Runtime fusion of operators |
US10025827B1 (en) * | 2017-01-17 | 2018-07-17 | International Business Machines Corporation | Operator fusion management in a stream computing environment |
CN114692823A (zh) * | 2020-12-31 | 2022-07-01 | 安徽寒武纪信息科技有限公司 | 一种算子融合的方法、装置、存储介质及电子设备 |
CN115756478A (zh) * | 2022-11-02 | 2023-03-07 | 中科寒武纪科技股份有限公司 | 计算图的算子自动融合方法及相关产品 |
CN116089895A (zh) * | 2021-10-30 | 2023-05-09 | 华为技术有限公司 | 一种算子融合方法及装置 |
CN116166405A (zh) * | 2023-04-21 | 2023-05-26 | 北京燧原智能科技有限公司 | 异构场景下的神经网络任务调度策略确定方法及装置 |
CN116227599A (zh) * | 2023-02-15 | 2023-06-06 | 网络通信与安全紫金山实验室 | 一种推理模型的优化方法、装置、电子设备及存储介质 |
CN116909573A (zh) * | 2023-08-04 | 2023-10-20 | 北京百度网讯科技有限公司 | 计算图的节点融合方法、装置、电子设备及存储介质 |
CN116933841A (zh) * | 2022-04-02 | 2023-10-24 | 北京灵汐科技有限公司 | 算子融合方法及装置、电子设备、计算机可读介质 |
-
2023
- 2023-11-22 CN CN202311559655.8A patent/CN117271101B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150154052A1 (en) * | 2013-12-03 | 2015-06-04 | International Business Machines Corporation | Lazy initialization of operator graph in a stream computing application |
US20160381129A1 (en) * | 2015-06-26 | 2016-12-29 | International Business Machines Corporation | Runtime fusion of operators |
US10025827B1 (en) * | 2017-01-17 | 2018-07-17 | International Business Machines Corporation | Operator fusion management in a stream computing environment |
CN114692823A (zh) * | 2020-12-31 | 2022-07-01 | 安徽寒武纪信息科技有限公司 | 一种算子融合的方法、装置、存储介质及电子设备 |
CN116089895A (zh) * | 2021-10-30 | 2023-05-09 | 华为技术有限公司 | 一种算子融合方法及装置 |
CN116933841A (zh) * | 2022-04-02 | 2023-10-24 | 北京灵汐科技有限公司 | 算子融合方法及装置、电子设备、计算机可读介质 |
CN115756478A (zh) * | 2022-11-02 | 2023-03-07 | 中科寒武纪科技股份有限公司 | 计算图的算子自动融合方法及相关产品 |
CN116227599A (zh) * | 2023-02-15 | 2023-06-06 | 网络通信与安全紫金山实验室 | 一种推理模型的优化方法、装置、电子设备及存储介质 |
CN116166405A (zh) * | 2023-04-21 | 2023-05-26 | 北京燧原智能科技有限公司 | 异构场景下的神经网络任务调度策略确定方法及装置 |
CN116909573A (zh) * | 2023-08-04 | 2023-10-20 | 北京百度网讯科技有限公司 | 计算图的节点融合方法、装置、电子设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117576125A (zh) * | 2024-01-16 | 2024-02-20 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
CN117576125B (zh) * | 2024-01-16 | 2024-04-16 | 芯瞳半导体技术(山东)有限公司 | 一种神经网络计算图的分割方法、装置、设备及存储介质 |
CN117971251A (zh) * | 2024-04-01 | 2024-05-03 | 深圳市卓驭科技有限公司 | 软件部署方法、设备、存储介质及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN117271101B (zh) | 2024-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117271101B (zh) | 一种算子融合方法、装置、电子设备及存储介质 | |
US20220300812A1 (en) | Workflow optimization | |
Sulaiman et al. | An evolutionary computing-based efficient hybrid task scheduling approach for heterogeneous computing environment | |
CN114721833B (zh) | 一种基于平台业务类型的智能云端协调方法和装置 | |
CN111966484A (zh) | 一种基于深度强化学习的集群资源管理和任务调度方法及系统 | |
CN114915630B (zh) | 基于物联网设备的任务分配方法、网络训练方法及装置 | |
CN111738434A (zh) | 在异构处理单元上执行深度神经网络的方法 | |
Xiao et al. | A cooperative coevolution hyper-heuristic framework for workflow scheduling problem | |
CN114237869B (zh) | 基于强化学习的Ray双层调度方法、装置和电子设备 | |
CN109409746A (zh) | 一种生产调度方法及装置 | |
Peng et al. | Genetic Algorithm‐Based Task Scheduling in Cloud Computing Using MapReduce Framework | |
Amini Motlagh et al. | A new reliability‐based task scheduling algorithm in cloud computing | |
CN117687774A (zh) | 用于算力调度的任务模型训练方法及算力调度方法和系统 | |
CN117436627A (zh) | 任务分配方法、装置、终端设备及介质 | |
CN111459464B (zh) | 节点融合方法、代码生成方法、装置 | |
Wang et al. | Multi-granularity decomposition for componentized multimedia applications based on graph clustering | |
Eiche et al. | Task placement for dynamic and partial reconfigurable architecture | |
CN115509724A (zh) | 基于任务分层与回填最早完成时间的任务调度方法及系统 | |
CN115509715A (zh) | 一种分布式任务调度方法、装置和电子设备 | |
CN106874215B (zh) | 一种基于Spark算子的序列化存储优化方法 | |
CN112598112B (zh) | 一种基于图神经网络的资源调度方法 | |
Górski et al. | Adaptive GP-based Algorithm for Hardware/Software Co-design of Distributed Embedded Systems. | |
CN114327925A (zh) | 一种电力数据实时计算调度优化方法及系统 | |
CN114615144B (zh) | 网络优化方法及系统 | |
US20240311196A1 (en) | Method and device for generating data flow policy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Country or region after: China Address after: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Applicant after: Shanghai Suiyuan Technology Co.,Ltd. Address before: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Applicant before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd. Country or region before: China |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |