使用片上网络叠加的应用数据流图执行的制作方法

文档序号:30963212发布日期:2022-07-30 15:00阅读:104来源:国知局
使用片上网络叠加的应用数据流图执行的制作方法

1.处理核可以通过在处理核之间以分布式方式执行复杂计算的组件计算来 协同执行该复杂计算。为此,处理核需要共享执行那些组件计算所需的数据, 以及接收关于它们被分配了哪些组件计算的指令。该与如何将复杂计算分解 为组件计算并分配给各种处理核相关联的技术与并行计算领域相关联。


背景技术:

2.处理核可以经由网络连接,以促进与并行计算相关联的数据交换。每个 处理核都可以经由专用路由器连接到网络。当处理核位于单个芯片上时,网 络可以称为片上网络(noc)。可以使用单播、多播或广播传输在核之间传输 数据。传输可以是单跳或多跳的,这取决于核的连接方式以及源和目的地核 在网络中的物理位置。例如,相邻核可能能够使用单跳传输进行通信,而远 端核可能需要通过多跳传输进行通信,因为数据在相邻路由器之间串联传递, 并从每个中间路由器转发到最终目的地路由器。
3.图1示出了noc 100的一部分,其中四个处理核101、102、103和104 通过网络链接。该网络包括使用专用路由器110、111、112和113与每个处 理核通信的一组总线。路由器使用网络接口单元(niu)与其相关联的处理核 进行通信。一组总线包括将路由器相互连接以及将路由器连接到其牛的电线。 niu在处理核的硬件中被实例化。处理核使用存储器和处理管线执行分配给 它们的组件计算。组件计算的输入和输出在niu的控制下使用路由器路由。 niu是低级组件,并且可以使用对应的低级存储器复制原语来执行数据传输, 其中处理核上的本地存储器段被复制到另一个处理核上的远程存储器段。在 单跳单播数据传输的基本情况下,存储器复制操作涉及从源核上的存储器复 制有限固定大小的缓冲器,并通过总线将其写入目的地核上的存储器中的缓 冲器。为了传输更大数量的数据,系统可以发出多个存储器复制操作。
4.图1还示出了同一noc 100的层图150。在层图150中,具有锐边的块 表示硬件,而具有圆边的块表示由堆叠该块的硬件实例化的软件。该层图示 出了计算层151,其由处理管线执行的指令实例化并存储在每个处理核的存 储器中,以及noc层152,其由各种核上的niu、路由器和缓冲器执行的指 令实例化,niu、路由器和缓冲器实现与核之间的数据传输相关联的低级原语。 在此使用执行指令的概念来描述进行任何逻辑或数据移动操作的设备的操作, 即使“指令”完全在硬件中指定(例如,and门执行“and”指令)。该术语在用 于设备时,并不意味着该设备具有可编程能力。实际上,本领域的普通技术 人员将认识到niu不是高度可配置或可编程的。执行低级原语的指令,如上 述单跳单播数据传输示例中的存储器复制操作,仍然相当多,并且涉及识别 数据将被复制到的远程存储器段,确保远程存储器段具有足够的空间用于复 制操作,跟踪并保留本地存储器段,向niu提供数据本身和要传输的每条数 据的地址,并且还跟踪存储器复制操作的状态。在缓冲器较大的情况下,指 令还涉及将其分解为多个存储器复制操作。
5.noc层152仅将固定数据段的传输(经由低级存储器复制原语)从计算 层151的范
围中抽象出来。如上所述,计算层151仍然涉及启动和跟踪存储 器复制操作的状态的软件指令。此外,计算层151还在简单存储器复制操作 之上的级别参与多核数据流管理和控制。在实践中,计算层在这方面的工作 负载包括管理数据将被写入的数据结构、跟踪这些数据结构的位置、轮询源 核以查看数据是否准备好入站传输(inbound transfer),以及向目的地核发送 信号以提醒它们数据准备好出站传输(outbound transfer)。例如,计算层将管 理存储器中fifo的写入指针,并需要处理如fifo何时变满或多个核同时请 求向同一目的fifo写入的情况,然后在这些写入尝试中进行仲裁。


技术实现要素:

6.本文公开了与计算节点的网络的数据管理领域相关的方法和系统。计算 节点的网络的示例是片上网络(noc),计算节点的示例是多核处理器中的处 理核。计算节点可以在复杂计算的执行中合作,对于该复杂计算,需要执行 应用数据流图(application data flow graph),以便通过系统分发复杂计算所涉 及的数据。应用数据流图可以描述为了执行复杂的计算,数据需要如何在计 算节点之间流过系统。
7.在本文公开的特定实施例中,计算节点的网络利用网络叠加层和网络叠 加图(network overlay graph)来有效地执行应用数据流图。网络叠加层可以 在逻辑上将计算节点的网络的计算层与计算节点的网络的网络层隔离开,使 计算节点可以自由地专注于计算。网络叠加图可以提高通过网络传输数据的 效率。下面的详细描述包括如何编译网络叠加图并将其分配给网络中的计算 节点,以及如何编译由网络叠加层实现网络叠加图的指令的示例。在本发明 的特定实施例中,网络叠加图被编译并分配给网络中的计算节点。网络叠加 图被编译并分配给网络中的计算节点,其方式是最大化多播对相同数据的单 播的替换。
8.在本发明的特定实施例中,提供了一种使用计算节点的网络来执行应用 数据流图的方法。该方法包括将第一应用数据从第一源计算节点过渡 (transition)到中间计算节点。该方法还可以包括在中间计算节点上从计算节 点的网络的计算层提供第二应用数据。该方法还可以包括将第一应用数据结 合第二应用数据从中间计算节点多播到至少两个目的地计算节点。第一源计 算节点、中间计算节点和至少两个目的地计算节点都在计算节点的网络中。
9.在本发明的特定实施例中,一种使用计算节点的网络执行应用数据流图 的方法包括。该方法包括将第一应用数据从第一源计算节点过渡到中间计算 节点。该方法包括将第二应用数据从第二源计算节点过渡到中间计算节点。 将第一应用数据结合第二应用数据从中间计算节点多播到至少两个目的地计 算节点。第一源计算节点和第二源计算节点、中间计算节点和至少两个目的 地计算节点都在计算节点的网络中。
10.在本发明的特定实施例中,网络叠加层包括分布在计算节点的网络上的 可编程串流控制器(programmable stream controller),并且编译指令以实现网 络叠加图的步骤可以包括将这些指令的调度分配给各个可编程串流控制器。
附图说明
11.图1包括根据相关技术由片上网络(noc)连接的多核处理器的一部分 的框图和层
图。
12.图2包括高级框图,以示出根据本文公开的本发明的具体实施例的编译 网络叠加图来执行计算节点的网络的应用数据流图。
13.图3包括根据相关技术实现应用数据流图的计算节点的网络的示例。
14.图4包括根据本文公开的本发明的具体实施例的实现网络叠加图的计算 节点的网络的示例。
15.图5包括根据本文公开的本发明的具体实施例的用于执行应用数据流图 的一组方法的流程图。
16.图6包括根据本文公开的本发明的具体实施例的在具有三个可编程串流 控制器(psc)的单个计算节点中的网络叠加图的基于复制的执行的示例。
17.图7包括根据本文公开的本发明的具体实施例的多个计算节点的网络叠 加图的基于复制的执行的示例,其中每个计算节点包括psc。
18.图8a包括根据本文公开的本发明的具体实施例的网络叠加图的三个连 续实例的示例。
19.图8b包括根据在此公开的本发明的具体实施例的多个计算节点的网络 叠加图的基于复制的执行的示例,其中在中间计算节点中具有两个psc以实 现双缓冲。
20.图9包括根据本文公开的本发明的具体实施例的多个计算节点的网络叠 加图的基于串流化(streaming)的执行的示例,其中每个计算节点具有不同数 量的psc。
具体实施方式
21.在此详细公开了根据以上概述的与计算节点的网络的数据管理领域相关 的方法和系统。本节中公开的方法和系统是本发明的非限制性实施例,仅用 于解释目的,不应用于限制本发明的全部范围。应当理解,所公开的实施例 可以彼此重叠或不重叠。因此,一个实施例或其特定实施例的一部分可以落 入或不落入另一个实施例或其特定实施例的范围内,反之亦然。来自不同方 面的不同实施例可以结合或单独实施。在本发明的宽泛框架内示出的代表性 实施例的许多不同结合和子结合,对于本领域技术人员来说可能是显而易见 的,但是没有明确示出或描述,不应该被解释为排除。
22.尽管本部分中提供的具体示例针对连接一组处理核的noc到的形式的 计算节点的网络,但是本文公开的方法广泛适用于连接任何形式的计算节点 的网络。此外,根据本公开的网络可以在单芯片系统上实现,包括晶片级单 芯片系统、多芯片单封装系统或多芯片多封装系统,其中芯片通常附着到公 共衬底,如印刷电路板(pcb)、插入物或硅网。根据本公开的网络还可以包 括多个基板上的芯片,这些芯片通过更高级别的公共基板链接在一起,如在 多个印刷电路板各自具有一组芯片的情况下,其中多个pcb固定到公共背板。 根据本公开的网络也可以在基于小芯片(chiplet)的系统中实现。例如,在本 发明的特定实施例中,一个或多个计算节点可以由一个或多个小芯片容纳或 实现,例如通过插入物连接。
23.贯穿本公开,术语“层”是根据本领域普通技术人员对该术语的标准用法 来使用的,包括参考电信和网络计算系统的开放系统互连模型的用法。具体 而言,术语“层”指的是执行存储在存储器中或以其他方式由硬件实例化的一 组指令的系统,包括在顺序逻辑
和/或只读存储器(rom)中实例化的指令, 这些指令经由接口充当相邻层的抽象层,从而允许分离关注点并促进互操作 性。这些层可以包括前述说明和到至少一个邻接层的接口。贯穿本公开,能 够有效通信的层的结合,包括这些层之间的接口,将被称为“栈”24.在本发明的特定实施例中,所公开的计算节点的网络是由noc连接的多 核处理器中的一组处理核的形式。每个处理核可以包括用于与路由器、处理 管线和存储器接口的niu。存储器可以是处理核的高速缓冲存储器,如随机 存取易失性存储器,如sram。处理核还可以包括附加的或更具体的元件, 如更高级别的控制器、串行器/解串行器、用于可修改配置信息的非易失性存 储器以及任意数量的算术逻辑单元和其他基本计算单元。处理核还可以包括 一个或多个端点,这些端点可以最终协调或执行核内的操作,如核控制器。 在特定实施例中,核控制器可以是专用中央处理器(cpu)。在任一情况下, 核控制器或cpu可以管理数据到处理核的主处理管线的传输。处理管线可用 于执行多核处理器执行复杂计算所需的组件计算。noc可以包括每个处理核 上的路由器和总线的系统,其中总线的系统或者单独连接多核处理器中的相 邻处理核以促进多跳通信,或者连接远端处理核以促进这些远端处理核之间 的单跳通信。
25.在本发明的特定实施例中,所公开的计算节点的网络可以包括网络叠加 层。在网络是noc的实施例中,网络叠加层可以是noc叠加层。网络叠加层 可以表现出2020年9月28日提交的第17/035,056号的美国专利申请和2020 年7月29日提交的第16/942,492号的美国专利申请中描述的特征,出于所有 目的,这两个申请通过引用整体结合于此。网络叠加层可以在逻辑上将计算 节点的网络的计算层与计算节点的网络的网络层隔离开,使计算节点可以自 由地专注于计算。
26.如发明内容中所提到的,在本发明的特定实施例中,通过网络叠加图的 编译和网络叠加层对网络叠加图的执行,可以有效地执行应用数据流图。可 以参考图2-图4来解释如何编译网络叠加图并将其分配给网络中的计算节点, 其中网络叠加层将在这些计算节点的每一个上执行该网络叠加图。在本发明 的特定实施例中,网络叠加图以最大化多播对相同数据的单播替换的方式被 编译并分配给网络中的计算节点。在noc和其他互连结构的具体示例中,最 大限度地利用多播可以实现网络的高效利用。还可以生成叠加图,以最大化 进入图上每个目的地节点(例如,计算节点将被提供数据的节点)的数据流。 这将允许目的地节点并行计算,并以最小的延迟生成下一组目的地节点的所 需的数据。
27.图2是示出网络叠加图203的编译以执行计算节点的网络的应用数据流 图202的高级框图200。框图200示出了描述将由计算节点的网络执行的复 杂计算的一部分的应用代码201的示例。在这个示例中,所示的应用代码201 包括用于解释目的的“级联”函数,但是应用代码应该被理解为复杂计算的源 代码描述,例如以人类可读的格式编写,并且可以包括任何定义、变量、函数 等,以描述和允许复杂计算的执行。步骤210表示从应用代码201编译应用 数据流图202。应用数据流图202可以被编译以执行应用代码201中的指令。 在图示的示例中,a1、a2、a3、b1、b2和b3表示应用数据流图的节点,其 中数据最终被产生(或注入到图中)和/或消耗(或从图中提取)。在图2的具 体示例中,a1、a2和a3是源节点,并且b1、b2和b3是目的地节点,因 为数据是从a流向b的。这些节点可以与网络的计算节点相关联。
28.在计算节点是多核处理器中的核的实施例中,应用数据流图的节点可以 与不同的核相关联。该关联可以是特定复杂计算的编译过程的产物(例如, 节点“a1”与“核#5”相
关联,因为节点“a1”的数据物理上存储在核#5的存储器 上)。以这种方式,来自节点a1至b1的数据可以是由与a1相关联的源核产 生的、将由与b1相关联的目的地核消费的数据。在本发明的特定实施例中, 应用数据流图可以被编译用于在单个计算节点内实现,并且与本地操作(如 计算节点内不同模块之间的数据本地传输)相关。在那些实施例中,端点可 以位于同一计算节点内。
29.步骤210可以由与计算节点相关联地工作的编译器来执行。编译器可以 是与计算节点相关联地操作的软件模块。编译器可以包括生成应用数据流图 的指令。指令可以存储在存储器中,或者由更高级别的控制器动态生成。网 络内应用数据流节点的物理位置可以用作编译应用数据流图202的输入。此 外,应用代码201中的函数也可以用于生成图。在编译应用数据流图202期 间,可以解析应用代码201,使得可以以应用数据流图的形式生成应用代码的 表示。换句话说,应用代码可以从应用代码语言“转换”成图表示。这种转换可 以作为将由应用代码201描述的单个复杂计算转换成一组组件计算的过程的 一部分而发生,一组组件计算然后被分配给网络中的各种计算核。因此,在 所示的示例中,在应用数据流图的节点和应用代码201的变量和操作数之间 存在一一对应。然而,这种对应不是必需的,因为组件计算的编译可以将原 始的复杂计算分成更细粒度的部分,以增强系统的计算性能,如通过增加的 并行化(例如,变量“a1”可以与应用数据流图中的两个独立节点相关联)。
30.步骤220表示叠加图203的编译。如图所示,叠加图203可以从应用数 据流图202编译而来。因此,用于执行步骤220的编译器可以考虑应用图202 的各个节点的相互关系,并且还可以考虑应用图的每个节点被分配给计算网 络中的哪些物理节点。编译过程可以考虑最大化多播对相同数据的单播替换 的目标。例如,在图示的情况下,多播的数量可以被设置为1(其中节点230 用作多播的源),而编译器不会添加另一个多播,因为这将需要增加叠加图中 的节点之间的传输的总数。在本发明的特定实施例中,可以直接从应用代码 201编译叠加图,并且在执行步骤220之前,将应用图形成为存储器中的不同 实体不是必需的,因为一个编译器能够执行确定计算网络中的节点之间所需 的数据流和生成叠加图所需的编译过程。如参考应用数据流图202所解释的, 叠加图203可以被编译以促进应用代码201中的指令的执行,并且a1、a2、 a3、b1、b2和b3表示最终由网络的计算层产生或者从计算层提供给该图的 数据。
31.如图所示,叠加图203包括引导数据流的中间节点,这些节点既不存在 于应用数据流图202中,也不由应用代码201中的变量或操作数(或以其他 方式描述的)来表示。叠加图203中的中间节点可以被分配给计算节点的网 络中的计算节点,这将在下面更详细地解释。中间节点可以是物理节点,如 网络中的计算节点,或者由计算节点实现的虚拟节点。这样,一个以上的中 间节点可以由单个计算节点实现。实现叠加图中的中间节点的计算节点可以 是与应用数据流图或叠加图中的节点相关联的相同节点,可以是不同的计算 节点,或其结合。例如,在多核处理器的先前示例中,其中与a1相关联的源 核正在向与b1相关联的目的地核传输数据,源核和目的地核中的每一个可 以实现沿着从a1到b1的路径的叠加图中的部分或全部中间节点,或者一个 或多个中间核可以实现沿着从a1到b1的路径的叠加图中的所有中间节点。 如应用数据流图202所示,与数据a1、a2和a3相关联的应用数据流图中的 每个源节点多播到与数据b1、b2和b3相关联的应用数据流图中的三个目的 地节点
中的每一个。在叠加图中,中间节点可以通过例如将请求分组,然后 将结合的数据多播到其他节点来引导数据流。同时,叠加图的执行发生在叠 加层级别,计算层不必处理中间节点之间的数据传输。参考图3和图4可以 理解这种方法的优点。
32.步骤220可以由与计算节点相关联地工作的编译器来执行。编译器可以 是由高级控制器实例化的软件模块。与应用数据流图的节点相关联的数据的 物理位置可以被用作叠加图203的编译中的输入。此外,应用代码201中的 函数和/或定义数据流的应用数据流图202的边也可以用于生成该图。在编译 叠加图203期间,可以解析应用代码201和/或应用数据流图202,从而可以 以叠加图的形式生成应用代码/应用数据流图的表示。换句话说,应用代码/应 用数据流图可以被“转换”成叠加图表示。
33.编译器可以包括生成应用数据流图和定义中间节点的指令。指令可以存 储在存储器中,或者由更高级别的控制器动态生成。可以为每个应用代码/应 用数据流图更新指令,以便应用数据流图完全适应它所代表的特定代码。可 替换地或结合地,可以为计算节点的每个网络更新指令,使得叠加图完全适 应于它所代表的计算节点的特定网络。例如,可以使用机器学习或人工智能 技术,使得编译器具有生成叠加图的知识,该叠加图考虑给定计算节点的网 络内关于应用代码中的功能的行为模式。编译器还可以考虑网络中的当前流 量、特定计算节点上的工作负载、死锁或其他故障的可能性以及多个其他因 素,以生成优化可用资源的叠加图。编译器还可以具有指令来使叠加图适应 某些条件,例如网络中可用的计算节点的数量,或者支持特定的行为,如最 大化数据传输、将速度优先于处理工作负载或者减少网络层中的流量。这样, 编译器可以考虑多个因素来生成叠加图,并决定在哪里物理实现中间节点(即, 计算网络的哪些节点与叠加图中的中间节点相关联)。
34.在本发明的特定实施例中,叠加图中的中间节点可以通过串流(stream) 来实现。叠加图中的边可以由通过叠加图和串流之间的计算数据的流来实现。 边可以表示通过上述串流的计算数据的流。这些串流可以为计算数据的流提 供方向性,但是除了确保在串流的输入端接收的数据被传递到串流的输出端 之外,不修改或处理数据。在本发明的特定实施例中,叠加层和计算层的接 口也可以通过串流来实现。因此,包括叠加图的一组串流可以包括一组输入 串流和一组输出串流。在本发明的特定实施例中,输入串流与源计算节点相 关联,并且输出串流与目的地计算节点相关联。在本发明的特定实施例中, 输入串流由源计算节点实现,输出串流由目的地计算节点实现,以便向图注 入数据或从图中消费数据。
35.这些串流可以是虚拟单元和/或被映射到物理单元。例如,串流可以映射 到硬件串流单元,如psc。任何数量的串流都可以映射到单个pcs中。在本 发明的特定实施例中,可以使用缓冲器,如不同大小的fifo缓冲器来实现串 流。这些串流可以用来分配和协调计算节点的网络中的资源,以便数据可以 流过网络。
36.可以将指令的调度分配给计算节点的网络中的每个psc,从而可以执行 叠加图。指令的调度可以由与生成叠加图的编译器相同或不同的编译器生成, 或者可以在更高级别的控制器的指令下生成。当psc被分配指令时,叠加图 中的数据的过渡可以经由指令来执行,并且数据可以从一个串流流到另一个 串流,如通过遵循复制或串流化指令,这将在下面更详细地解释。这样,来自 计算层的数据可以经由在网络叠加层级别处执行指令而在网络层中过渡。因 此,计算层可以与网络层任务隔离开来。
37.将描述图3和图4来解释如图202的应用数据流图和如图203的叠加图 的执行中的差异。图3示出了实现如图202的应用数据流图的计算节点的网 络300的示例。在图3的示例中,与数据a1-b3相关联的应用数据流图的每 个节点已经被分配给网络中的计算节点。这样,计算节点301、302和303可 以被称为源计算节点,并且计算节点304、305和305可以被称为目的地计算 节点。
38.由计算层产生和消费的数据可以通过网络300从源计算节点经由网络层 流到目的地计算节点。例如,a1可以由处理管线产生,并且可以从计算节点 301多播,以便由计算节点304、305和306中的处理管线接受。可以使用路 由器(如路由器307)和数据总线(如总线308)来发送数据。同样,目的地 计算节点可以从不同的源计算节点接收数据。例如,计算节点304可以从处 理核301、302和303接收数据。如图所示,计算节点304可以处理来自多个 源的数据309的多个过渡。在特定场景中,即使数据同时在源计算节点准备 就绪,这些数据的过渡也可能需要一系列执行,以便管理网络中可用的资源。 计算层可以协调数据的过渡并管理资源,使得应用数据流图202被执行,并 且数据以期望的方式流过网络。
39.在图示的示例中,计算节点是多核处理器的核。在相邻核的情况下,数 据可以经由单跳过渡从源核流向目的地核;在非相邻核的情况下,数据可以 通过多跳过渡流向目的地核。当源核和目的地核彼此不相邻时,如在所示示 例中,数据可以经由中间相邻核到达目的地核。网络300中的黑色箭头示出 了由应用数据流图202表示的数据如何流经网络300的示例,但是本领域技 术人员可以认识到,在所示网络中多条其他路径是可能的。如图所示,为了 执行应用数据流图202,许多数据路径是必要的。当一个以上的核试图在同一 网络中建立数据路径时,这种实现会导致网络中出现如死锁或资源不可用等 问题。此外,如前所述,单个源核或单个目的地核可能同时处理多个可能相 互干扰的数据路径,并且可能需要串行执行和复杂的资源管理来完成图的执 行。上述实现将执行由应用代码201定义的计算,但是可能导致更长的执行 时间和不必要的资源分配。此外,计算层将参与协调和管理通过网络层的数 据的传输。
40.图4示出了实现如图203的叠加图的计算节点400的网络的示例。如在 前面的示例中,与数据a1-b3相关联的每个叠加节点已经被分配给网络中的 计算节点,并且计算节点是多核处理器的核。然而,在图4的示例中,根据 本发明的特定实施例,核包括能够实现叠加图的叠加层。为了说明的目的, 计算层由核中的上框表示,如核401中的框402,网络叠加层由核中的下框表 示,如核401中的框403。在图4所示的网络400中,计算层通过叠加层与 网络层隔离。例如,数据a1可以由核401中的计算层402产生。该数据可以 经由路由器(如路由器407)和数据总线(如总线408)流经网络。然而,网 络叠加层403将计算层402与网络层隔离,并且可以实现网络叠加图,这将 在下面更详细地描述。
41.叠加图,如图203,可以以各种方式分配给计算节点。叠加图可以由与计 算节点相关联的高级控制器分配给计算节点。在本发明的特定实施例中,前 面描述的编译器还将负责将图分配给计算节点,并且具有指令来按照如上所 述的用于编译图的特定标准来分配图。专用硬件和/或软件模块可以负责将图 分配给计算节点,例如遵循存储在存储器中或来自更高级控制器的指令。根 据众多因素,如网络中计算节点的数量、可用资源、工作负载、网络流量等, 可以以不同的方式分配该图。可以以不同的方式分配该图,以支持特定的行 为,如最大化同时传输的数据量,同时减少网络中的总数据流。在本发明的 特定实施例
中,用于分配图的指令可以包括发现阶段,其中计算节点的网络 中的资源被分析,例如可用计算节点的数量被确定以便决定在哪里以及如何 实现图的节点。在本发明的特定实施例中,可以在编译叠加图之前执行发现 阶段,使得图的编译考虑网络中的架构和资源。
42.将叠加图分配给计算核的网络还可以包括将图中的串流或节点映射到计 算节点中的psc。该步骤可以考虑网络中的psc的总数或基于每个计算节点 的pcs的数量。该步骤还可以包括网络中psc的配置。一旦生成叠加图并将 其分配给网络,就可以将串流映射到psc中,然后可以为pcs分配用于执行 该图的指令调度。
43.在图4的示例中,叠加图已经以叠加图的中间节点分布在核之间的方式 被分配给网络400。在此示例中,一些中间节点已被分配给源和目的地核。例 如,叠加图203中的节点1已经被分配给网络400中的源核401,并且叠加 图203中的节点8已经被分配给网络400中的目的地核404。在本发明的特 定实施例中,这些节点可以是上述输入和输出串流,例如节点1是将数据从 计算层“输入”到图或网络的节点,并且节点8是将数据从图或网络“输出”到 计算层的节点。在所示示例中,网络中的中间核405正在实现叠加图203中 的其他中间节点(4、5、6和7)。为了清楚起见,并且为了将该核或计算节 点与叠加图中的中间节点区分开来,该核通常可以被称为“中间核”或“中间计 算节点”。
44.计算节点的网络中的中间计算节点可以实现叠加图中的一个或多个中间 节点。根据叠加图和网络条件,中间计算节点可以是网络中不同时间的不同 计算节点。在本发明的特定实施例中,中间计算节点可以是源计算节点或目 的地计算节点,并且不一定是中间计算节点。在本发明的特定实施例中,一 个以上的中间计算节点可以同时在同一网络中操作。中间节点可以在网络中 具有专用功能,如从多个源计算节点接收数据以及向多个目的地计算节点发 送数据。在本发明的特定实施例中,中间节点对数据执行操作,使得数据可 以被置于确定的传输类型的条件下。例如,中间节点可以结合从多个源计算 节点接收的数据,并将结合的数据多播到目的地计算节点。作为另一个示例, 中间计算节点可以将从多个源计算节点接收的数据与中间节点本身的计算层 产生的数据结合,并将结合的数据多播到多个目的地计算节点。
45.回头参考图4中的示例,核405是图203的执行中的中间计算节点。中 间计算节点405已经被选择,使得它是网络400的架构中的中间核。然而, 这不是对本发明的限制。如前所述,中间计算节点可以是网络中的任何计算 节点,而不管它们的物理位置如何,并且可以是例如任何源或目的地核。以 类似的方式,图3和图4的示例中的源核和目的地核被示为均匀地分布在网 络中和中间节点周围。仅为了便于解释,这不是对本发明的限制,并且源节 点和目的地节点可以是网络中的任何节点,而不管它们的物理位置和它们相 对于中间节点的位置。
46.在图4中,中间计算核405通过图203的中间节点4、5和6的实现从源 核接收数据,通过中间节点7的实现结合数据,并将这样的数据多播到目的 地核。如图所示,在这个示例中,叠加图的四个节点在中间核中实现。如图3 所示,黑色箭头表示通过网络的数据的流。通过将该实现与图4中的实现进 行比较,很明显,尽管叠加图203中的节点数量相对于应用数据流图202中 的节点数量增加了,但是在网络400相对于网络300的实现中,代表网络中 实际数据传输的黑色箭头的数量减少了。中间计算节点可以结合数据并多播 到多个目的地计算节点,否则这些目的地计算节点将从单独的源计算节点接 收数据的单独的过渡。这
种实现可以最大化多播,同时最小化通过网络的数 据的过渡的总数。这样,通过在叠加层级别管理部分数据的传输,还可以防 止网络层的过载。
47.参考图3和图4描述的与网络叠加图相关联的益处至少部分源于在中间 节点处从网络叠加层中的多个源计算节点收集数据、在网络叠加层中结合数 据以及以多播方式将结合的数据传输到多个目的地节点的益处。在特定实施 例中,多源计算节点可以是中间节点(即,中间节点的计算层可以直接向网 络叠加层提供计算数据,以与来自单独源节点的计算数据相结合)。
48.在本发明的特定实施例中,结合的数据在中间节点上对计算层完全透明 地结合。例如,该结合可以由一个或多个pcs根据不需要由计算层管理的预 载调度来执行网络叠加层指令来执行。在图4的示例中,例如,在计算节点 包括网络叠加层的情况下,中间节点405能够在网络叠加412级别处接收和 结合来自不同源计算节点的数据。中间节点或网络的计算层410通常不必参 与接收、结合和发送数据。以类似的方式,源和/或目的地节点可以在网络叠 加层级别处实现叠加图的节点。例如,源计算节点401可以经由叠加图中的 第一节点将a1从计算层提供给网络叠加层。该步骤可以理解为向图中注入 数据。然后,数据的过渡可以由叠加层执行,而计算层可以继续处理计算层 任务。
49.在特定实施例中,中间节点不是由应用数据流图上的节点表示,而是由 网络叠加图上的节点表示,如图2-图4的示例所示。这看起来可能违反直觉, 但是考虑到互连结构的网络层实际上是如何实现应用数据流图的边的,向图 中添加附加的节点实际上减少了通过互连结构的数据的物理传输的总数。
50.图5示出了用于执行应用数据流图的一组方法的流程图500。流程图500 开始于步骤501,其中将第一应用数据从第一源计算节点过渡到中间节点。第 一应用数据可以从任何计算节点提供。该步骤在框图550中示出,其中a1正 从源核过渡到中间核。流程图500继续到步骤502,其包括步骤502a,其中 将第二应用数据从计算节点的网络的计算层提供到中间计算节点上的计算节 点的网络的网络层。第二应用数据可以是由中间节点的计算层提供的数据, 如由控制器或处理管线提供的数据。步骤502a在框图551中示出,其中a2 是从中间核本身上的计算层提供的。步骤502还包括步骤502b,其中将第二 应用数据从第二源计算节点过渡到中间计算节点。步骤502b在框图552中 示出,其中a2正从第二源核过渡到中间核。步骤502a和步骤502b表示向 中间节点提供第二应用数据的可选步骤。在步骤502a的情况下,第二数据由 中间节点本身提供。在步骤502b的情况下,第二应用数据由第二源计算节点 提供。由于中间计算节点可以是网络中的任何节点,在本发明的特定实施例 中,步骤502a可以被理解为步骤502b的实例,其中第二源计算节点是中间 节点本身。中间节点也可以是第一源计算节点,并替代地提供第一应用数据。 步骤502a和步骤502b表示如何将来自不同源的应用数据提供给中间节点的 示例,但不限制本发明的范围。多种结合是可能的。例如,中间节点的计算层 可以提供第一应用数据和第二应用数据。
51.不管如何将第一应用数据和第二应用数据提供给中间节点,流程图500 继续步骤504,其中将第一应用数据结合第二应用数据从中间计算节点多播 到至少两个目的地计算节点。作为多播步骤的结果,在步骤505和步骤506 中,第一数据和第二数据被提供给第一目的地节点和第二目的地节点处的计 算层,其中第一数据和第二数据最初被单独地指向。步骤504、505和506在 框图553中示出。如图所示,第一源计算节点、第二源计算节点、中间
现虚拟串流的25个最多pcs。这可以通过计算节点上可用的psc的数量或 基于网络的带宽限制对网络中允许实现的pcs的数量的限制来设置。然后可 以使用复制机制来实现附加的虚拟串流。一旦虚拟串流被分配给核,就可以 编译低级别指令来在pcs上实现虚拟串流。该步骤可以包括合并本地副本和 插入指令来维护依赖性,如下所述。
57.在本发明的特定实施例中,网络叠加图中的本地副本可以被合并,使得 单个数据的过渡包括合并的数据,否则该数据在被发送到其目的地之前将需 要两个或更多个独立的过渡。这样,在将数据发送到不同的计算节点之前, 可以通过最小化本地副本的数量来优化远程副本。在本发明的特定实施例中, 合并本地副本将允许消除冗余副本并优化计算节点的网络中的资源。计算节 点中的psc可以管理本地副本的合并,例如通过将合并的数据复制到单个串 流中,然后可以远程复制到不同的计算节点。
58.在本发明的特定实施例中,网络叠加图的执行的本地和远程同步可以通 过使用允许显式或隐式同步的指令来保持。例如,显式本地同步可以通过在 计算节点内插入用于通信的令牌来实现。令牌可以在不同的psc、计算层和 psc之间发送,等等。令牌可以指示计算层何时准备好或需要数据,何时psc 准备好进行后续处理,何时实体准备好发送或接收数据,或任何其他必要的 通信。令牌也可以是来自计算层的中断、来自网络层的事件通知或网络叠加 层的直接消息。隐式远程同步可以通过如复制机制中的“远程复制”或串流机 制中的“推送”指令的指令来实现,这将在下面的示例中更详细地描述。在任 何情况下,依赖性都是在图的整个执行过程中保持的。每个psc都可以被编 程为服从依赖性并保持同步,以便以逻辑顺序执行指令,从而数据可以根据 叠加图流动。
59.在本发明的特定实施例中,实现叠加图的节点的数据的过渡可以通过网 络层操作进行,如存储器复制操作或串流化操作。复制操作可以包括在单个 或固定数量的操作中将数据从一个节点复制到另一个节点,这些操作可以取 决于例如要传输的数据的大小。例如,如果串流由计算节点中的缓冲器或存 储空间实现,则复制操作可以包括将完整的内容从一个缓冲器复制到另一个 缓冲器。对于给定的复制操作,可以在网络中分配资源,并在复制完成后解 除分配资源。串流化操作可以包括从一个节点到另一个节点的恒定数据流。 因此,在本发明的特定实施例中,分配用于串流化的资源在数据的单个过渡 之后不会被解除分配,并且可以保持可用,直到串流化操作不再使用。经由 串流化操作传输的数据不需要完整就可以进行传输。通过这种方式,即使数 据不完全可用,在一个计算节点中产生的来自计算层的数据也可以在产生时 进行串流化。将参考图6-图9给出网络叠加层中的pcs如何实现复制和串流 化机制的示例。
60.不同的资源对于复制操作或串流化操作的有效实现可能是必要的。在复 制操作的情况下,仅发送数据的源节点可以实现单个psc。以类似的方式, 仅接收数据的目的地节点可以实现单个psc。接收和发送数据的中间计算节 点也可以实现单个psc来实现串行操作。然而,通过在中间计算节点上使用 两个或更多个的psc可以提高性能,这将参考图6-图9中的示例进行解释。 在串流化操作的情况下,源节点和目的地节点同样可以各自实现单个psc。 然而,中间计算节点可能需要为每个源节点实现psc,以便维护用于串流化 的资源。这样,psc的数量可以随着源节点的数量而缩放。或者,为了避免 每个源端点需要psc,中间计算节点可以使用专用指令来实现多个串流,以 使用来自不同源节点的数据。例如,实现“合并”序列的虚拟串流可以按照类 似于复制操作的指令序列进入源节点。
由psc#3复制到串流(3)。在第二时间步骤中,来自串流(1)的数据可以由 psc#1复制到串流(4),来自串流(2)的数据可以由psc#2复制到串流(5), 并且来自串流(3)的数据可以由psc#3复制到串流(6)。在随后的时间步骤 中,psc#1可以具有收集多个令牌的指令,例如从psc#2和psc#3接收的令 牌。在同一时间步骤中,psc#2和psc#3又可以有向psc#1发送令牌的指 令。令牌可以指示数据准备好了,该数据是需要的,串流准备好接收数据,或 者以其他方式促进计算节点的不同元件之间或者不同计算节点之间的通信。 在随后的时间步骤中,psc#1可以具有将串流(4)、(5)和(6)的内容复制 到串流(7)中的指令。这样,数据a1-a3最终被psc#1结合。在随后的时 间步骤中,psc#1可以具有向其他psc多播的指令。例如,多播发送令牌可 以被发送到psc#2和psc#3。在同一时间步骤中,psc#2和psc#3可以具有 等待从psc#1接收令牌的指令。令牌可用于通知psc数据已准备好。在随后 的时隙中,psc#1可以具有将串流(7)的内容复制到串流(10)中的指令, psc#2可以具有将串流(7)复制到串流(8)中的指令,并且psc#3可以具 有将串流(7)复制到串流(9)中的指令。这样,数据可以被传送到与数据 b1-b3相关联的目的地节点。
67.通过执行低级别指令,psc能够引导数据的流通过叠加图的不同串流或 节点。指令的调度可以由与计算节点相关联地工作的模块来编译,并被分配 给计算节点或计算节点内的psc。
68.图7示出了多个计算节点的网络叠加图的基于复制的执行的示例,每个 计算节点包括psc。图7示出了多个计算节点的示意图700,每个计算节点 包括psc。在图7的示例中,计算节点是多核处理器中的核。如图所示,叠 加图203的多个串流或节点被映射到不同核中的不同psc上。如前所述,可 以为psc/核分配低级别指令调度来执行该图。下面的表2提供了图7中psc 的指令的调度的示例。
69.70.[0071][0072]
表2:存储器复制-多核-指令的调度
[0073]
与前面的示例一样,指令可以包括发送或接收令牌、从一个串流复制到 另一个串流等。图7中的多核处理器的示例可以包括未参考图6中的单个计 算节点公开的附加指令。例如,现在可能需要远程复制来将数据从一个核发 送到另一个核。以这种方式,可以执行如图6的示例中的本地复制,以将数 据a1复制到串流(1)、a2复制到串流(2)以及a3复制到串流(3)。此外, 可以执行远程复制来发送核3中的串流(1)到串流(4)、核3中的串流(3) 到串流(5)以及核3中的串流(3)到串流(6)。这样,在多核处理器或多个 计算节点的示例中,本地副本和远程副本的指令可以是低级别指令的调度的 一部分,其中psc由不同的计算节点实现。一旦核3接收到所有数据,核3 就可以有指令将串流(4)、(5)和(6)合并到串流(7)中。这样,来自多个 源的数据可以在转发到目的地之前进行结合。核3还可以具有指令,例如经 由远程复制指令将合并的数据发送到目的地核。这样,串流(7)可以被复制 到核4中的串流(8)、核5中的串流(9)和核6中的串流(10)。然后,目 的地核可以向处理管线发送令牌。例如,核4可以发送指示b1与串流(8) 相关联的令牌。处理管线可以例如通过参考存储器中与串流(8)相关联的位 置来定位数据。
[0074]
在本发明的特定实施例中,通过在中间核中具有一个以上的psc,可以 实现改进的性能和进一步的并发性。例如,在前面的示例中,核3上的第二 个psc可以被提供来从核0、1和2接收下一组缓冲器,同时psc#1向核4、 5和6发送初始缓冲器。图8a示出了网络叠加图800的三个连续实例。图8b 示出了多个计算节点的网络叠加图的基于复制的执行的示例,其中在中间计 算节点中有两个psc来实现双缓冲。与前面的示例一样,计算节点是多核处 理器中的核。
[0075]
网络叠加图800包括可用于将缓冲器中的数据从a1-a3传输到b1-b3的 附加节点分支。网络叠加图的独立分支可以由网络叠加层独立实现。如框图 810所示,中间核3包括
两个psc。通过能够同时管理一个以上的缓冲器,这 可以允许中间核同时进行接收和发送操作。在示出的示例中,通过将串流(1)、 (2)和(3)复制到串流(4)、(5)和(6)中,第一组缓冲器如在前面的示 例中那样被传输,这些串流被合并到串流(7)中并被多播到目的地核4、5和 6。然后,目的地核可以分别通过串流(8)、(9)和(10)接收数据。同时, 当串流(7)仍由核3中的psc#1管理时,核3中的psc#2可以通过将串流 (11)、(12)和(13)分别复制到串流(14)、(15)和(16)中来开始接收第 二组缓冲器。然后,串流(14)、(15)和(16)可以由核3中的psc#2结合 成串流(17),并多播到目的地核4、5和6。然后,目的地核可以分别通过串 流(18)、(19)和(20)接收数据。同时,当串流(17)仍由核3中的psc#2 管理时,核3中的psc#1可以通过将串流(21)、(22)和(23)分别复制到 串流(24)、(25)和(26)中来开始接收第三组缓冲器。然后,串流(24)、 (25)和(26)可以由核3中的psc#1结合成串流(27),并多播到目的地核 4、5和6。然后,目的地核可以分别通过串流(28)、(29)和(30)接收数 据。与前面的示例一样,每个psc可以遵循指令的调度,以便按照预期执行 图。在图8a和图8b的示例中,通过实现双缓冲,可以实现更高的性能水平, 因为中间核中的串行执行可以通过接收和发送操作的同时执行来优化。双缓 冲方法的优点在于,它允许系统增加叠加图的目的地节点的数据消耗,并通 过应用数据流图最大化计算和数据传输的重叠。
[0076]
图9示出了多个计算节点的网络叠加图的基于串流化的执行的示例,每 个计算节点具有不同数量的psc。图900示出了核1、2、3、4、5和6,每个 核具有单个psc,并且核3具有四个psc。核3可以是中间核。在这个示例 中,“推送”和“串流”指令可以被给予psc,以便执行该图。下面的表3a-表3b 提供了图9中psc的指令的调度的示例。
[0077][0078]
表3a:串流化-核0到核2-指令的调度
[0079][0080]
表3b:串流化-核3-指令的调度
[0081][0082][0083]
表3c:串流-核4到核6-指令的调度
[0084]
如上表所示,核0可以有将a1分组推送到串流(1)的指令。a1或任 何要传输的数据可以包括多个分组。在串流化操作中,串流不需要存储完整 的缓冲器,只需启动单个分组即可。目的地可以逐个分组(packet-by-packet) 处理。因此,即使整个过渡包括多个分组,串流也可以在缓冲器中单个分组 的水平上工作。
[0085]
参考图9的示例,核0可以具有将a1分组推送到串流(1)的指令,以 及在核3中将分组从串流(1)串流化到串流(4)的指令。以类似的方式, 核1可以具有将a2分组推到串流(2)并将分组从串流(2)串流化到核3中 的串流(5)的指令。以类似的方式,核2可以具有将a3分组推送到串流(3) 以及在核3中将分组从串流(3)串流化到串流(6)的指令。反过来,核3可 以具有将分组从串流(4)、(5)和(6)串流化到串流(7)的指令。这样,来 自不同源的数据可以在转发到目的地之前进行结合。来自串流(4)、(5)和 (6)的串流化由核3中的三个不同的psc管理,每个源串流一个psc。核4 中的附加psc可以具有指令,以通过将来自串流(4)、(5)和(6)的所有分 结合并为串流7并多播到核4中的串流(8)、核5中的串流(9)和核6中的 串流(10)来串流化它们。核4、5和6又可以具有指令来分别将分组从核3 中的串流(7)串流化到串流(8)、(9)和(10),并且分别从串流(8)、(9) 和(10)传递b1、b2和b3分组。如所见,串流化示例最大限度地减少了执 行叠加图所需的时间步骤,并且可以允许数据尽可能快地流过该图,但这是 高度资源密集型的。
[0086]
图6-图8中的示例用于说明参考图5描述的一般方法的不同示例性实 现。在不同的示例中,数据从源节点提供给中间节点,由中间节点结合,并多 播到目的地节点。尽管前面描述的图6-图9中的示例涉及对过程的每个步骤 使用相同类型的操作来执行网络叠加图,如存储器复制或串流化操作,但是 这些操作可以在相同网络叠加图的执行中结合,并且数据的过渡可以在相同 图的执行中以多种方式发生。
[0087]
虽然已经参照本发明的具体实施例详细描述了说明书,但是应当理解, 本领域技术人员在理解了前述内容后,可以容易地想到这些实施例的变更、 变化和等同物。例如,尽管本公开中的示例主要指的是作为多核处理器中的 核的计算节点,但是计算节点可以是通用处理核、图形处理器、神经网络加 速器或在复杂计算的并行执行中使用的任何其他计算节点。虽然复制和串流 化操作被公开为与复制和串流指令相关联,但是多个其他指令可以被分配给 psc,以便执行叠加图。本文公开的任何方法都可以由处理器结合存储用于这 些方法的指令的计算机可读介质来执行。在不脱离本发明的范围的情况下, 本领域技术人员可以实施本发明的这些和其他修改和变化,本发明的范围在 所附权利要求中更具体地阐述。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1