存储器受限调度制造技术

技术编号:37269873 阅读:12 留言:0更新日期:2023-04-20 23:39
本公开的某些方面提供了用于生成执行调度的技术,包括:接收用于进程的数据流图表,其中数据流图表包括多个节点和多条边;至少部分地基于该进程的存储器利用来生成该数据流图表的拓扑排序;通过基于预定义的存储器容量将与存储器存取相对应的一个或多个新节点插入到该拓扑排序中来生成第一经修改拓扑排序;基于第一经修改拓扑排序来分配存储器单元;以及通过按第一经修改拓扑排序重新排列一个或多个节点来生成第二经修改拓扑排序,其中第二经修改拓扑排序使得能够增加多个硬件组件的并行利用。行利用。行利用。

【技术实现步骤摘要】
【国外来华专利技术】存储器受限调度
[0001]相关申请的交叉引用
[0002]本申请要求于2021年8月31日提交的美国专利申请S/N.17/463,393的优先权,该美国专利申请要求于2020年9月1日提交的美国临时专利申请S/N.63/073,269的权益和优先权,其中每件申请的全部内容通过援引整体纳入于此。
[0003]引言
[0004]本公开的各方面涉及计算机处理器操作调度,尤其涉及针对存储器受限系统的改进的操作调度。
[0005]如今各种各样的计算进程涉及顺序地或并行地执行数个离散的操作。调度这些操作应当计及数据依赖关系(例如,在特定操作必须在某些后续操作之前完成的情况下)。计算系统往往利用具有快速存取的存储器(诸如高速缓存、紧密耦合存储器(TCM)、静态随机存取存储器(SRAM)等)来存储每个操作的执行所需的相关联数据。然而,在存储器受限系统中,这些快速存取存储器中可能没有足够的空间来存储整个操作序列和伴随的数据。
[0006]在存储器受限系统上执行此类进程会以各种方式降低性能。尽管一些数据通常会被存储在快速存取存储器(诸如高速缓存)中,但存储器受限系统往往需要依赖于更大更慢的存储器来存储其余数据。因为较大的主机存储器相比于快速存取存储器(诸如SRAM)通常会引致显著更多的计算成本,所以减少此类存储器存取的次数以改进进程的执行是有用的。一般而言,对主机存储器的存取增加了功耗和等待时间,并减少了计算机的总带宽。由此,调度此类操作的一个重要方面是减少对较慢存储器(例如,主机处理系统动态随机存取存储器(DRAM))的存储器存取。
[0007]一些现有的调度器利用贪婪启发法和局部优化朝着开发减少功耗、等待时间和存储器存取的最优调度的目标迈进。存在各种办法来平衡这些相互竞争的目标,但此类办法本质上是由计算进程和操作的全局结构驱动的问题的局部和次优解决方案。
[0008]相应地,所需要的是用于改进进程调度的系统和方法,以便更高效地执行计算机处理。
[0009]简要概述
[0010]某些实施例提供一种用于生成执行调度的方法,该方法包括:接收用于进程的数据流图表,其中数据流图表包括多个节点和多条边;至少部分地基于该进程的存储器利用来生成该数据流图表的拓扑排序;通过基于预定义的存储器容量将与存储器存取相对应的一个或多个新节点插入到该拓扑排序中来生成第一经修改拓扑排序;基于第一经修改拓扑排序来分配存储器单元;以及通过按第一经修改拓扑排序重新排列一个或多个节点来生成第二经修改拓扑排序,其中第二经修改拓扑排序使得能够增加多个硬件组件的并行利用。
[0011]其他方面提供了:处理系统,其被配置成执行前述方法以及本文中所描述的那些方法;非瞬态计算机可读介质,其包括在由处理系统的一个或多个处理器执行时使该处理系统执行前述方法以及本文中所描述的那些方法的指令;计算机程序产品,其被实施在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文中进一步描述的那些方法的代码;以及处理系统,其包括用于执行前述方法以及本文中进一步描述的
那些方法的装置。
[0012]以下描述和相关附图详细阐述了一个或多个实施例的某些解说性特征。
[0013]附图简述
[0014]附图描绘了该一个或多个实施例的某些方面,并且因此不被认为限制本公开的范围。
[0015]图1描绘了用于改进进程调度以确保进程的高效执行的工作流。
[0016]图2A描绘了解说执行进程所涉及的操作集和对应数据流的图表。
[0017]图2B描绘了反向边修改以创建经修改图表。
[0018]图2C

2D描绘了图表上的割以将诸节点分割成不相交子集。
[0019]图2E描绘了全连接修改以创建经修改图表。
[0020]图2F描绘了解分配修改以创建经修改图表。
[0021]图3A

3D描绘了被执行以高效地生成数据流图表的有效拓扑排序以改进对应进程的调度的一系列评估和操作。
[0022]图4描绘了解说用于改进进程调度的方法的流程图。
[0023]图5描绘了根据本文中公开的一些实施例的存储器分配的可视化。
[0024]图6描绘了解说用于生成拓扑排序以改进进程调度的方法的流程图。
[0025]图7描绘了解说用于在生成高效进程调度的同时实施拓扑有效性的方法的流程图。
[0026]图8描绘了解说用于处置并行数据流以准确地生成高效进程调度的方法的流程图。
[0027]图9描绘了解说用于划分数据流图表以生成拓扑排序以产生高效进程调度的方法的流程图。
[0028]图10描绘了解说用于生成和修改拓扑排序以改进进程调度的方法的流程图。
[0029]图11描绘了可被配置成执行本文中描述的至少一些方法的示例处理系统。
[0030]图12描绘了可被配置成执行本文中描述的至少一些方法的示例处理系统。
[0031]为了促成理解,在可能之处使用了相同的附图标记来指定各附图共有的相同要素。构想一个实施例的要素和特征可有益地纳入其他实施例而无需进一步引述。
[0032]详细描述
[0033]本公开的各方面提供了用于使用图表分析来生成更高效的计算机处理操作调度以最小化存储器利用并改进执行这些调度的计算效率的装置、方法、处理系统和计算机可读介质。
[0034]许多计算进程的执行可以使用图表来建模,其中图表中的每个节点对应于要执行的特定操作,并且每条边对应于这些操作之间的数据流。
[0035]例如,为了执行神经网络,数据可在任何数目的节点之间流动以供处理,以生成最终的输出。在本公开的各实施例中,计算进程可被构造为有向无环图(DAG)。DAG是没有有向循环的有向图(例如,具有节点和有向边的图表,其中逐节点沿着有向边永远不会导致闭环)。有向图的“源”通常可以指为该进程提供任何需要的输入数据的某个上游实体或组件(刚好在该图表的(诸)第一节点之前),而“目标”是接收来自该进程的任何输出的下游实体或组件(刚好在(诸)最后节点之后)。为了调度该进程的执行,本公开的各实施例可基于该
图表来生成拓扑排序(例如,节点的线性排序)。一般而言,有效拓扑排序必须确保生产者节点(例如,生成或以其他方式输出某种数据以供下游消费的节点)在任何对应的消费者节点(例如,接收、操作或以其他方式依赖于某个上游实体生成的数据的节点)开始执行之前被调度和执行。即,如果存在从第一节点(生产者)到第二节点(消费者)的有向边,则在拓扑排序中第一节点必须出现在第二节点之前。值得注意的是,给定节点既可充当生产者(对于一个或多个下游节点)又可充当消费者(对于一个或多个上游节点)。
[0036]对于任何给定图表,往往存在大量有效拓扑排序。找到使任何特定准则或属性最大化的排序通常是NP困难的。在本公开的一些实施例中,创建拓扑排序以尝试最小化存储存取。通过最小化此类存储存取,调度可以在减少等待时间和功耗的情况下执行。在一实施例中,图表中的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种方法,包括:接收用于进程的数据流图表,其中数据流图表包括多个节点和多条边;至少部分地基于所述进程的存储器利用来生成所述数据流图表的拓扑排序;通过基于预定义的存储器容量将与存储器存取相对应的一个或多个新节点插入到所述拓扑排序中来生成第一经修改拓扑排序;基于所述第一经修改拓扑排序来分配存储器中的存储器单元;以及通过按所述第一经修改拓扑排序重新排列一个或多个节点来生成第二经修改拓扑排序,其中所述第二经修改拓扑排序使得能够增加多个硬件组件的并行利用。2.如权利要求1所述的方法,其中按所述第一经修改拓扑排序重新排列一个或多个节点包括:将与将数据从主机处理系统存储器加载到所述存储器中相对应的一个或多个节点移到所述拓扑排序中更靠前的位置。3.如权利要求1所述的方法,其中:所述数据流图表中的所述多个节点对应于在所述进程期间执行的操作,所述数据流图表中的所述多条边对应于在所述操作之间传递的数据,所述多条边中的每条相应边关联于相应权重,该相应权重基于与该相应边相关联的所述数据的大小,并且生成所述拓扑排序包括基于所述权重来找到所述数据流图表中的最小割集。4.如权利要求3所述的方法,其中找到所述最小割集包括通过以下操作来修改所述数据流图表以实施数据依赖关系:对于所述多条边中的每条相应边,添加无限权重的相应后向边。5.如权利要求4所述的方法,其中找到所述最小割集进一步包括通过以下操作来修改所述数据流图表以实施数据依赖关系:确保在所述数据流图表中存在从源到所述多个节点中的每一者以及从所述多个节点中的每一者到阱的至少一条有效路径。6.如权利要求3所述的方法,其中找到所述最小割集包括通过以下操作向所述多条边赋予所述权重:标识所述多个节点中向所述多个节点中的至少一个消费者节点输出数据的生产者节点;确定由所述生产者节点输出的所述数据的大小;以及通过以下操作将解分配节点插入到所述数据流图表中:创建具有与由所述生产者节点输出的所述数据的大小相对应的权重的第一边,其中所述第一边从所述生产者节点插入到所述解分配节点;向从所述生产者节点到所述至少一个消费者节点的边赋予为零的权重;以及创建从所述至少一个消费者节点到所述解分配节点的边,该边被赋予为零的权重。7.如权利要求3所述的方法,其中找到所述最小割集包括:对于所述多个节点中的第一索引节点,通过以下操作将第一最小割约束为在所述第一索引节点之后发生:创建从源到所述第一索引节点的具有无限权重的第一边;标识来自所述多个节点中的从所述第一索引节点接收数据的消费者节点集合;创建从所述消费者节点集合中的每个消费者节点到阱的具有无限权重的边;以及
计算所述第一最小割,其中所述第一最小割将所述第一索引节点置于所述数据流图表的第一部分中并且将所述第一索引节点的所有后继节点置于所述数据流图表的第二部分中。8.如权利要求7所述的方法,其中找到所述最小割集进一步包括:迭代地计算所述数据流图表的所述第一部分和所述第二部分中的索引节点的最小割;以及基于所述最小割来对所述数据流图表的所述第一部分和所述第二部分进行分离,直到预定义的停止条件被满足。9.如权利要求7所述的方法,进一步包括:基于确定所述第一索引节点在所述数据流图表中居中来选择所述第一索引节点。10.如权利要求9所述的方法,进一步包括:确定所述第一索引节点是所述数据流图表中的一组同胞节点之一;以及通过将该组同胞节点的第一部分约束到所述数据流图表的所述第一部分中并且将该组同胞节点的第二部分约束到所述数据流图表的所述第二部分中来计算所述第一最小割。11.一种处理系统,包括:包括计算机可执行指令的存储器;以及一个或多个处理器,所述一个或多个处理器被配置成执行所述计算机可执行指令并使得所述处理系统执行包括以下动作的操作:接收用于进程的数据流图表,其中数据流图表包括多个节点和多条边;至少部分地基于所述进程的存储器利用来生成所述数据流图表的拓扑排序;通过基于预定义的存储器容量将与存储器存取相对应的一个或多个新节点插入到所述拓扑排序中来生成第一经修改拓扑排序;基于所述第一经修改拓扑排序来分配存储器中的存储器单元;以及通过按所述第一经修改拓扑排序重新排列一个或多个节点来生成第二经修改拓扑排序,其中所述第二经修改拓扑排序使得能够增加多个硬件组件的并行利用。12.如权利要求11所述的处理系统,其中按所述第一经修改拓扑排序重新排列一个或多个节点包括:将与将数据从主机处理系统存储器加载到所述存储器中相对应的一个或多个节点移到所述拓扑排序中更靠前的位置。13.如权利要求11所述的处理系统,其中:所述数据流图表中的所述多个节点对应于在所述进程期间执行的操作,所述数据流图表中的所述多条边对应于在所述操作之间传递的数据,所述多条边中的每条相应边关联于相应权重,该相应权重基于与该相应边相关联的所述数据的大小,并且生成所述拓扑排序包括基于所述权重来找到所述数据流图表中的最小割集。14.如权利要求13所述的处理系统,其中找到所述最小割集包括通过以下动作来修改所述数据流图表以实施数据依赖关系:对于所述多条边中的每条相应边,添加无限权重的相应后向边。15.如权利要求14所述的处理系统,其中找到所述最小割集进一步包括通过以下动作来修改所述数据流图表以实施数据依赖关系:确保在所述数据流图表中存在从源到所述多个节点中的每一者以及从所述多个节点
中的每一者到阱的至少一条有效路径。16.如权利要求13所述的处理系统,其中找到所述最小割集包括通过以下动作向所述多条边赋予所述权重:标识所述多个节点中向所述多个节点中的至少一个消费者节点输出数据的生产者节点;确定由所述生产者节点输出的所述数据的大小;以及通过以下动作将解分配节点插入到所述数据流图表中:创建具有与由所述生产者节点输出的所述数据的大小相对应的权重的第一边,其中所述第一边从所述生产者节点插入到所述解分配节点;向从所述生产者节点到所述至少一个消费者节点的边赋予为零的权重;以及创建从所述至少一个消费者节点到所述解分配节点的边,该边被赋予为零的权重。17.如权利要求13所述...

【专利技术属性】
技术研发人员:J
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1