芯粒中神经网络推理的模块化调度方法、装置和计算设备
文献发布时间:2023-06-19 18:25:54
技术领域
本发明属于深度学习、神经网络加速器以及高性能计算交叉的技术领域,具体涉及一种芯粒中神经网络推理的模块化调度方法、装置和计算设备。
背景技术
神经网络被用于解决实际应用中各分类、识别、预测等具有挑战性的问题。但是,面对日益复杂的问题以及更高应用精度的需求,大规模神经网络成为研究热点和发展趋势,其处理的数据量急剧增大,这给神经网络加速器的计算和存储性能带来了极大的挑战。
随着芯粒技术的发展,神经网络加速器正在从芯片升级至芯粒。芯粒将小芯片单元集成封装为满足特定功能的模块芯片,相比于原来的普通芯片具有更高的灵活度和性能以及更低的成本,对神经网络加速器这种专用领域架构的发展十分有利。
因此,对于芯粒这种集成度高的更复杂的结构,为了充分考虑神经网络中算子间的数据依赖关系,以搜索出使得推理开销尽可能小的高性能芯粒调度策略,加速神经网络在芯粒上的推理,设计一种芯粒中神经网络推理的模块化调度方法成为一项极具意义的挑战。
现有技术中鲜有面向芯粒结构的神经网络推理调度解决方案,并且,现有技术缺乏对影响推理开销的多个重要因素的权衡,也忽略了神经网络中数据依赖关系复杂的局部子图所采取的调度策略对整体推理开销的影响,因此,神经网络加速器的调度技术还有很大的提升空间。
专利文献CN112149816A公开了一种支持神经网络推理加速的异构存算融合系统,包括主机处理器、非易失内存模、3D堆叠内存模块、网络模块、配置电路以及电压发生器,通过综合考虑神经网络需求及3D堆叠内存和忆阻器的优缺点,对神经网络计算、存储访问进行针对性优化,支持大规模神经网络计算加速,但是并没有解决对神经网络加速器的推理资源调度优化。
专利文献CN114168321A公开了一种资源分配方法,将当前的资源子池划分成数量与网络芯片中需要使用资源的功能模块的数量相匹配的资源子池组,每个资源子池包括可用资源;分别从各个资源子池组中筛选出满足资源筛选条件的目标资源子池;将目标资源子池中的可用资源分配给所述需要使用资源的功能模块,该方式虽然能够让每个功能模块所能够获得的资源的性能达到功能模块的最高频率,但是,这种资源分配方法并不适用于在芯粒中为神经网络的算子分配资源。
发明内容
鉴于上述,本发明的目的是提供一种芯粒中神经网络推理的模块化调度方法,在考虑数据依赖关系基础上,同时考虑算子划分方式、资源分配方式以及资源在芯粒中的放置位置等因素来确定资源最优调度策略。
为实现上述发明目的,实施例提供的一种芯粒中神经网络推理的模块化调度方法,包括以下步骤:
获取在芯粒中进行神经网络推理的调度策略搜索空间,包括:获取神经网络中算子的划分方式、包含芯粒资源总数的资源分配方式、分得资源在芯粒中的放置位置;
获取神经网络的计算图,依据计算图生成神经网络算子深度,依据计算图将神经网络算子划分为串行组;
依据计算图呈现的算子间的数据依赖关系、算子深度和串行组,划分计算图得到数据依赖模块和并行数据依赖模块;
确定数据依赖模块的数据依赖复杂度,依据数据依赖复杂度、并行数据依赖模块以及芯粒资源总数计算算子的最大可用资源分配数量,该最大可用资源分配数量作为调度策略迭代搜索的初始约束;
依据调度策略搜索空间和初始约束迭代搜索使得计算开销、算子内和算子间数据传输开销、芯粒多级路由产生的拥塞开销之和最小的最优模块化调度策略。
优选地,获取神经网络中每类算子的划分方式,包括;将神经网络中每类算子表示为V
获取神经网络中每类算子的资源分配方式,包括:获取分配给神经网络中算子的芯粒资源总数R
获取子芯粒阵列在芯粒中的放置位置,包括:获取能够分配给神经网络算子的每种子芯粒阵列r在芯粒中所有可能的放置位置p
优选地,获取的神经网络的计算图由节点和边表示,其中,计算图的节点表示神经网络的算子,边表示神经网络的算子之间的数据依赖关系;
依据计算图将神经网络算子划分为串行组,包括:依据计算图中节点的出度和入度情况划分串行组,每个串行组由一个出度、入度均为1的节点组成,或由出度、入度均为1的若干连续节点组成,其中,当一节点为另一节点的前序节点或者后序节点时,则这两个节点是连续的。
优选地,划分计算图得到数据依赖模块,包括:
将计算图划分为一对多模块,包括:将计算图中入度等于1且出度大于1的节点及其所有相邻深度的后序节点划分到同一个一对多模块,并将一对多模块中节点最小深度作为该一对多模块所处深度,所有一对多模块组成集合DD
计算图划分为多对一模块,包括:将计算图中入度大于1且出度等于1的节点及其所有相邻深度的前序节点划分到同一个多对一模块,并将多对一模块中节点的最小深度作为该多对一模块所处深度,所有多对一模块组成集合DD
将计算图划分为多对多模块,包括:将计算图中入度大于1且出度大于1的节点及其所有前序节点和后序节点划分到同个多对多模块,并将多对多模块中节点的最小深度作为该多对多模块所处深度,所有多对多模块组成集合DD
将计算图划分为并行一对多模块,包括:将集合DD
将计算图划分为一对一模块,包括:遍历串行组,为每个串行组创建一对一模块,将串行组中所有算子加入一对一模块,将一对一模块中节点的最小深度作为该一对一模块所处深度,若串行组中深度最小节点的前序节点的入度大于1且出度等于1,则将前序节点加入串行组对应的一对一模块,若串行组中深度最大节点的后序节点的入度等于1且出度大于1,则将后序节点加入串行组对应的一对一模块;遍历集合DD
将一对多模块、多对一模块、多对多模块、并行一对多模块、一对一模块统称为数据依赖模块,合并集合DD
优选地,将计算图划分为并行数据依赖模块,包括:
遍历神经网络的计算图,对于当前遍历算子所在的深度为d的数据依赖模块dd,执行以下步骤:
若存在深度为d的并行数据依赖模块或不存在其他深度为d的其他数据依赖模块,则继续遍历下一个数据依赖模块;
若不存在深度为d的并行数据依赖模块,并且若存在深度为d且与数据依赖模块dd没有交集的其他数据依赖模块,则将不包含相同算子且同处于深度d的若干数据依赖模块划分为同一并行数据依赖模块;
遍历结束后,输出由并行数据依赖模块组成的并行数据依赖模块集合PDD。
优选地,确定数据依赖模块的数据依赖复杂度,包括:
对数据依赖模块进行数据依赖复杂度排序,包括:首先,按照规则1进行一阶段排序,规则1为:一对多模块、多对一模块、多对多模块、并行一对多模块的数据依赖复杂度均高于一对一模块;然后,按照规则2进行二阶段排序,规则2为:在除了一对一模块外的所有数据依赖模块中,算子数量多的数据依赖复杂度高;接下来,按照规则3进行三阶段排序,规则3为:对于一对一模块,算子数量多的数据依赖复杂度高,最后,按照规则4进行四阶段排序,得到排序后的数据依赖模块集合DD
通过遍历数据依赖模块集合DD
优选地,依据数据依赖复杂度、并行数据依赖模块以及芯粒资源总数计算算子的最大可用资源分配数量,包括:
遍历标记有数据依赖复杂度顺序的数据依赖模块集合DD
首先,获取数据依赖模块dd所在并行数据依赖模块pdd,并计算数据依赖模块dd的算子数量占并行数据依赖模块pdd算子总数的第一算子比例;
然后,计算芯粒资源总数R
优选地,依据调度策略搜索空间和初始约束迭代搜索使得计算开销、算子内和算子间数据传输开销、芯粒多级路由产生的拥塞开销之和最小的最优模块化调度策略,包括:
首先,依据初始约束进行迭代搜索,以确定每个数据依赖模块的最优调度策略,包括:遍历标记有依据数据依赖复杂度顺序的数据依赖模块集合DD
每轮遍历中,若数据依赖模块dd处于并行数据依赖模块pdd且并行数据依赖模块pdd内存在已确定了模块内所有算子的调度策略的数据依赖模块,则获取已完全确定调度策略的数据依赖模块的算子资源分配数量之和r
每轮遍历中,从调度策略搜索空间中搜索数据依赖模块dd内各算子所有可能的调度策略,其中,调度策略表示为{t,r,p},t表示算子v的划分方式,r表示算子v获得的资源分配数量,p表示算子v分得资源在芯粒中的放置位置,同时限定分配给算子v的资源分配数量需满足资源分配总数m*n不超过算子最大可用资源数量m
每轮遍历的每次搜索中,依据数据依赖模块dd内各算子所有可能的调度策略生成数据依赖模块dd对应的调度策略组合,计算数据依赖模块dd在调度策略组合下的总推理开销,总推理开销为数据依赖模块dd在推理过程中产生的计算开销、算子内和算子间数据传输开销、芯粒多级路由产生的拥塞开销之和;
迭代结束后,为数据依赖模块dd选择总推理开销最小的调度策略组合作为最优调度策略;
然后,综合每个数据依赖模块的最优调度策略输出计算图的调度策略集合,该调度策略集合记录有每个算子采取的最优调度策略。
为实现上述发明目的,实施例还提供了一种芯粒中神经网络推理的模块化调度装置,包括:
获取单元,用于获取在芯粒中进行神经网络推理的调度策略搜索空间,包括:获取神经网络中算子的划分方式、包含芯粒资源总数的、分得资源在芯粒中的放置位置;
串行组划分单元,用于获取神经网络的计算图,依据计算图生成神经网络算子深度,依据计算图将神经网络算子划分为串行组;
数据依赖模块划分单元,用于依据计算图呈现的算子间的数据依赖关系、算子深度和串行组,划分计算图得到划分为数据依赖模块和并行数据依赖模块;
数据依赖复杂度确定单元,用于确定数据依赖模块的数据依赖复杂度,依据数据依赖复杂度、并行数据依赖模块以及芯粒资源总数计算算子的最大可用资源分配数量,该最大可用资源分配数量作为调度策略迭代搜索的初始约束;
迭代搜索单元,用于依据调度策略搜索空间和初始约束迭代搜索使得计算开销、算子内和算子间数据传输开销、芯粒多级路由产生的拥塞开销之和最小的最优模块化调度策略。
为了实现上述发明目的,实施例还提供了一种计算设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上执行的计算机程序,所述处理器执行所述计算机程序时实现上述芯粒中神经网络推理的模块化调度方法的步骤。
与现有技术相比,本发明具有的有益效果至少包括:
不仅能够充分利用芯粒资源,还能够充分考虑神经网络算子间的数据依赖关系,得到高性能的芯粒资源调度策略,加速神经网络在芯粒中的推理;
依据算子间的数据依赖关系划分计算图,优先探索数据依赖复杂度高的数据依赖模块的调度策略,并动态调整可以并行执行的数据依赖模块所能使用的最大可用资源分配数量,使得调度方法能够优先为对全局推理数据依赖复杂度更大的数据依赖模块选择尽可能优的调度策略,其次再为那些对全局推理数据依赖复杂度更小的数据依赖模块选择尽可能优的调度策略,同时不仅充分考虑了数据依赖模块内关系紧密的若干算子在调度策略决策上复杂的相互影响关系,还能够权衡其中可并行计算的算子在调度策略决策上的相互影响,综合得到性能更强大、推理延迟更低的调度策略;
综合考虑了算子划分方式、资源分配方式以及资源在芯粒中的放置位置这三个维度的调度策略搜索空间,并将算子内和算子间的数据传输开销加入决定调度策略的总推理开销计算中,使得调度方法所覆盖的维度更广,调度粒度粗细结合,综合考虑了影响神经网络在芯粒上的推理延迟的计算开销、芯粒多级路由产生的拥塞开销等多个重要因素,使得调度方法性能更强大,最终确定的调度策略推理延迟更低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
图1是实施例提供的芯粒中神经网络推理的模块化调度方法的流程图;
图2实施例提供的为神经网络推理配置的芯粒资源;
图3是实施例提供的芯粒中嵌入式神经网络处理器的阵列;
图4是实施例提供的示例性ResNeXt主要组成结构的简化版;
图5是实施例提供的计算图中算子深度示意图;
图6和图7均是实施例提供的数据依赖模块的示意图;
图8是实施例提供的芯粒中神经网络推理的模块化调度装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
为了提升芯粒中神经网络推理性能和减低推理总开销,实施例提供了一种芯粒中神经网络推理的模块化调度方法,如图1所示,包括以下步骤:
步骤1,获取在芯粒中进行神经网络推理的调度策略搜索空间。
实施例中,获取在芯粒中进行神经网络推理的调度策略搜索空间,主要包括:获取神经网络中算子的划分方式和资源分配方式以及分得资源在芯粒中的放置位置,其中,算子的划分方式和资源分配方式以及分得资源在芯粒中的放置位置构成调度策略搜索空间。
其中,获取神经网络中每类算子的划分方式,包括;将神经网络中每类算子表示为V
实施例中,为神经网络推理配置的芯粒资源如图2所示,芯粒通过路由器与其他芯粒进行通信连接,每个芯粒中阵列排布的嵌入式神经网络处理器(NPU),如图3所示,基于此,获取神经网络中每类算子的资源分配方式,包括:获取分配给神经网络中算子的芯粒资源总数R
需要说明的是,子芯粒阵列是指芯粒中的一部分,如图3中包含4*2个NPU的方框所示,这部分被分配给单个算子,指示了算子配置的资源分配数量。需要说明的是,子芯粒阵列的每种可能尺寸是预先自定义的,每种尺寸的资源分配数量作为后续算子调度策略的一种可能组分。
获取子芯粒阵列在芯粒中的放置位置,包括:获取能够分配给神经网络算子的每种子芯粒阵列r在芯粒中所有可能的放置位置p
步骤2,获取神经网络的计算图,并依据计算图生成算子深度和划分串行组。
实施例中,每个神经网络对应唯一的用于推理的计算图G,该计算图为有向无环图,由节点集合V和边集合E表示,其中,计算图的节点表示神经网络的算子,节点之间的边表示神经网络的算子之间的数据依赖关系。示例性地,以神经网络ResNeXt为例,获得的ResNeXt主要组成结构的简化版对应的计算图,如图5所示,v1-v28均为算子,算子之间的有向箭头表示数据依赖关系。
实施例中,依据计算图生成神经网络算子深度时,可以通过广度优先搜索算法遍历计算图,在遍历过程中,对于当前遍历节点,判断其前序节点是否均标记了深度,若不存在未标记深度的前序节点或不存在前序节点,则标记当前节点v的深度d,若存在未标记深度的前序节点,则不标记当前节点的深度,继续遍历下一个节点,通过此方式,确定神经网络中每个算子的算子深度,如图5所示,R1-R10表示算子深度,算子v1的算子深度为R1,算子v11-v14的算子深度均为R5。
实施例中,依据计算图将神经网络算子划分为串行组,包括:依据计算图中节点的出度和入度情况划分串行组,每个串行组由出度、入度均为1的节点组成,或由出度、入度均为1的若干连续节点组成,其中,当一节点为另一节点的前序节点或者后序节点时,则这两个节点是连续的。具体地,可以通过深度优先搜索算法遍历计算图中所有节点,在遍历过程中,对于当前遍历节点,若当前节点不满足出度、入度均为1的条件,则继续遍历下一个节点;若当前节点满足出度、入度均为1的条件,则进一步判断当前节点的前序节点是否满足出度、入度均为1的条件,若前序节点满足条件则将当前节点加入前序节点所在串行组,若前序节点不满足调节则创建新的串行组并将当前节点加入新创新的串行组。
步骤3,依据数据依赖关系、算子深度和串行组,划分计算图得到数据依赖模块和并行数据依赖模块。
实施例中,依据计算图呈现的算子间的数据依赖关系、算子深度和串行组,划分计算图得到数据依赖模块,包括:
(a)将计算图划分为一对多模块,包括:将计算图中入度等于1且出度大于1的节点以及其所有相邻深度的后序节点划分到同个一对多模块,并将一对多模块中节点对应算子的最小深度作为该一对多模块所处深度,所有第一对多模块组成集合DD
(b)将计算图划分为多对一模块,包括:将计算图中入度大于1且出度等于1的节点及其所有相邻深度的前序节点划分到同一个多对一模块,并将多对一模块中节点最小深度作为该多对一模块所处深度,所有多对一模块组成集合DD
(c)将计算图划分为多对多模块,包括:将计算图中入度大于1且出度大于1的节点及其所有前序节点和后序节点划分到同个多对多模块,并将多对多模块中节点最小深度作为该多对多模块所处深度,所有多对多模块组成集合DD
(d)将计算图划分为并行一对多模块,包括:将集合DD
(e)将计算图划分为一对一模块,包括:遍历串行组,为每个串行组创建一对一模块,将串行组中所有算子加入一对一模块,将一对一模块中节点的最小深度作为该一对一模块所处深度,若串行组中深度最小节点的前序节点的入度大于1且出度等于1,则将前序节点加入串行组对应的一对一模块,若串行组中深度最大节点的后序节点的入度等于1且出度大于1,则将后序节点加入串行组对应的一对一模块;遍历集合DD
(f)将一对多模块、多对一模块、多对多模块、并行一对多模块、一对一模块统称为数据依赖模块,合并集合DD
实施例中,依据数据依赖模块和计算图,将计算图划分为并行数据依赖模块,包括:
遍历神经网络的计算图,对于当前遍历算子所在的深度为d的数据依赖模块dd,执行以下步骤:
若存在深度为d的并行数据依赖模块或不存在其他深度为d的其他数据依赖模块,则继续遍历下一个数据依赖模块;
若不存在深度为d的并行数据依赖模块,并且若存在深度为d且与数据依赖模块dd没有交集的其他数据依赖模块,则将不包含相同算子且同处于深度d的若干数据依赖模块划分为同一并行数据依赖模块;
遍历结束后,输出由并行数据依赖模块组成的并行数据依赖模块集合PDD。
步骤4,确定数据依赖模块的数据依赖复杂度,并计算调度策略迭代搜索的初始约束。
实施例中,在数据依赖模块中节点间的边表示节点间的数据依赖关系,基于此,数据依赖模块的数据依赖复杂度依据节点间边的数量以及边的连接方式通过排序确定。实施例定义了用于数据依赖复杂度排序的4个规则,包括:规则1为:一对多模块、多对一模块、多对多模块、并行一对多模块的数据依赖复杂度均高于一对一模块;规则2为:在除了一对一模块外的所有数据依赖模块中,算子数量多的数据依赖复杂度高;规则3为:对于一对一模块,算子数量多的数据依赖复杂度高;规则4为:对于算子数量相同的数据依赖模块,在计算图中采用广度优先搜索算法先遍历到的数据依赖模块的复杂度更高。
依据上述4个规则,对数据依赖模块进行数据依赖复杂度排序,包括:
(a)对数据依赖模块进行数据依赖复杂度排序,包括:首先,按照规则1进行一阶段排序;然后,按照规则2进行二阶段排序;接下来,按照规则3进行三阶段排序;最后,按照规则4进行四阶段排序,得到排序后的数据依赖模块集合DD
(b)通过遍历排序后的数据依赖模块集合DD
在获得数据依赖复杂度的基础上,依据数据依赖复杂度、并行数据依赖模块以及芯粒资源总数计算算子的最大可用资源分配数量,该最大可用资源分配数量作为调度策略迭代搜索的初始约束。其中,计算算子的最大可用资源分配数量,包括:
遍历标记有数据依赖复杂度顺序的数据依赖模块集合DD
首先,获取数据依赖模块dd所在并行数据依赖模块pdd,并计算数据依赖模块dd的算子数量占并行数据依赖模块pdd算子总数的第一算子比例;
然后,计算芯粒资源总数R
步骤5,依据调度策略搜索空间和初始约束迭代搜索最优模块化调度策略。
实施例中,依据调度策略搜索空间和初始约束迭代搜索使得计算开销、算子内和算子间数据传输开销、芯粒多级路由产生的拥塞开销之和最小的数据依赖模块调度策略作为最优模块化调度策略,包括:
(a)以步骤4计算的最大可用资源分配数量作为初始约束,依据初始约束进行迭代搜索,以确定每个数据依赖模块的最优调度策略。
在迭代搜索过程中,用于约束算子调度策略的初始约束会被动态更新掉。其中,迭代搜索包括:遍历标记有依据数据依赖复杂度顺序的数据依赖模块集合DD
每轮遍历中,若数据依赖模块dd处于并行数据依赖模块pdd且并行数据依赖模块pdd内存在已确定了模块内所有算子的调度策略的数据依赖模块,则获取已完全确定调度策略的数据依赖模块的算子资源分配数量之和r
每轮遍历中,从调度策略搜索空间中搜索数据依赖模块dd内各算子所有可能的调度策略,其中,调度策略表示为{t,r,p},t表示算子v的划分方式,r表示算子v获得的资源分配数量,p表示算子v分得资源在芯粒中的放置位置,同时限定分配给算子v的资源分配数量需满足资源分配总数m*n不超过算子最大可用资源数量m
每轮遍历的每次搜索中,依据数据依赖模块dd内各算子所有可能的调度策略生成数据依赖模块dd对应的调度策略组合,计算数据依赖模块dd在调度策略组合下的总推理开销,其中,总推理开销为数据依赖模块dd在推理过程中产生的计算开销、算子内和算子间数据传输开销、芯粒多级路由产生的拥塞开销之和;
实施例中,采用公式(1)计算单算子的计算开销,加总数据依赖模块dd内所有算子的计算开销即得到该模块在推理过程中产生的计算开销,
其中,d
实施例中,数据传输开销分为单算子的数据传输开销和具有数据依赖关系的算子对(v,u)之间的数据传输开销。
针对单算子的数据传输开销,输入算子v的划分策略的独热编码s
针对具有数据依赖关系的算子对(v,u)之间的数据传输开销,输入算子v的划分策略的独热编码s
实施例中,拥塞开销包括单算子拥塞开销和具有数据依赖关系的算子对(v,u)之间的拥塞开销。
针对单算子拥塞开销,根据划分策略的独热编码s
具体地,如划分策略的独热编码s
针对具有数据依赖关系的算子对(v,u)之间的拥塞开销,根据划分策略的独热编码s
具体地,如划分策略的独热编码s
迭代结束后,为数据依赖模块dd选择总推理开销最小的调度策略组合作为最优调度策略。
(b)综合每个数据依赖模块的最优调度策略输出计算图的调度策略集合,该调度策略集合记录有每个算子采取的最优调度策略。
基于同样的发明构思,实施例还提供一种芯粒中神经网络推理的模块化调度装置,如图8所示,包括:
获取单元,用于获取在芯粒中进行神经网络推理的调度策略搜索空间;
串行组划分单元,用于获取神经网络的计算图,依据计算图生成算子深度和划分为串行组;
数据依赖模块划分单元,用于依据数据依赖关系、算子深度和串行组,划分计算图得到数据依赖模块和并行数据依赖模块。
数据依赖复杂度确定单元,用于确定数据依赖模块的数据依赖复杂度,并计算调度策略迭代搜索的初始约束。
迭代搜索单元,用于依据调度策略搜索空间和初始约束迭代搜索最优模块化调度策略。
需要说明的是,上述实施例提供的芯粒中神经网络推理的模块化调度装置在进行芯粒中神经网络推理的模块化调度时,应以上述各功能单元的划分进行举例说明,可以根据需要将上述功能分配由不同的功能单元完成,即在终端或服务器的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。另外,上述实施例提供的芯粒中神经网络推理的模块化调度成装置与芯粒中神经网络推理的模块化调度方法实施例属于同一构思,其具体实现过程详见芯粒中神经网络推理的模块化调度方法实施例,这里不再赘述。
实施例还提供了一种计算设备,包括存储器、处理器以及存储在存储器中并可在所述处理器上执行的计算机程序,处理器执行计算机程序时实上述实施例提供的芯粒中神经网络推理的模块化调度方法的步骤。
实际应用中,存储器可以为在近端的易失性存储器,如RAM,还可以是非易失性存储器,如ROM,FLASH,软盘,机械硬盘等,还可以是远端的存储云。处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA),即可以通过这些处理器实现芯粒中神经网络推理的模块化调度的步骤。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
- 云计算集群资源调度方法、介质、装置和计算设备
- 测试用例的调度方法、装置、计算设备及计算机存储介质
- 一种卷积神经网络中计算资源的调度方法及装置
- 电网调度风险评估方法、装置、计算机设备和存储介质
- 面向芯粒的神经网络推理开销估计方法及装置、电子设备
- 面向芯粒的神经网络推理开销估计方法及装置、电子设备