CN115860081B - 一种芯粒算法调度方法、系统、电子设备及存储介质 - Google Patents
一种芯粒算法调度方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115860081B CN115860081B CN202310179898.2A CN202310179898A CN115860081B CN 115860081 B CN115860081 B CN 115860081B CN 202310179898 A CN202310179898 A CN 202310179898A CN 115860081 B CN115860081 B CN 115860081B
- Authority
- CN
- China
- Prior art keywords
- operator
- parallel group
- overhead
- neural network
- strategy
- 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.)
- Active
Links
Images
Classifications
-
- 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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种芯粒算法调度方法,包括:获取待调度的神经网络算法计算图;获取芯粒的拓扑结构,并基于拓扑结构生成芯粒资源列表;对神经网络算法计算图进行图优化;对计算图划分并行组;对计算图进行活跃性分析;生成计算图中的每个算子的策略和对应的开销;生成整数线性规划的优化变量;设定整数线性规划的求解目标;设定整数线性规划的约束条件;求解整数线性规划问题;将求解整数线性规划问题得到的解作为计算图在芯粒上的调度方法。与现有技术相比,本发明基于整数线性规划技术,将算法调度空间搜索问题转换成整数线性规划求解问题,通过设置多种求解约束缩小策略探索空间,能够在很短的时间内得到神经网络算法在芯粒上最优的调度方案。
Description
技术领域
本发明涉及芯粒调度技术领域,尤其是涉及一种基于整数线性规划的芯粒算法调度方法、系统、电子设备及存储介质。
背景技术
深度学习已成为解决复杂的现实世界问题的关键,深度神经网络的使用迅速增加,研究人员和实践者将这些模型应用到广泛的应用中,包括图像识别、目标检测、语言翻译、音频合成和自动驾驶等多个领域。随着深度神经网络得到更广泛的开发和使用,为了提高效率深度神经网络的规模也在不断增长,如今最先进的深度神经网络有数十到数百层,需要数十亿次操作和数百兆字节来存储激活数据和权重。而这种网络越来越大、越来越深的趋势,随之而来的调度方案搜索空间的大小也呈指数级增长。
近年来,随着芯粒技术的发展,神经网络加速器正在从芯片升级至芯粒。芯粒将小芯片单元集成封装为满足特定功能的单元芯片,相比于原来的普通芯片具有更高的灵活度和性能以及更低的成本,对神经网络加速器这种专用领域架构的发展十分有利。
现有技术中对人工智能应用进行计算资源调度时,大多根据人工智能应用整体上对计算资源的要求来选取最优的计算资源,并将人工智能应用部署到最优的计算资源上。因此,对于芯粒这种集成度高的更复杂的结构,为了充分利用芯粒资源,并适应超大规模的深度神经网络推理训练,需要对深度神经网络算法在芯粒上进行高性能调度。
如今常见的确定算法调度方案的技术包括基于贪心算法的暴力求解、基于强化学习的空间探索等,但这些算法在超大的调度方案空间上难以获得很好的效果。同时,现有的技术方案通常是针对通用图形处理器集群的,并不适用于芯粒硬件上。
因此,有必要提出一种针对芯粒的算法调度策略。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种芯粒算法调度方法、系统、电子设备及存储介质。
本发明的目的可以通过以下技术方案来实现:
根据本发明的第一方面,提供一种芯粒算法调度方法,包括以下步骤:
获取待调度的神经网络算法计算图,所述神经网络算法计算图中的每个节点表示一个算子;
获取芯粒的拓扑结构,并基于所述拓扑结构生成芯粒资源列表,确定调度单位和总资源量,所述芯粒的拓扑结构包括:芯粒中小芯片单元的阵列尺寸、小芯片单元的嵌入式神经网络处理器阵列尺寸以及芯粒的内存;
对神经网络算法计算图进行图优化;
对神经网络算法计算图划分并行组;
对神经网络算法计算图进行活跃性分析;
生成所述神经网络算法计算图中的每个算子的策略和对应的开销;
生成整数线性规划的优化变量;
设定整数线性规划的求解目标;
设定整数线性规划的约束条件;
求解整数线性规划问题,将求解整数线性规划问题得到的解作为神经网络算法计算图在芯粒上的调度方法。
进一步地,基于所述拓扑结构生成芯粒资源列表具体为:
若小芯片单元的阵列尺寸为1,则以小芯片单元中的嵌入式神经网络处理器为调度单位生成芯粒资源列表,每个算子可使用2的指次方个嵌入式神经网络处理器;
若小芯片单元的阵列尺寸大于1,则以小芯片单元为调度单位生成芯粒资源列表,每个算子可使用2的指次方个小芯片单元。
进一步地,对神经网络算法计算图进行图优化具体为:
对神经网络算法计算图进行删除冗余算子操作、常量传播操作、去除公共子表达式操作和算子融合操作。
进一步地,对神经网络算法计算图划分并行组具体为:
确定神经网络算法计算图中每个算子的深度,将深度相同的算子划分至同一个并行组中,得到多个并行组;
分别计算每个并行组的总计算量,并判断各个并行组的总计算量是否超过其理论最大计算量,若一个并行组的总计算量超过其理论最大计算量,则将该并行组进行拆分。
进一步地,当芯粒中有多个小芯片单元时,并行组的理论最大计算量为该并行组内算子最小计算量的小芯片单元总数倍,当芯粒中只有一个小芯片单元时,其理论最大计算量为该并行组内算子最小计算量的嵌入式神经网络处理器总数倍。
进一步地,对并行组进行拆分具体为:
将并行组中的算子按照计算量大小进行排序,生成一个初始化为空的待定并行组;
将并行组中计算量最小的算子移入所述待定并行组,判断是否满足继续执行条件,若不满足继续执行条件,则匹配当前所满足的状态条件并执行所述状态条件对应的操作,若满足继续执行条件,则将并行组中计算量最大的算子移入所述待定并行组,判断是否满足继续执行条件,若不满足继续执行条件,则匹配当前所满足的状态条件并执行所述状态条件对应的操作,若满足继续执行条件,则重复此步骤;
所述继续执行条件为:并行组的总计算量超过其理论最大计算量,待定并行组的总计算量不超过其理论最大计算量;所述状态条件包括终止条件、第一再分组条件和第二再分组条件,所述终止条件为:并行组的总计算量不超过其理论最大计算量,待定并行组的总计算量不超过其理论最大计算量,所述终止条件对应的操作为:将当前的并行组和待定并行组作为拆分结果;所述第一再分组条件为:并行组的总计算量超过其理论最大计算量,待定并行组的总计算量超过其理论最大计算量,所述第一再分组条件对应的操作为:将当前的并行组和待定并行组作为新的待拆分的并行组并对其进行拆分;所述第二再分组条件为:并行组的总计算量不超过其理论最大计算量,待定并行组的总计算量超过其理论最大计算量,所述第二再分组条件对应的操作为:保留当前的并行组,将当前的待定并行组作为新的待拆分的并行组并对其进行拆分。
进一步地,对神经网络算法计算图进行活跃性分析具体为:
初始化生成多个活跃性列表,每个活跃性列表对应一个算子;
对算子之间的依赖关系进行分析,并根据所述依赖关系得到每个算子的活跃性列表,一个算子的活跃性列表中存放该算子的活跃算子,其中,算子i的活跃算子为神经网络算法计算图中执行到算子i时仍需保存输出结果的算子。
进一步地,对神经网络算法计算图进行活跃性分析具体为:
初始化生成多个活跃性列表,每个活跃性列表对应一个算子;
获取并行组,并将并行组按其算子深度进行排序,初始化一个全局集合;
选择深度最大的并行组,确定该并行组中所有算子的活跃性列表,然后删除该并行组,重复此步骤,直至得到所有算子的活跃性列表;
其中,确定一个并行组中所有算子的活跃性列表具体为:
自并行组中获取一个算子,对算子之间的依赖关系进行分析,将该算子及其依赖算子放入全局集合,将全局集合放入该算子的活跃性列表,在全局集合中删除该算子;重复此步骤,直至得到当前并行组中所有算子的活跃性列表。
进一步地,生成所述神经网络算法计算图中的每个算子的策略和对应的开销具体为:
确定各个算子的类型,基于各个算子的类型生成每个算子的策略,得到策略集合,所述策略用于描述一个算子可使用的芯粒资源大小以及该算子在芯粒资源上的映射方式;
针对每条策略,计算该策略对应的开销,包括算子计算开销、算子内通信开销、算子间通信开销和内存开销。
进一步地,生成整数线性规划的优化变量具体为:
生成整数线性规划的策略状态变量集合,所述策略状态变量集合中的策略状态变量与策略集合中的策略一一对应,策略状态变量的值用于标识其对应的策略是否被选中;
生成整数线性规划的边变量集合,所述边变量集合中的边变量与神经网络算法计算图中边一一对应,边变量的值用于标识其对应的边的两个算子之间的策略状态转移方式,所述边变量的取值是基于策略状态变量集合确定的;
生成整数线性规划的并行组开销变量集合,所述并行组开销变量集合中的并行组开销变量与并行组一一对应,确定并行组中每个算子的算子内开销并找出算子内开销最大值,所述算子内开销最大值是基于策略状态变量集合确定的,并行组开销变量的值为其对应的并行组的算子内开销最大值,所述算子内开销包括算子计算开销和算子内通信开销。
进一步地,设定整数线性规划的求解目标具体为:
将组间开销和组内开销最小作为整数线性规划的求解目标,所述组间开销是基于边变量集合确定的神经网络算法计算图中所有边的开销,所述组内开销是基于并行组开销变量集合确定的各个并行组的算子内开销最大值。
进一步地,整数线性规划的约束条件包括以下约束条件:
并行组的算子内开销最大值大于等于该并行组内每个算子的算子内开销;
单个并行组内每个算子使用的芯粒资源总和不超过总资源量;
策略状态变量集合中,同一个算子的多条策略中有且只有1个策略被选中;
每个并行组中算子对应的活跃性列表中的算子并集所用内存数不超过芯粒的内存;
边变量集合中,同一个边的多种策略转移方式中有且只有1个策略转移方式被选中;
边变量集合中,若1个策略转移方式被选中,则该策略转移方式对应的两个策略在策略状态变量的值为被选中。
进一步地,求解整数线性规划问题具体为:
运行整数线性规划求解器,计算出在满足所有约束条件的情况下,设定的求解目标的最优解,所述最优解中包括求解目标的取值以及该求解目标值下的策略状态变量集合、边变量集合和并行组开销变量集合。
进一步地,将得到的解作为神经网络算法计算图在芯粒上的调度方法具体为:
根据策略状态变量集合分别确定每个算子的策略,得到神经网络算法计算图在芯粒上的调度方法。
根据本发明的第二方面,提供一种芯粒算法调度系统,包括:
计算图获取单元,用于获取待调度的神经网络算法计算图,所述神经网络算法计算图中的每个节点表示一个算子;
芯粒结构获取单元,用于获取芯粒的拓扑结构,并基于所述拓扑结构生成芯粒资源列表,确定调度单位和总资源量,所述芯粒的拓扑结构包括:芯粒中小芯片单元的阵列尺寸、小芯片单元的嵌入式神经网络处理器阵列尺寸以及芯粒的内存;
图优化单元,用于对神经网络算法计算图进行图优化;
并行组划分单元,用于对神经网络算法计算图划分并行组;
活跃性分析单元,用于对神经网络算法计算图进行活跃性分析;
策略生成及开销计算单元,用于生成所述神经网络算法计算图中的每个算子的策略和对应的开销;
变量生成单元,用于生成整数线性规划的优化变量;
目标设定单元,用于设定整数线性规划的求解目标;
约束设定单元,用于设定整数线性规划的约束条件;
求解单元,用于求解整数线性规划问题,用于将求解整数线性规划问题得到的解作为神经网络算法计算图在芯粒上的调度方法。
根据本发明的第三方面,提供一种电子设备,包括存储器和一个或多个处理器,所述存储器中存储有计算机程序,所述一个或多个处理器用于执行所述存储器上所存储的计算机程序来实现如本发明第一方面所述的芯粒算法调度方法。
根据本发明的第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如本发明第一方面所述的芯粒算法调度方法。
与现有技术相比,本发明具有以下有益效果:
基于整数线性规划技术,将算法调度空间搜索问题转换成整数线性规划求解问题,通过设置多种求解约束缩小策略探索空间,能够在很短的时间内得到算法在芯粒上最优的调度方案。
附图说明
图1为芯粒算法调度方法的流程图;
图2为芯粒的拓扑结构图;
图3为神经网络算法计算图示意图;
图4为经过图优化后的神经网络算法计算图示意图;
图5为芯粒算法调度系统的结构图。
实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例,本发明的保护范围不限于下述的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本发明的描述中,需要理解的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本说明书提供了如实施例或流程示意图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境),或者调整没有时序限制的步骤的执行顺序。
实施例
实施例1:
根据本发明的第一方面,提供一种芯粒算法调度方法,如图1所示,包括以下步骤:
(1)获取待调度的神经网络算法计算图,神经网络算法计算图中的每个节点表示一个算子;获取芯粒的拓扑结构,并基于拓扑结构生成芯粒资源列表,确定调度单位和总资源量,芯粒的拓扑结构包括:芯粒中小芯片单元的阵列尺寸、小芯片单元的嵌入式神经网络处理器阵列尺寸以及芯粒的内存;
(1.1)获取待调度的神经网络算法计算图
神经网络算法计算图G是一个有向无环图,G由节点集合V和有向边集合E组成,G中每个节点v代表一个算子,每条有向边e代表节点间的数据依赖关系。
以图3所示的一个简单的神经网络算法计算图为例,该神经网络算法计算图G中的节点集合V={v1, v2, …, v17},每个节点与该深度神经网络中的算子一一对应,G中的有向边集合E={e1, e2, …, e21},每条有向边与该单元算子间的每个数据依赖关系一一对应,如有向边e1=(v1, v2)表示节点v1的输出结果是节点v2的输入数据。
(1.2)基于拓扑结构生成芯粒资源列表具体为:
①确定芯粒拓扑结构,芯粒拓扑结构包括芯粒中小芯片单元阵列尺寸M1*N1、小芯片单元内的NPU(Neural-network Processing Unit,嵌入式神经网络处理器)阵列尺寸M2*N2、芯粒内存大小M_n。
以图2所示的芯粒拓扑结构为例,其中的NOP和NOC分别为小芯片单元间路由部件和小芯片单元内路由部件,芯粒拓扑结构中,小芯片单元阵列尺寸为4*4,即芯粒包括4*4个小芯片单元,小芯片单元内的NPU阵列尺寸为4*4,即每个小芯片单元包括4*4个NPU,芯粒的内存大小为16GB。
②若小芯片单元的阵列尺寸为M1*N1=1,即此芯粒中只包含一个小芯片单元时,每个算子只能在小芯片单元内的嵌入式神经网络处理器上进行调度,则以小芯片单元中的嵌入式神经网络处理器为调度单位生成芯粒资源列表,每个算子可使用2的指次方个嵌入式神经网络处理器,最大不超过小芯片单元内嵌入式神经网络处理器总数,因此,每个算子可使用的芯粒资源列表SL={(1,1),(1,2),(1,4)…(1, M2*N2)}。
若小芯片单元的阵列尺寸大于1,即此芯粒由M1*N1个同构的小芯片单元构成,则以小芯片单元为调度单位生成芯粒资源列表,每个算子可使用2的指次方个小芯片单元,最大不超过芯粒中小芯片单元总数,因此,每个算子可使用的芯粒资源列表SL={(1, M2*N2),(2,M2*N2),(4, M2*N2)…(M1*N1, M2*N2)}。
由于考虑到将每个算子所有可能占用的芯粒资源数列入求解空间的话会导致求解空间过大,可能无法在可接受时间内完成整数线性规划求解过程甚至无法求解,因此需要对每个算子所有可能占用的芯粒资源数进行限制,考虑到芯粒在设计时为了便于寻址及数据对齐一般设计为2的指数次方乘以2的指数次方个,所以每个算子可使用2的指数次方个小芯片单元或嵌入式神经网络处理器;而在M1*N1>1时,考虑到芯粒内小芯片单元间的通信开销远大于嵌入式神经网络处理器间的通信开销,所以调度单位为小芯片单元,而不将嵌入式神经网络处理器作为调度单位。
以图2中所示的芯粒拓扑结构为例,该芯粒中包含16个小芯片单元,每个小芯片单元内有16个嵌入式神经网络处理器。此时小芯片单元数>1,因此每个算子可使用的芯粒资源列表SL={(1, 16),(2, 16),(4, 16) ,(8, 16), (16, 16)},即每个算子可以分配2的指数次方个小芯片单元。
在其他实施方式中,一个芯粒包含1个小芯片单元,小芯片单元内有8×8个嵌入式神经网络处理器,此时小芯片单元数=1,因此每个算子可使用的芯粒资源列表SL={(1, 1),(1, 2),(1, 4) …(1, 64)},即每个算子可以分配2的指数次方个NPU。
得到芯粒的总资源数A_n,如果M1*N1=1,则A_n= M2*N2,否则A_n= M1*N1。
具体地,对于图2所示的芯粒拓扑结构,芯粒内小芯片单元数为16,所以A_n=16。
(2)对神经网络算法计算图进行图优化;
对神经网络算法计算图进行图优化具体为:对神经网络算法计算图进行删除冗余算子操作、常量传播操作、去除公共子表达式操作和算子融合操作等优化操作,在不改变神经网络算法计算结果的前提下减少计算图中节点数量。统计优化后的计算图中节点数量N_n,边的数量E_n。
具体地,删除冗余算子从神经网络算法计算图的入口算子开始遍历,如果一个算子没有调用其他算子,而且也没有被其他算子调用,那么就可以将其视为神经网络算法计算图中的一个孤立算子,把它从神经网络算法计算图中删除。
常量传播是提前对常量表达式进行预求值,并且将常量数据保存到符号表中,不用分配静态内存保存该变量。
去除公共子表达式用计算图中先前出现的具有相同输入和属性的表达式替换当前表达式。比如图3所示的计算图G中,算子v6和算子v7具有相同的算子类型、参数以及参数顺序,所以可以用同一个算子v6来替换。
算子融合是根据已有的融合规则,将多个算子融合为一个算子。如图3所示的计算图G中节点v8、v11、v14构成的Conv-BN-Relu满足算子融合的一个规则,可以将三个节点可以融合为一个新的节点,记为CBR,并将该规则应用到整个计算图中,将其融合为图4的形式。
统计优化后的神经网络算法计算图,如图4所示,节点数量N_n=10,边的数量E_n=13。图优化可以减少计算图中节点和边的数量,进而减少生成的策略数量。这既可以缩短整数线性规划的求解时间,也可以提高神经网络算法的推理性能。比如,图3中的神经网络算法计算图经过图优化后的结果为图4,减少了7个节点和8条边。
(3)对神经网络算法计算图划分并行组;
对神经网络算法计算图划分并行组具体为:
确定神经网络算法计算图中每个算子的深度,将深度相同的算子划分至同一个并行组中,得到多个并行组;分别计算每个并行组的总计算量,并判断各个并行组的总计算量是否超过其理论最大计算量,若一个并行组的总计算量超过其理论最大计算量,则将该并行组进行拆分。
划分后的每个并行组中的算子具有相同深度且没有数据依赖,可以完全并行执行。如图4所示的优化后的神经网络算法计算图,根据每个算子的深度可以将其划分为5个并行组p1、p2、p3、p4、p5,并行组个数P_n为5,其中,并行组p2包含深度为2的3个算子[v2, v3,v4]。
由于考虑到芯粒中每个小芯片单元内的NPU有一块共享内存,为了方便内存管理、减小数据传输拥塞导致的延迟,当芯粒中有多个小芯片单元时,使得每个小芯片单元同一时间只运行一个完整算子或一个算子的部分结果,而不会同时运行多个算子。同理,当芯粒中只有一个小芯片单元时,使得每个NPU同一时间只运行一个完整算子或一个算子的部分结果,而不会同时运行多个算子。因此,当并行组内算子较多并存在计算量差异很大的算子时,会导致计算量很小的算子与计算量很大的算子分配的芯粒资源量相近,此时计算量很小的算子会很快运行结束,而计算量很大的算子需要运行很久,导致部分芯粒资源处于等待状态,所以并行组内的总计算量应小于其理论最大计算量,当芯粒中有多个小芯片单元时,其理论最大计算量为该并行组内算子最小计算量的小芯片单元总数倍,当芯粒中只有一个小芯片单元时,其理论最大计算量为该并行组内算子最小计算量的NPU总数倍。
一个并行组的总计算量即该并行组中所有算子的计算量的和,并行组p2的总计算量即3个算子[v2, v3, v4]的计算量的和。
芯粒拓扑结构中,若M1*N1=1,并行组中所有算子计算量的最小值为com_min,理论最大计算量为该最小计算量的M2*N2倍,判断并行组的总计算量是否超过该理论最大计算量,若M1*N1>1,并行组中所有算子计算量的最小值为com_min理论最大计算量为该最小计算量的M1*N1倍,判断并行组的总计算量是否超过该理论最大计算量。
对并行组进行拆分具体为:
①将并行组中的算子按照计算量大小进行排序,生成一个初始化为空的待定并行组;
将并行组中计算量最小的算子移入待定并行组,判断是否满足继续执行条件,若不满足继续执行条件,则匹配当前所满足的状态条件并执行状态条件对应的操作,若满足继续执行条件,则将并行组中计算量最大的算子移入待定并行组,判断是否满足继续执行条件,若不满足继续执行条件,则匹配当前所满足的状态条件并执行状态条件对应的操作,若满足继续执行条件,则重复此步骤;
其中,继续执行条件为并行组的总计算量超过其理论最大计算量,待定并行组的总计算量不超过其理论最大计算量;状态条件包括终止条件、第一再分组条件和第二再分组条件:终止条件为:并行组的总计算量不超过其理论最大计算量,待定并行组的总计算量不超过其理论最大计算量,终止条件对应的操作为:将当前的并行组和待定并行组作为拆分结果;第一再分组条件为:并行组的总计算量超过其理论最大计算量,待定并行组的总计算量超过其理论最大计算量,第一再分组条件对应的操作为:将当前的并行组和待定并行组作为新的待拆分的并行组并对其进行拆分;第二再分组条件为:并行组的总计算量不超过其理论最大计算量,待定并行组的总计算量超过其理论最大计算量,第二再分组条件对应的操作为:保留当前的并行组,将当前的待定并行组作为新的待拆分的并行组并对其进行拆分。
具体地,对于图4所示图优化后的计算图G,根据每个算子的深度可以将其划分为5个并行组,即P_n=5,其中并行组p2包含深度为2的3个算子[v2, v3, v4]。然后依次分析每个并行组内算子计算量之和是否超过最小计算量的16倍。图4中的5个并行组内的算子计算量都相同,因此无需进行拆分。如果出现并行组总计算量超过最小计算量的16倍的场景,如某个并行组包含5个算子,其计算量从小到大依次是[1, 4, 7, 8, 10],则会将其拆分成[1,4, 10]和[7, 8]两个并行组。
以并行组A为例,将其中的算子从小到大排序,然后依次从左端和右端选择算子放入待定并行组B,算子移动后,进行一次判断,如果并行组A和待定并行组B的总计算量不超过各自理论最大计算量,则划分到此结束;如果并行组A的总计算量超过A的理论最大计算量,待定并行组B的总计算量不超过B的理论最大计算量,则继续执行,继续从并行组A中选择算子移入待定并行组B;如果并行组A的总计算量超过A的理论最大计算量,待定并行组B的总计算量超过B的理论最大计算量,则需要生成两个初始化为空的待定并行组C和待定并行组D,将待定并行组B作为需要进行划分的并行组,从并行组A中选择算子移入待定并行组C,从待定并行组B中选择算子移入待定并行组D,然后判断并行组A和待定并行组C满足的条件并执行对应操作,判断待定并行组B和待定并行组D满足的条件并执行对应操作;如果并行组A的总计算量不超过A的理论最大计算量,待定并行组B的总计算量超过B的理论最大计算量,则需要生成一个初始化为空的待定并行组C,将待定并行组B作为需要进行划分的并行组,从待定并行组B中选择算子移入待定并行组C,判断待定并行组B和待定并行组C满足的条件并执行对应操作。
最终,经过多次划分,得到的所有并行组都是总计算量不超过各自理论最大计算量的并行组。
本发明提出的方法中会对神经网络算法计算图划分并行组,这解决了计算量较小、无法充分利用芯粒资源的情况。同时在每个并行组内设置计算量上限,总计算量超过其理论最大计算量的并行组会被划分为多个并行组,并将计算量较大和计算量较小的算子放在同一并行组内,平衡了每个并行组内的算子计算量差异,避免出现计算量小的算子无法充分利用芯粒资源,计算量大的算子分配的芯粒资源不够的情况。
(4)对神经网络算法计算图进行活跃性分析;
对神经网络算法计算图进行活跃性分析具体为:
初始化生成多个活跃性列表,每个活跃性列表对应一个算子;对算子之间的依赖关系进行分析,并根据依赖关系得到每个算子的活跃性列表,一个算子的活跃性列表中存放该算子的活跃算子,其中,算子i的活跃算子为神经网络算法计算图中执行到算子i时仍需保存输出结果的算子。
如对于包括N个节点的神经网络算法计算图,生成包含N个元素的活跃性集合,活跃性集合中的元素为活跃性列表。
对每个算子进行分析,确定一个算子的输出会被哪些算子用到,然后完成每个算子的活跃性列表。对于图4所示图优化后的计算图G,其中,算子v17的计算依赖于算子v8、v9、v10的输出,因此在计算算子v17时,芯粒需要能够同时保存v8、v9、v10、v17的输出,其活跃性列表l i=[ v8, v9, v10, v17]。
本申请对计算图进行了活跃性分析,并根据活跃性分析结果增加整数线性规划的内存约束条件,这使得芯粒上同一时间需要保存的数据量不超过芯粒内存大小,保障了生成的算法调度方法是实际可行的。
(5)生成神经网络算法计算图中的每个算子的策略和对应的开销;
生成神经网络算法计算图中的每个算子的策略和对应的开销具体为:
(5.1)确定各个算子的类型,基于各个算子的类型生成每个算子的策略,得到策略集合,策略用于描述一个算子可使用的芯粒资源大小以及该算子在芯粒资源上的映射方式;
每条策略描述了该算子可使用的芯粒资源大小以及算子在芯粒资源上的映射方式。如果一个算子有n种芯粒资源上映射方式,可使用的芯粒资源列表SL有m种选择,则该算子的策略数为n*m。遍历完所有算子得到策略集合S,其中s(i,j)表示第i个算子的第j条策略,并保存该策略对应的芯粒资源大小a(i,j)。
对于N个维度的算子,将其映射到二维芯粒上,算子到芯粒资源上的映射方式,如将i维度平铺到芯粒的0维,j维度平铺到芯粒的1维,共N*N种划分方式。若M1*N1>1,每个算子可使用的芯粒资源列表SL有{(1, M2*N2),(2, M2*N2),(4, M2*N2)…(M1*N1, M2*N2)}共种选择方式;若M1*N1=1,每个算子可使用的芯粒资源列表SL有{(1,1),(1,2),(1,4)…(1, M2*N2)} 共/>种选择方式;
具体地,首先确定图4所示计算图G中每个算子在芯粒资源上的映射方式,以v2所示的Dot算子为例,该算子的数学公式可以表示为,其中共包含4个维度,依次将其映射到二维芯粒上,共4*4=16种划分方式。每个算子可使用的芯粒资源列表SL有{(1, 16),(2, 16),(4, 16) ,(8, 16), (16, 16)} 5种选择,因此该算子共有16*5=80条策略。比如策略s(2,1)表示算子v2的第1条策略,其中包含了算子可使用的芯粒资源数a(2,1)=(1, 16),即可以使用1个小芯片单元。
(5.2)针对每条策略,计算该策略对应的开销,包括算子计算开销、算子内通信开销、算子间通信开销和内存开销。
具体地,算子计算开销d(i,j)与算子计算量、芯粒上嵌入式神经网络处理器数量、嵌入式神经网络处理器脉冲阵列大小有关,以策略s(2,1)为例,其对应的算子v2的计算量为268435456,使用16个嵌入式神经网络处理器,嵌入式神经网络处理器脉冲阵列大小为32*32,则其算子计算开销d(2,1)= 2097152/16/(32*32)+2(32-1)= 16446。算子内通信开销c(i,j)需要判断当前策略下输出张量是否需要从其他嵌入式神经网络处理器上获取数据并加总,需要的话c(i,j)的值为每个嵌入式神经网络处理器上的算子数据量和需要进行传输的嵌入式神经网络处理器数量的乘积。以策略s(2,1)为例,该策略中输出张量不需要进行获取数据并加总的操作,因此c(2,1)=0。算子间通信开销r(i,j)是输入张量当前在芯粒上的布局与策略需要的布局间进行数据传输的开销,因此r(i,j)是一个一维数组,数组长度是输入算子的策略数。内存开销m(i,j)是当前策略下输出张量所需的芯粒内存大小,以策略s(2,1)为例,其内存开销m(2,1)就是v2的输出张量大小2097152。
(6)生成整数线性规划的优化变量;
生成整数线性规划的优化变量具体为:
(6.1)生成整数线性规划的策略状态变量集合State,策略状态变量集合中的策略状态变量与策略集合中的策略一一对应,策略状态变量的值用于标识其对应的策略是否被选中;
State中每个策略状态变量statei代表第i个算子的策略状态,State中的策略状态变量是一个一维数组,数组中的每个元素对应该算子相应的策略,比如state2[2]表示第2个算子的第2条策略s(2,2),statei中每个元素的取值为0或1,表示这条策略是否被选中。
具体地,以图4所示计算图G中的节点v2为例,v2包含80条策略,因此state2是一个长度为80的一位数组,state2[i]与策略s(2,i)一一对应。
(6.2)生成整数线性规划的边变量集合Edge,边变量集合中的边变量与神经网络算法计算图中边一一对应,边变量的值用于标识其对应的边的两个算子之间的策略状态转移方式,边变量的取值是基于策略状态变量集合确定的;
Edge中每个变量edgei代表第i条边,其含义是不同算子间策略状态转移方式,比如edge1[state2[2]_state3[2]],它表示计算图中的一条边,所涉及的两个节点是算子v2和算子v3,起点是第2个算子的第2条策略,终点是第3个算子的第2条策略。edgei中每个元素的取值为0或1,表示这条边中该元素对应的状态转移是否被选中,该值由策略状态变量取值确定,只有这条边起点和终点的策略状态变量都为1时,这条边取值才为1。
具体地,以图4所示计算图G中的边e1=(v1, v2)为例,v1包含45条策略,v2包含80条策略,因此edge1是一个长度为45*80=3600的一维数组,其中每个元素表示从v1的某条策略传递到v2的某条策略,比如edge1[state1[2]_state2[2]],它表示从v1的第2条策略传递到v2的第2条策略。
(6.3)生成整数线性规划的并行组开销变量集合Tcon,并行组开销变量集合中的并行组开销变量与并行组一一对应,确定并行组中每个算子的算子内开销并找出算子内开销最大值,算子内开销最大值是基于策略状态变量集合确定的,并行组开销变量的值为其对应的并行组的算子内开销最大值,算子内开销包括算子计算开销和算子内通信开销。
Tcon中每个变量tconi表示计算图中第i个并行组的组内开销,其取值为该并行组内每个算子的算子内开销最大值,算子内开销包括算子计算开销d(i,j)和算子内通信开销c(i,j)。tconi的取值由该并行组内所有算子的策略状态变量取值确定,tconi的值为并行组内策略状态变量为1的策略对应的d(i,j)+c(i,j)的最大值。
具体地,图4所示计算图G中包含5个并行组,因此并行组开销变量集合Tcon的长度为5,每个变量tconi表示计算图中第i个并行组的组内开销。因为此时无法确定并行组内每个算子使用的策略,无法计算出每个算子的算子内开销,因此将tconi设置为一个从0开始递增的连续整形变量,在步骤(8.1)中通过增加约束的方式实现tconi的取值为该并行组内每个算子的算子内开销最大值。
(7)设定整数线性规划的求解目标;
设定整数线性规划的求解目标具体为:
将组间开销和组内开销最小作为整数线性规划的求解目标,组间开销是基于边变量集合确定的神经网络算法计算图中所有边的开销,组内开销是基于并行组开销变量集合确定的各个并行组的算子内开销最大值。
整数线性规划的求解过程就是寻找最优的算法调度方法的过程,求解目标是最小化算法调度开销。算法调度开销分两个部分:并行组内开销和并行组间开销。并行组内开销是该并行组中每个算子的算子内开销最大值,并行组间开销就是计算图中所有边的开销。因此,整数线性规划的求解目标为探索statei的取值,使得tconi的和加上edgei与每个元素对应边开销的乘积之和最小。
(8)设定整数线性规划的约束条件;
整数线性规划的约束条件包括以下约束条件:
(8.1)并行组的算子内开销最大值大于等于该并行组内每个算子的算子内开销;
即tconi的取值要大于等于第i个并行组内每个算子的算子内开销,得到约束条件为:
(8.2)单个并行组内每个算子使用的芯粒资源总和不超过总资源量,得到约束条件为:
(8.3)策略状态变量集合中,同一个算子的多条策略中有且只有1个策略被选中;
即求解时每个statei内只能有1个元素等于1,其他均为0,表示该算子选择了哪一条策略,不选择其他所有策略,得到约束条件为:
(8.4)每个并行组中算子对应的活跃性列表中的算子并集所用内存数不超过芯粒的内存,得到约束条件为:
(8.5)边变量集合中,同一个边的多种策略转移方式中有且只有1个策略转移方式被选中;
即每个edgei内只能有1个元素等于1,其他均为0,表示这条边只在两个确定的策略间转换,得到约束条件为:
(8.6)边变量集合中,若1个策略转移方式被选中,则该策略转移方式对应的两个策略在策略状态变量的值为被选中;
即求解时edgei[stater[a]_stagec[b]]=1,要求stater[a]=1,stagec[b]=1,得到约束条件为:
(9)求解整数线性规划问题,将求解整数线性规划问题得到的解作为神经网络算法计算图在芯粒上的调度方法。
(9.1)运行整数线性规划求解器,计算出在满足步骤(8)所述约束条件的情况下,步骤(7)设定的整数线性规划求解目标的最优解。最优解中包括求解目标最小值的取值,以及该求解目标最小值下对应的每个优化变量集合Stage、Edge、Tcon中的取值。
具体地,在运行整数线性规划求解器前,优化变量只确定了取值范围,但具体取值未定。在运行整数线性规划求解器后,每个优化变量都是确定的值,比如每个statei的一维数组中只有1个元素取值为1,其余全为0。
(9.2)根据整数线性规划求解结果,得到神经网络算法计算图在芯粒上的调度方法。求解结果中优化变量集合Stage里每个元素的取值确定了该算子实际选取的策略,其中描述了每个算子的大小、类型、切分方式、所在并行组信息。依次确定每个算子实际选取的策略,构成了神经网络算法计算图在芯粒上的调度方法。
具体地,识别每个statei中取值为1的元素对应的策略s(i,j),这就是节点vi最终选择的策略。比如对图4所示计算图G运行整数线性规划求解器,结果state2[3]=1,则表示节点v2选择第3条策略,即其可使用的芯粒资源数a(2,3)=(4, 16),算子到芯粒资源上的映射方式为将i维度平铺到芯粒的0维,j维度平铺到芯粒的1维。依次得到每个算子最终选择的策略,构成了图4所示计算图G在芯粒上的调度方法。
本申请基于整数线性规划技术,将算法调度空间搜索问题转换成整数线性规划求解问题,通过设置多种求解约束缩小策略探索空间,能够在很短的时间内得到算法在芯粒上最优的调度方案。
本发明综和考虑了算法的并行组划分、算子划分策略、算子分配芯粒资源数量3个维度的调度策略搜索空间,并在计算每条策略对应的时间开销时考虑了算子内计算开销、算子内通信开销、算子间通信开销3个维度,使得生成的芯粒算法调度方法能够充分利用芯粒资源,计算出的算法开销更为精准。
根据本发明的第二方面,提供一种芯粒算法调度系统,如图5所示,包括:
计算图获取单元,用于获取待调度的神经网络算法计算图,神经网络算法计算图中的每个节点表示一个算子;
芯粒结构获取单元,用于获取芯粒的拓扑结构,并基于拓扑结构生成芯粒资源列表,确定调度单位和总资源量,芯粒的拓扑结构包括:芯粒中小芯片单元的阵列尺寸、小芯片单元的嵌入式神经网络处理器阵列尺寸以及芯粒的内存;
图优化单元,用于对神经网络算法计算图进行图优化;
并行组划分单元,用于对神经网络算法计算图划分并行组;
活跃性分析单元,用于对神经网络算法计算图进行活跃性分析;
策略生成及开销计算单元,用于生成神经网络算法计算图中的每个算子的策略和对应的开销;
变量生成单元,用于生成整数线性规划的优化变量;
目标设定单元,用于设定整数线性规划的求解目标;
约束设定单元,用于设定整数线性规划的约束条件;
求解单元,用于求解整数线性规划问题,用于将求解整数线性规划问题得到的解作为神经网络算法计算图在芯粒上的调度方法。
根据本发明的第三方面,提供一种电子设备,包括存储器和一个或多个处理器(例如中央处理器(Central Processing Unit,CPU)),存储器中存储有计算机程序,一个或多个处理器用于执行存储器上所存储的计算机程序来实现如上述的芯粒算法调度方法。
根据本发明的第四方面,一种计算机可读存储介质,其上存储有计算机程序,计算机程序被执行时实现上述的芯粒算法调度方法。
上述存储介质可以包括诸如非挥发性(non-volatile)存储器或者非瞬态(non-transitory)存储器等计算机可读存储介质。存储介质可以包括ROM、RAM、磁盘或光盘等。
实施例2:
本实施例中,根据划分的并行组对神经网络算法计算图进行活跃性分析,具体为:
初始化生成多个活跃性列表,每个活跃性列表对应一个算子;
获取并行组,并将并行组按其算子深度进行排序,初始化一个全局集合;
选择深度最大的并行组,确定该并行组中所有算子的活跃性列表,然后删除该并行组,重复此步骤,直至得到所有算子的活跃性列表;
其中,确定一个并行组中所有算子的活跃性列表具体为:
自并行组中获取一个算子,对算子之间的依赖关系进行分析,将该算子及其依赖算子放入全局集合,将全局集合放入该算子的活跃性列表,在全局集合中删除该算子;重复此步骤,直至得到当前并行组中所有算子的活跃性列表。
具体地,对图4所示图优化后的计算图G进行活跃性分析,首先创建一个全局集合GL,然后倒序遍历计算图并行组P,拿到并行组p5中的算子v17,将v17和其依赖的算子加入GL中,此时v17的活跃性列表l 17=GL=[v8, v9, v10, v17],然后将v17从GL中删除,继续遍历下一个并行组p4,获取并行组p4中的算子v8、v9、v10,然后依次计算v8、v9、v10的活跃性列表。以v8为例,其依赖的算子是v5,则将v8和v5加入GL中,此时v8的活跃性列表l8=GL=[v5, v8, v9,v10],然后将v8从GL中删除。以此类推,完成对整个计算图的活跃性分析。
实施例3:
本实施例中,对整数线性规划的求解目标和约束进行了调整,求解目标除了考虑并行组内开销和并行组间开销,还可以增加如并行组精细划分方式、算子在芯粒上的具体放置位置等考虑因素,并为并行组内开销、并行组间开销和各类考虑因素分别设置了权重,本领域人员可以根据需要自行设定;约束除了上述的6条约束外,还可以增加算子在芯粒上具体放置位置的约束等,本领域人员可以根据需要自行设定。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (12)
1.一种芯粒算法调度方法,其特征在于,包括以下步骤:
获取待调度的神经网络算法计算图,所述神经网络算法计算图中的每个节点表示一个算子;
获取芯粒的拓扑结构,并基于所述拓扑结构生成芯粒资源列表,确定调度单位和总资源量,所述芯粒的拓扑结构包括:芯粒中小芯片单元的阵列尺寸、小芯片单元的嵌入式神经网络处理器阵列尺寸以及芯粒的内存;
对神经网络算法计算图进行图优化;
对神经网络算法计算图划分并行组;
对神经网络算法计算图进行活跃性分析;
生成所述神经网络算法计算图中的每个算子的策略和对应的开销;
生成整数线性规划的优化变量;
设定整数线性规划的求解目标;
设定整数线性规划的约束条件;
求解整数线性规划问题,将求解整数线性规划问题得到的解作为神经网络算法计算图在芯粒上的调度方法;
基于所述拓扑结构生成芯粒资源列表具体为:
其中,若小芯片单元的阵列尺寸为1,则以小芯片单元中的嵌入式神经网络处理器为调度单位生成芯粒资源列表,每个算子可使用2的指数次方个嵌入式神经网络处理器;
若小芯片单元的阵列尺寸大于1,则以小芯片单元为调度单位生成芯粒资源列表,每个算子可使用2的指数次方个小芯片单元;
其中,生成所述神经网络算法计算图中的每个算子的策略和对应的开销具体为:
确定各个算子的类型,基于各个算子的类型生成每个算子的策略,得到策略集合,所述策略用于描述一个算子可使用的芯粒资源大小以及该算子在芯粒资源上的映射方式;
针对每条策略,计算该策略对应的开销,包括算子计算开销、算子内通信开销、算子间通信开销和内存开销;
其中,生成整数线性规划的优化变量具体为:
生成整数线性规划的策略状态变量集合,所述策略状态变量集合中的策略状态变量与策略集合中的策略一一对应,策略状态变量的值用于标识其对应的策略是否被选中;
生成整数线性规划的边变量集合,所述边变量集合中的边变量与神经网络算法计算图中边一一对应,边变量的值用于标识其对应的边的两个算子之间的策略状态转移方式,所述边变量的取值是基于策略状态变量集合确定的;
生成整数线性规划的并行组开销变量集合,所述并行组开销变量集合中的并行组开销变量与并行组一一对应,确定并行组中每个算子的算子内开销并找出算子内开销最大值,所述算子内开销最大值是基于策略状态变量集合确定的,并行组开销变量的值为其对应的并行组的算子内开销最大值,所述算子内开销包括算子计算开销和算子内通信开销;
其中,设定整数线性规划的求解目标具体为:
将组间开销和组内开销最小作为整数线性规划的求解目标,所述组间开销是基于边变量集合确定的神经网络算法计算图中所有边的开销,所述组内开销是基于并行组开销变量集合确定的各个并行组的算子内开销最大值;
其中,整数线性规划的约束条件包括以下约束条件:
并行组的算子内开销最大值大于等于该并行组内每个算子的算子内开销;
单个并行组内每个算子使用的芯粒资源总和不超过总资源量;
策略状态变量集合中,同一个算子的多条策略中有且只有1个策略被选中;
每个并行组中算子对应的活跃性列表中的算子并集所用内存数不超过芯粒的内存;
边变量集合中,同一个边的多种策略转移方式中有且只有1个策略转移方式被选中;
边变量集合中,若1个策略转移方式被选中,则该策略转移方式对应的两个策略在策略状态变量的值为被选中。
2.根据权利要求1所述的一种芯粒算法调度方法,其特征在于,对神经网络算法计算图进行图优化具体为:
对神经网络算法计算图进行删除冗余算子操作、常量传播操作、去除公共子表达式操作和算子融合操作。
3.根据权利要求1所述的一种芯粒算法调度方法,其特征在于,对神经网络算法计算图划分并行组具体为:
确定神经网络算法计算图中每个算子的深度,将深度相同的算子划分至同一个并行组中,得到多个并行组;
分别计算每个并行组的总计算量,并判断各个并行组的总计算量是否超过其理论最大计算量,若一个并行组的总计算量超过其理论最大计算量,则将该并行组进行拆分。
4.根据权利要求3所述的一种芯粒算法调度方法,其特征在于,当芯粒中有多个小芯片单元时,并行组的理论最大计算量为该并行组内算子最小计算量的小芯片单元总数倍,当芯粒中只有一个小芯片单元时,其理论最大计算量为该并行组内算子最小计算量的嵌入式神经网络处理器总数倍。
5.根据权利要求3所述的一种芯粒算法调度方法,其特征在于,对并行组进行拆分具体为:
将并行组中的算子按照计算量大小进行排序,生成一个初始化为空的待定并行组;
将并行组中计算量最小的算子移入所述待定并行组,判断是否满足继续执行条件,若不满足继续执行条件,则匹配当前所满足的状态条件并执行所述状态条件对应的操作,若满足继续执行条件,则将并行组中计算量最大的算子移入所述待定并行组,判断是否满足继续执行条件,若不满足继续执行条件,则匹配当前所满足的状态条件并执行所述状态条件对应的操作,若满足继续执行条件,则重复此步骤;
所述继续执行条件为:并行组的总计算量超过其理论最大计算量,待定并行组的总计算量不超过其理论最大计算量;所述状态条件包括终止条件、第一再分组条件和第二再分组条件,所述终止条件为:并行组的总计算量不超过其理论最大计算量,待定并行组的总计算量不超过其理论最大计算量,所述终止条件对应的操作为:将当前的并行组和待定并行组作为拆分结果;所述第一再分组条件为:并行组的总计算量超过其理论最大计算量,待定并行组的总计算量超过其理论最大计算量,所述第一再分组条件对应的操作为:将当前的并行组和待定并行组作为新的待拆分的并行组并对其进行拆分;所述第二再分组条件为:并行组的总计算量不超过其理论最大计算量,待定并行组的总计算量超过其理论最大计算量,所述第二再分组条件对应的操作为:保留当前的并行组,将当前的待定并行组作为新的待拆分的并行组并对其进行拆分。
6.根据权利要求1所述的一种芯粒算法调度方法,其特征在于,对神经网络算法计算图进行活跃性分析具体为:
初始化生成多个活跃性列表,每个活跃性列表对应一个算子;
对算子之间的依赖关系进行分析,并根据所述依赖关系得到每个算子的活跃性列表,一个算子的活跃性列表中存放该算子的活跃算子,其中,算子i的活跃算子为神经网络算法计算图中执行到算子i时仍需保存输出结果的算子。
7.根据权利要求3所述的一种芯粒算法调度方法,其特征在于,对神经网络算法计算图进行活跃性分析具体为:
初始化生成多个活跃性列表,每个活跃性列表对应一个算子;
获取并行组,并将并行组按其算子深度进行排序,初始化一个全局集合;
选择深度最大的并行组,确定该并行组中所有算子的活跃性列表,然后删除该并行组,重复此步骤,直至得到所有算子的活跃性列表;
其中,确定一个并行组中所有算子的活跃性列表具体为:
自并行组中获取一个算子,对算子之间的依赖关系进行分析,将该算子及其依赖算子放入全局集合,将全局集合放入该算子的活跃性列表,在全局集合中删除该算子;重复此步骤,直至得到当前并行组中所有算子的活跃性列表。
8.根据权利要求1所述的一种芯粒算法调度方法,其特征在于,求解整数线性规划问题具体为:
运行整数线性规划求解器,计算出在满足所有约束条件的情况下,设定的求解目标的最优解,所述最优解中包括求解目标的取值以及该求解目标值下的策略状态变量集合、边变量集合和并行组开销变量集合。
9.根据权利要求8所述的一种芯粒算法调度方法,其特征在于,将得到的解作为神经网络算法计算图在芯粒上的调度方法具体为:
根据策略状态变量集合分别确定每个算子的策略,得到神经网络算法计算图在芯粒上的调度方法。
10.一种芯粒算法调度系统,其特征在于,包括:
计算图获取单元,用于获取待调度的神经网络算法计算图,所述神经网络算法计算图中的每个节点表示一个算子;
芯粒结构获取单元,用于获取芯粒的拓扑结构,并基于所述拓扑结构生成芯粒资源列表,确定调度单位和总资源量,所述芯粒的拓扑结构包括:芯粒中小芯片单元的阵列尺寸、小芯片单元的嵌入式神经网络处理器阵列尺寸以及芯粒的内存;
图优化单元,用于对神经网络算法计算图进行图优化;
并行组划分单元,用于对神经网络算法计算图划分并行组;
活跃性分析单元,用于对神经网络算法计算图进行活跃性分析;
策略生成及开销计算单元,用于生成所述神经网络算法计算图中的每个算子的策略和对应的开销;
变量生成单元,用于生成整数线性规划的优化变量;
目标设定单元,用于设定整数线性规划的求解目标;
约束设定单元,用于设定整数线性规划的约束条件;
求解单元,用于求解整数线性规划问题,将求解整数线性规划问题得到的解作为神经网络算法计算图在芯粒上的调度方法;
基于所述拓扑结构生成芯粒资源列表具体为:
其中,若小芯片单元的阵列尺寸为1,则以小芯片单元中的嵌入式神经网络处理器为调度单位生成芯粒资源列表,每个算子可使用2的指数次方个嵌入式神经网络处理器;
若小芯片单元的阵列尺寸大于1,则以小芯片单元为调度单位生成芯粒资源列表,每个算子可使用2的指数次方个小芯片单元;
其中,生成所述神经网络算法计算图中的每个算子的策略和对应的开销具体为:
确定各个算子的类型,基于各个算子的类型生成每个算子的策略,得到策略集合,所述策略用于描述一个算子可使用的芯粒资源大小以及该算子在芯粒资源上的映射方式;
针对每条策略,计算该策略对应的开销,包括算子计算开销、算子内通信开销、算子间通信开销和内存开销;
其中,生成整数线性规划的优化变量具体为:
生成整数线性规划的策略状态变量集合,所述策略状态变量集合中的策略状态变量与策略集合中的策略一一对应,策略状态变量的值用于标识其对应的策略是否被选中;
生成整数线性规划的边变量集合,所述边变量集合中的边变量与神经网络算法计算图中边一一对应,边变量的值用于标识其对应的边的两个算子之间的策略状态转移方式,所述边变量的取值是基于策略状态变量集合确定的;
生成整数线性规划的并行组开销变量集合,所述并行组开销变量集合中的并行组开销变量与并行组一一对应,确定并行组中每个算子的算子内开销并找出算子内开销最大值,所述算子内开销最大值是基于策略状态变量集合确定的,并行组开销变量的值为其对应的并行组的算子内开销最大值,所述算子内开销包括算子计算开销和算子内通信开销;
其中,设定整数线性规划的求解目标具体为:
将组间开销和组内开销最小作为整数线性规划的求解目标,所述组间开销是基于边变量集合确定的神经网络算法计算图中所有边的开销,所述组内开销是基于并行组开销变量集合确定的各个并行组的算子内开销最大值;
其中,整数线性规划的约束条件包括以下约束条件:
并行组的算子内开销最大值大于等于该并行组内每个算子的算子内开销;
单个并行组内每个算子使用的芯粒资源总和不超过总资源量;
策略状态变量集合中,同一个算子的多条策略中有且只有1个策略被选中;
每个并行组中算子对应的活跃性列表中的算子并集所用内存数不超过芯粒的内存;
边变量集合中,同一个边的多种策略转移方式中有且只有1个策略转移方式被选中;
边变量集合中,若1个策略转移方式被选中,则该策略转移方式对应的两个策略在策略状态变量的值为被选中。
11.一种电子设备,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有计算机程序,所述一个或多个处理器用于执行所述存储器上所存储的计算机程序来实现如权利要求1-9中任一项所述的芯粒算法调度方法。
12.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被执行时实现如权利要求1-9中任一项所述的芯粒算法调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310179898.2A CN115860081B (zh) | 2023-03-01 | 2023-03-01 | 一种芯粒算法调度方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310179898.2A CN115860081B (zh) | 2023-03-01 | 2023-03-01 | 一种芯粒算法调度方法、系统、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115860081A CN115860081A (zh) | 2023-03-28 |
CN115860081B true CN115860081B (zh) | 2023-05-26 |
Family
ID=85659358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310179898.2A Active CN115860081B (zh) | 2023-03-01 | 2023-03-01 | 一种芯粒算法调度方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115860081B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116880659A (zh) * | 2023-06-30 | 2023-10-13 | 海光信息技术股份有限公司 | 相位调整方法、反馈获取方法、芯粒互联接口及电子设备 |
CN116560005B (zh) * | 2023-07-12 | 2023-09-08 | 中诚华隆计算机技术有限公司 | 一种基于光学互联的芯粒实现方法和系统 |
CN117155792B (zh) * | 2023-10-30 | 2024-01-12 | 中诚华隆计算机技术有限公司 | 一种芯粒间通信动态带宽调整方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970934A (zh) * | 2014-03-28 | 2014-08-06 | 清华大学 | 一种集成网络器件的多电压片上网络芯片的布图规划方法 |
CN115421897A (zh) * | 2022-11-07 | 2022-12-02 | 之江实验室 | 一种面向芯粒的深度神经网络流水线并行调度方法及装置 |
CN115658274A (zh) * | 2022-11-14 | 2023-01-31 | 之江实验室 | 芯粒中神经网络推理的模块化调度方法、装置和计算设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020120915A1 (en) * | 2000-10-13 | 2002-08-29 | Khan Shoab A. | Combined scheduling and mapping of digital signal processing algorithms on a VLIW processor |
US8346845B2 (en) * | 2010-04-14 | 2013-01-01 | International Business Machines Corporation | Distributed solutions for large-scale resource assignment tasks |
CN111274016B (zh) * | 2020-01-20 | 2022-09-09 | 中国人民解放军国防科技大学 | 基于模块融合的动态部分可重构系统应用划分与调度方法 |
WO2022216879A2 (en) * | 2021-04-06 | 2022-10-13 | Google Llc | Full-stack hardware accelerator search |
CN113569519B (zh) * | 2021-06-21 | 2024-08-16 | 重庆大学 | 一种面向粗粒度可重构阵列上的路由增强调度方法及装置 |
CN115115052A (zh) * | 2022-08-11 | 2022-09-27 | 杭州电子科技大学 | 一种基于遗传算法的神经网络自适应分布式并行训练方法 |
CN115186821B (zh) * | 2022-09-13 | 2023-01-06 | 之江实验室 | 面向芯粒的神经网络推理开销估计方法及装置、电子设备 |
CN115543639B (zh) * | 2022-12-01 | 2023-04-28 | 阿里云计算有限公司 | 分布式执行深度学习任务的优化方法和分布式系统 |
-
2023
- 2023-03-01 CN CN202310179898.2A patent/CN115860081B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970934A (zh) * | 2014-03-28 | 2014-08-06 | 清华大学 | 一种集成网络器件的多电压片上网络芯片的布图规划方法 |
CN115421897A (zh) * | 2022-11-07 | 2022-12-02 | 之江实验室 | 一种面向芯粒的深度神经网络流水线并行调度方法及装置 |
CN115658274A (zh) * | 2022-11-14 | 2023-01-31 | 之江实验室 | 芯粒中神经网络推理的模块化调度方法、装置和计算设备 |
Non-Patent Citations (2)
Title |
---|
Design of system-on-a-chip test access architectures using integer linear programming;K. Chakrabarty;Proceedings 18th IEEE VLSI Test Symposium;全文 * |
二维重构数字微流控生物芯片的架构级布局设计及调度优化;王鹤;制造业自动化;第40卷(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115860081A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115860081B (zh) | 一种芯粒算法调度方法、系统、电子设备及存储介质 | |
EP4036803A1 (en) | Neural network model processing method and apparatus, computer device, and storage medium | |
CN111382868B (zh) | 神经网络结构搜索方法和神经网络结构搜索装置 | |
WO2024114399A1 (zh) | 分布式执行深度学习任务的优化方法和分布式系统 | |
CN110175628A (zh) | 一种基于自动搜索与知识蒸馏的神经网络剪枝的压缩算法 | |
CN110276442A (zh) | 一种神经网络架构的搜索方法及装置 | |
CN104915717B (zh) | 数据处理方法、知识库推理方法及相关装置 | |
CN108875955A (zh) | 基于参数服务器的梯度提升决策树的实现方法及相关设备 | |
CN111459988B (zh) | 一种机器学习流水线自动化设计的方法 | |
Fazzolari et al. | A study on the application of instance selection techniques in genetic fuzzy rule-based classification systems: Accuracy-complexity trade-off | |
CN112163601A (zh) | 图像分类方法、系统、计算机设备及存储介质 | |
CN116594748B (zh) | 针对任务的模型定制处理方法、装置、设备和介质 | |
CN115186821A (zh) | 面向芯粒的神经网络推理开销估计方法及装置、电子设备 | |
CN116644804B (zh) | 分布式训练系统、神经网络模型训练方法、设备和介质 | |
CN111966495B (zh) | 数据处理方法和装置 | |
CN115168281B (zh) | 一种基于禁忌搜索算法的神经网络片上映射方法和装置 | |
CN112200296A (zh) | 网络模型量化方法、装置、存储介质及电子设备 | |
CN117668563B (zh) | 文本识别方法、装置、电子设备及可读存储介质 | |
CN115017178A (zh) | 数据到文本生成模型的训练方法和装置 | |
CN116627503A (zh) | 神经网络模型的编译方法、优化模型的训练方法和装置 | |
Ouadah et al. | A hybrid MCDM framework for efficient web services selection based on QoS | |
CN115412401B (zh) | 训练虚拟网络嵌入模型及虚拟网络嵌入的方法和装置 | |
CN116721327A (zh) | 一种基于泛化界的神经网络架构搜索方法 | |
Sidheekh et al. | Building Expressive and Tractable Probabilistic Generative Models: A Review | |
CN114385831B (zh) | 一种基于特征提取的知识图谱关系预测方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |