一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用具有一对多光交换机的光网络的可重新配置的计算平台的制作方法

2022-09-03 12:47:54 来源:中国专利 TAG:

使用具有一对多光交换机的光网络的可重新配置的计算平台
本技术为下述申请的分案申请,原申请的申请号:202010617949.1原申请的申请日:2020年7月1日,原申请的发明名称:使用具有一对多光交换机的光网络的可重新配置的计算平台


背景技术:

1.一些计算工作量(例如机器学习训练)需要大量的处理节点来有效地完成工作量。处理节点可以通过互连网络彼此通信。例如,在机器学习训练中,处理节点可以相互通信以收敛于最优的深度学习模型。互连网络对于处理单元实现收敛的速度和效率是关键的。
2.由于机器学习和其它工作工作量在尺寸和复杂性上变化,包括多个处理节点的超级计算机的刚性结构可以限制超级计算机的可用性、可伸缩性和性能。例如,如果具有连接特定处理节点排列的刚性互连网络的超级计算机的一些处理节点发生故障,则超级计算机可能不能替换这些处理节点,从而导致可用性和性能降低。一些特定的排列也可以导致比其它排列更高的性能,而与故障节点无关。


技术实现要素:

3.本说明书描述了涉及可重新配置的计算节点的超级平台(superpod)的技术,使用光网络从超级平台生成工作量集群。
4.通常,本说明书中描述的主题的一个创新方面可以体现在包括接收指定计算工作量的所请求的计算节点的请求数据的方法中。请求数据指定计算节点的目标排列。从包括一组构建块的超级平台中选择所述构建块的子集,所述一组构建块中的每个构建块包括m维度排列的计算节点。每个构建块连接到光网络,该光网络包括用于m维中的每一维的两个或更多个光路交换(ocs)交换机。对于m个维度中的每个维度,每个构建块包括一段或多段沿着维度互连的计算节点。每个段包括在所述段的第一端上的第一计算节点和在所述段的与所述第一端相对的第二端上的第二计算节点。对于m维中的每一维,第一计算节点的第一部分连接到用于该维的两个或更多个ocs交换机中的第一ocs交换机,第一计算节点的一个或多个附加部分连接到用于该维的两个或更多个ocs交换机中的相应附加ocs交换机,并且每个段的第二计算节点连接到具有输入和多个输出的相应一对多光交换机的输入。第一输出连接到第一ocs交换机,并且对于第一计算节点的每个附加部分,相应的附加输出连接到用于第一计算节点的附加部分的附加ocs交换机。确定与计算节点的目标排列相匹配的计算节点的子集的逻辑排列。对于m维中的每一维,逻辑排列限定每个构建块的段与一个或多个其它构建块的对应段之间的连接。生成计算节点的工作量集群,其包括构建块的子集并且基于逻辑排列彼此连接。生成包括为工作量集群的每个维度配置用于维度的两个或更多个ocs交换机中的每一个的相应路由数据。用于工作量集群的每个维度的相应路由数据指定计算工作量的数据如何沿着工作量集群的维度在计算节点之间路由。所述生成还包括基于所述逻辑排列来配置所述一对多交换机的至少一部分,使得每一段计算节点中的所述第
二计算节点连接到与所述逻辑排列中所述第二计算节点所连接到的对应段的对应第一计算节点相同的ocs交换机。使所述工作量集群的计算节点执行所述计算工作量。这个和其它方面的其它实施方式包括被配置成执行在计算机存储设备上编码的方法的动作的相应系统,方法和计算机程序。一个或多个计算机的系统可以借助于安装在系统上的软件,固件,硬件或它们的组合来配置,使得在操作中使系统执行动作。一个或多个计算机程序可以通过指令来配置,所述指令在由数据处理装置执行时使所述装置执行所述动作。
5.这些和其它实施方式可以各自可选地包括一个或多个以下特征。在一些方面中,基于逻辑排列来配置一对多交换机的至少一部分,使得计算节点的每一段的第二计算节点连接到与逻辑排列中第二计算节点所连接到的相应段的对应第一计算节点相同的ocs交换机,所述配置可包括针对子集中的第一构建块识别子集中沿着特定维度与第一构建块相邻的第二构建块,以及对于沿着特定维度的第一构建块的每一段,识别第二构建块的对应段,识别第二构建块的对应段的第一计算节点所连接的ocs交换机,以及配置该段所连接的一对多交换机,以将该段的第二计算节点连接到所识别的ocs交换机。
6.在一些方面中,识别所述第二构建块的所述对应段包括识别所述第二构建块的段,所述第二构建块的所述段在所述逻辑排列中沿着所述特定维度、沿着与所述第一构建块的所述段相同的逻辑轴。
7.在一些方面,第一计算节点的一个或多个附加部分是第一计算节点的一个附加部分,一对多光交换机是具有一个输入和两个输出的一对二光交换机;所述第一计算节点的第一部分包括所述第一计算节点的一半,所述第一计算节点的附加部分包括所述第一计算节点的一半。
8.在一些方面中,请求数据指定不同类型的计算节点,且选择构建块的子集包含针对由请求数据指定的每一类型的计算节点选择包含指定类型的一个或多个计算节点的构建块。
9.在一些方面中,用于超级平台的每一维度的相应路由数据可包括用于维度的两个或更多个ocs交换机中的每一个ocs交换机的ocs交换机路由表。在一些方面中,每一构建块可包括计算节点的三维环面或计算节点的网格中的一个。
10.在一些方面中,超级平台包括多个工作量集群,且每一工作量集群包括构建块的不同子集,且执行与每个其它工作量集群不同的工作量。
11.一些方面包括接收指示工作量集群的给定构建块已发生失效的数据,以及用可用构建块替换给定构建块。用可用构建块替换给定构建块可以包括更新所述光网络的一个或多个光路交换机的路由数据,以停止在所述工作量集群中的所述给定构建块与一个或多个其他构建块之间路由数据,以及更新所述光网络的所述一个或多个光路交换机的路由数据,以在所述工作量集群中的所述可用构建块与所述一个或多个其他构建块之间路由数据。在一些方面,计算节点的目标排列包括计算节点的n维排列,其中n大于或等于2。
12.本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。使用光网络为工作量动态配置计算节点的集群导致计算节点的较高可用性,因为其它计算节点可以容易地代替故障的或离线计算节点。可以从包括连接到光网络的计算节点的超级平台配置工作量集群。计算节点排列的灵活性导致计算节点的更高性能和更有效地分配针对每个工作量优化(或改进)的适当数量和排列的计算节点。利用包括使用光网络连
接的多种类型的计算节点的超级平台,可以生成工作量集群,该工作量集群不仅包括适当数量和排列的计算节点,还包括用于每个工作量的适当类型的计算节点,例如,而不仅仅限于在数据中心或其它位置中彼此物理接近的计算节点。
13.使用光网络为工作量配置工作量集群还为工作量提供了故障隔离和更好的安全性。例如,一些传统的超级计算机在组成超级计算机的各种计算机之间路由流量。如果其中一台计算机发生故障,该通信路径将丢失。使用光网络,数据可以被快速地重新路由和/或可用的计算节点可以替换(例如,代替)故障的计算节点。例如,通过重新配置光路交换(ocs)交换机,可以将超级平台中的另一个计算节点连接到工作量集群中的其它计算节点。此外,由ocs交换机提供的工作量之间的物理隔离(例如,不同光路径的物理隔离)与使用易受攻击的软件来管理分离相比,提供了在同一超级平台中执行的各种工作量之间的更好的安全性。
14.相对于分组交换网络,使用光网络连接构建块还可以减少在构建块之间传输数据的等待时间。例如,在分组交换中,由于分组需要由交换机接收、缓冲和在另一个端口上再次发送,因此存在额外的等待时间。使用ocs交换机来连接构建块提供了真正的端到端光路径,而中间没有分组交换或缓冲。
15.在光网络中可以包括一对多光交换机,以增加用于给定大小的ocs交换机的超级平台的尺寸。这又允许从用于给定大小的ocs交换机的超级平台的计算节点生成更大的工作量集群。类似地,对于给定大小的超级平台,使用一对多光交换机可以减少在每个ocs交换机上使用的ocs端口的数量。
16.下面将参照附图描述前述主题的各种特征和优点。根据本文所述的主题和权利要求书,其它特征和优点是显而易见的。
附图说明
17.图1是其中示例性处理系统生成计算节点的工作量集群并使用工作量集群执行计算工作量的环境的框图。
18.图2示出了示例性逻辑超级平台和从超级平台中的构建块的一部分生成的示例性工作量集群。
19.图3示出了示例性构建块和使用该构建块生成的示例性工作量集群。
20.图4示出了从计算节点到光路交换(ocs)交换机的示例光链路。
21.图5示出了用于形成构建块的逻辑计算托盘。
22.图6示出了省略了一个维度的示例性构建块的子块。
23.图7示出了示例性构建块。
24.图8示出了用于超级平台的ocs结构拓扑。
25.图9示出了示例超级平台的组件。
26.图10是示出用于生成工作量集群并使用该工作量集群执行计算工作量的示例性过程的流程图。
27.图11是示出用于重新配置光网络以替换失效的构建块的示例性过程的流程图。
28.图12示出了包括构建块和1
×
2光交换机的示例超级平台的一部分。
29.图13示出了示例性工作量集群。
30.图14是示出用于生成工作量集群并使用该工作量集群执行计算工作量的示例性过程的流程图。
31.在各个附图中相同的附图标记和标号表示相同的元件。
具体实施方式
32.通常,这里描述的系统和技术可以配置光网络结构,以从超级平台生成计算节点的工作量集群,该超级平台包括经由光网络连接的计算节点的多个构建块。例如,超级平台可以包括一组互连的构建块。每个构建块可以包括m维排列(例如二维或三维排列)的多个计算节点。
33.用户可以为特定工作量指定计算节点的目标排列。例如,用户可以提供机器学习工作量,并指定计算节点的目标排列以进行机器学习计算。目标排列可以定义n个维度中的每个维度的计算节点的数目,例如,其中n大于或等于2。也就是说,目标排列可以定义工作量集群的大小和形状。例如,一些机器学习模型和计算在非正方形拓扑上表现得更好。
34.横截面带宽也可以成为对整个计算的限制,例如,等待数据传输的计算节点留下了空闲计算周期。根据工作是如何在计算节点上分配的,以及在不同维度上需要通过网络传送多少数据,工作量集群的形状可能对工作量集群中的计算节点的性能有影响。
35.对于将具有所有计算节点到所有计算节点数据流量的工作量,立方体形工作量集群将减少计算节点之间的跳跃(hop)数。如果工作量具有大量的本地通信,然后在特定维度中将数据传送到相邻组的计算节点,并且工作量调用链接在一起的许多这些相邻通信,则工作量可以受益于在特定维度中具有比在其它维度中更多的计算节点的排列。因此,使用户能够指定工作量集群中的计算节点的排列允许用户指定可以导致其工作量的更好性能的排列。
36.如果不同类型的计算节点被包括在超级平台中,则该请求还可以指定每种类型的计算节点被包括在工作量集群中的数目。这允许用户指定对于特定工作量执行得更好的计算节点的排列。
37.工作量调度器可以例如基于构建块的可用性、构建块的健康状况(例如,工作或失效)和/或超级平台中的工作量的优先级(例如,由超级平台的计算节点执行或将由超级平台的计算节点执行的工作量的优先级)来选择用于工作量集群的构建块。工作量调度器可以向光路交换(ocs)管理器提供识别所选择的构建块和构建块的目标排列的数据。然后,ocs管理器可以配置光网络的一个或多个ocs交换机,以将构建块连接在一起,从而形成工作量集群。然后,工作量调度器可以在工作量集群的计算节点上执行计算工作量。
38.如果工作量集群中的一个构建块失效,则通过简单地重新配置ocs交换机,可以快速地用另一个构建块替换失效的构建块。例如,工作量调度器可以选择超级平台中的可用构建块来替换失效的构建块。工作量调度器可以指示ocs管理器用所选择的构建块替换失效的构建块。然后,ocs管理器可以重新配置ocs交换机,使得所选择的构建块被连接到工作量集群的其它构建块,并且使得失效的构建块不再被连接到工作量集群的构建块。
39.图1是环境100的框图,其中示例性处理系统130生成计算节点的工作量集群并使用工作量集群执行计算工作量。处理系统130可通过数据通信网络120(例如,局域网(lan),广域网(wan),因特网,移动网络或其组合)从用户装置110接收计算工作量112。示例工作量
112包括软件应用,机器学习模型(例如,训练和/或使用机器学习模型),编码和解码视频以及数字信号处理工作量等。
40.用户还可以为工作量112指定计算节点的所请求集群114。例如,用户可以指定计算节点的所请求集群的集群的目标形状和大小。也就是说,用户可以在多个维度上指定计算节点的数量和计算节点的形状。例如,如果计算节点分布在三个维度x,y和z上,则用户可以在每个维度中指定多个计算节点。用户还可以指定一种或多种类型的计算节点包括在集群中。如下所述,处理系统130可以包括不同类型的计算节点。
41.如下所述,处理系统130可以使用构建块来生成与该集群的目标形状和大小相匹配的工作量集群。每个构建块可以包括以m维(例如,3维或其他适当数量的维)排列的多个计算节点。因此,用户可以根据多维中的每一维中的构建块的数量来指定目标形状和尺寸。例如,处理系统130可以向用户设备110提供使用户能够在每个维度中选择最大数量的构建块的用户界面。
42.用户设备110可以向处理系统130提供工作量112和指定所请求集群114的数据。例如,用户设备110可以通过网络120向处理系统130提供请求数据,该请求数据包括工作量112和指定所请求集群114的数据。
43.处理系统130包括单元调度器140和一个或多个单元150。单元150是一组一个或多个超级平台。例如,所示的单元150包括四个超级平台152-158。每个超级平台152-158包括一组构建块160,在本文中也称为构建块池。在该示例中,每个超级平台152-158包括64个构建块160。然而,超级平台152-158可包括其它数量的构建块160,例如20、50、100或另一适当的数量。超级平台152-158还可以包括不同量的构建块160。例如,超级平台152可以包括64个构建块,而超级平台154包括100个构建块。
44.如下面更详细描述的,每个构建块160可以包括逻辑上排列在两个或更多个维度中的多个计算节点。例如,构建块160可以包括64个计算节点,这些计算节点沿着三个维度排列,每个维度中有四个计算节点。这种计算节点的排列在本文中被称为4
×4×
4构建块,沿着x维有四个计算节点,沿着y维有四个计算节点并且沿着z维有四个计算节点。其他数量的维度(例如两个维度)以及每个维度中的其他数量的计算节点也是可能的,例如3
×
1,2
×2×
2,6
×
2,2
×3×
4等。
45.构建块还可以包括单个计算节点。然而,如下所述,为了生成工作量集群,构建块之间的光链路被配置成将构建块连接在一起。因此,尽管较小的构建块(例如,具有单个计算节点的构建块)可以在生成工作量集群时提供更大的灵活性,但是较小的构建块可能需要更多的ocs交换机配置和更多的光网络组件(例如,电缆和交换机)。构建块中的计算节点的数目可以基于工作量集群的期望灵活性和将构建块连接在一起以形成工作量集群的需求与所需的ocs交换机的数目之间的折衷来选择。
46.构建块160的每个计算节点可以包括专用集成电路(asic),例如用于机器学习工作量的tensor处理单元(tpu),图形处理单元(gpu)或其它类型的处理单元。例如,每个计算节点可以是包括处理单元的单个处理器芯片。
47.在一些实施方式中,超级平台中的所有构建块160具有相同的计算节点。例如,超级平台152可以包括64个构建块,每个构建块具有用于执行机器学习工作量的4
×4×
4排列的64个tpu。超级平台还可以包括不同类型的计算节点。例如,超级平台154可以包括具有
tpu的60个构建块和具有执行除机器学习工作量之外的任务的专用处理单元的4个构建块。以这种方式,用于工作量的工作量集群可以包括不同类型的计算节点。超级平台可以包括超级平台中的每种类型的计算节点的多个构建块,用于冗余和/或允许多个工作量在超级平台中运行。
48.在一些实施方式中,超级平台中的所有构建块160具有相同的排列,例如相同的尺寸和形状。例如,超级平台152的每个构建块160可以具有4
×4×
4的排列。超级平台还可以具有不同排列的构建块。例如,超级平台154可以具有32个4
×4×
4排列的构建块和32个16
×8×
16排列的构建块。不同的构建块排列可以具有相同或不同的计算节点。例如,具有tpu的构建块可以具有与具有gpu的构建块不同的排列。
49.超级平台可以具有不同层级的构建块。例如,超级平台152可以包括具有4
×4×
4排列的基本级构建块。超级平台152还可以包括具有更多计算节点的中间级构建块。例如,中间级构建块可以具有8
×8×
8的排列,例如,由8个基本级构建块构成。以这种方式,与基本层构建块被连接以生成更大的工作量集群相比,可以使用具有更少链路配置的中间级构建块来生成更大的工作量集群。在超级平台中还具有基本级构建块为较小的工作量集群提供了灵活性,该较小的工作量集群可能不需要中间级构建块中的计算节点的数量。
50.单元150内的超级平台152-158可在构建块中具有相同或不同类型的计算节点。例如,单元150可以包括具有tpu构建块的一个或多个超级平台以及具有gpu构建块的一个或多个超级平台。构建块的尺寸和形状在单元150的不同超级平台152-158中也可以相同或不同。
51.每个单元150还包括共享数据存储器162和共享辅助计算组件164。单元150中的每个超级平台152-158可使用共享数据存储器162,以例如存储由在超级平台152-158中执行的工作量生成的数据。共享数据存储器162可以包括硬盘驱动器,固态驱动器,闪存和/或其它适当的数据存储设备。共享辅助计算组件164可包括在单元150内共享的cpu(例如,通用cpu机器),gpu和/或其它加速器(例如,视频解码,图像解码等)。辅助计算组件164还可包括存储装置,存储器装置和/或可由计算节点通过网络共享的其它计算组件。
52.单元调度器140可以为从用户设备110接收的每个工作量选择单元150和/或单元150的超级平台152-158。单元调度器140可基于为工作量指定的目标排列、超级平台152-158中的构建块160的可用性以及超级平台152-158中的构建块的健康状况来选择超级平台。例如,针对工作量,单元调度器140可以选择包括至少足够数量的可用的且健康的构建块的超级平台,以生成具有目标排列的工作量集群。如果请求数据指定了计算节点的类型,则单元调度器140可以选择具有至少足够数量的具有指定类型的计算节点的可用的且健康的构建块的超级平台。
53.如下所述,每个超级平台152-158还可以包括工作量调度器和ocs管理器。当单元调度器140选择单元150的超级平台时,单元调度器140可以向该超级平台150的工作量调度器提供工作量和指定所请求集群的数据。如下面更详细描述的,工作量调度器可以基于构建块的可用性和健康度以及可选地基于超级平台中的工作量的优先级,从超级平台的构建块中选择一组构建块来连接以形成工作量集群。例如,如下所述,如果工作量调度器接收到对工作量集群的请求,该工作量集群包括比超级平台中健康且可用的构建块的数量更多的构建块,则工作量调度器可以将较低优先级工作量的构建块重新分配给所请求的工作量集
群。工作量调度器可以向ocs管理器提供标识所选择的构建块的数据。然后,ocs管理器可以配置一个或多个ocs交换机,以将构建块连接在一起,从而形成工作量集群。然后,工作量调度器可以在工作量集群的计算节点上执行工作量。
54.在一些实施方式中,例如,当为工作量选择超级平台152-158时,单元调度器140平衡各个单元150和超级平台152-158之间的负载。例如,当在具有用于工作量的构建块的能力的两个或更多个超级平台之间进行选择时,单元调度器140可以选择具有最大能力的超级平台,例如,最大可用且健康的构建块,或者具有最大总能力的单元的超级平台。
55.在一些实施方式中,单元调度器140还可以确定用于工作量的目标排列。例如,单元调度器140可以基于估计的工作量的计算需求和一个或多个类型的可用计算节点的吞吐量来确定构建块的目标排列。在该示例中,单元调度器140可以将所确定的目标排列提供给超级平台的工作量调度器。
56.图2示出了示例逻辑超级平台210和从超级平台210中的一部分构建块生成的示例工作量集群220,230和240。在该示例中,超级平台210包括64个构建块,每个构建块具有4
×4×
4的排列。尽管在本文件中描述的许多示例是根据4
×4×
4构建块来描述的,但是相同的技术也可以应用于构建块的其它排列。
57.在超级平台210中,用阴影线表示的构建块被分配给工作量,如下所述。用实心白色表示的构建块是健康的可用构建块。用实心黑色表示的构建块是不健康的节点,其例如由于故障而不能用于生成工作量集群。
58.工作量集群220是8
×8×
4的平台,其包括来自超级平台210的4
×4×
4构建块中的4个。也就是说,工作量集群220具有沿着x维的八个计算节点,沿着y维的八个计算节点,以及沿着z维的四个计算节点。由于每个构建块沿着每个维度具有四个计算节点,因此工作量集群220包括沿着x维度的两个构建块,沿着y维度的两个构建块,以及沿着z维度的一个构建块。
59.工作量集群220的四个构建块用对角阴影线示出,以示出它们在超级平台210中的位置。如图所示,工作量集群220的构建块彼此不相邻。如下面更详细地描述的,光网络的使用使得能够从超级平台210中的工作量集群的任何组合生成工作量集群,而不管它们在超级平台210中的相对位置。
60.工作量集群230是包括超级平台210中的8个构建块的8
×8×
8平台。具体而言,工作量集群包括沿着每个维度的两个构建块,其向工作量集群230提供沿着每个维度的八个计算节点。工作量集群230的构建块用竖直阴影线示出,以示出它们在超级平台210中的位置。
61.工作量集群240是包括超级平台210中的32个构建块的16
×8×
16平台。特别地,工作量集群240包括沿着x维的四个构建块,沿着y维的两个构建块,以及沿着z维的四个构建块,这为工作量集群提供了沿着x维的16个计算节点,沿着y维的八个计算节点,以及沿着z维的16个计算节点。工作量集群240的构建块用交叉阴影线示出,以示出它们在超级平台210中的位置。
62.工作量集群220,230和240仅仅是可以为工作量生成的超级平台210的集群的一些示例。工作量集群的许多其它排列也是可能的。尽管示例性工作量集群220,230和240具有矩形形状,但其它形状也是可能的。
63.包括工作量集群220,230和240的工作量集群的形状是逻辑形状而不是物理形状。光网络被配置成使得构建块沿着每个维度通信,就好像工作量集群在逻辑配置中物理地连接一样。然而,物理构建块及其对应的计算节点可以以各种方式物理地排列在数据中心中。工作量220,230和240的构建块可以从任何健康的可用构建块中选择,而不限制超级平台210中的构建块之间的物理关系,除了构建块都连接到超级平台210的光网络。例如,如上所述和图2所示,工作量集群220,230和240包括物理上不相邻的构建块。
64.此外,工作量集群的逻辑排列不受超级平台的构建块的物理排列的限制。例如,构建块可以被排列成八行和八列,沿着z维仅有一个构建块。然而,通过配置光网络以创建这种逻辑排列,可以配置工作量集群,使得工作量集群包括沿着z维的多个构建块。
65.图3示出了示例构建块310和使用构建块310生成的示例工作量集群320,330和340。构建块310是沿着每个维度具有四个计算节点的4
×4×
4构建块。在该示例中,构建块310的每个维度包括16个段,每个段中有四个计算节点。例如,在构建块310的顶部有16个计算节点。对于这16个计算节点中的每一个,沿着y维存在包括计算节点和三个其它计算节点的段,三个其它计算节点包括构建块310底部上的对应的最后计算节点。例如,沿着y维的一个段包括计算节点301-304。
66.每段计算节点沿着逻辑轴。例如,计算节点301-304沿着逻辑轴,并且计算节点301-304右侧的四个计算节点沿着不同的逻辑轴。计算节点305-308也沿着不同的逻辑轴。如图3所示,4
×4×
4构建块沿着每个维度具有16个逻辑轴。如下所述,可以使用用于逻辑轴的一个或多个ocs交换机将在相同逻辑轴上的不同构建块的计算节点连接在一起。
67.构建块310内的计算节点可以通过由导电材料(例如,铜电缆)制成的内部链路318彼此连接。可使用内部链路318来连接每一维的每一段中的计算节点。例如,存在将计算节点301连接到计算节点302的内部链路318。还存在将计算节点302连接到计算节点303的内部链路318,以及将计算节点303连接到计算节点304的另一内部链路318。每个其它段中的计算节点可以以相同的方式连接,以便在构建块310的计算节点之间提供内部数据通信。
68.构建块310还包括将构建块310连接到光网络的外部链路311-316。光网络将构建块310连接到其它构建块。在该示例中,构建块310包括用于x维的16个外部输入链接311。也就是说,构建块310包括用于沿着x维的16个段中的每一个段的外部输入链路311。类似地,构建块310包括用于沿x维的每个段的外部输出链路312,用于沿y维的每个段的外部输入链路313,用于沿y维的每个段的外部输出链路314,用于沿z维的每个段的外部输入链路315,以及用于沿z维的每个段的外部输出链路316。由于构建块的一些排列可以具有多于三个的维度,例如环面,其可以具有任何数量的维度,因此构建块310可以包括用于构建块310的每个维度的类似的外部链接。
69.每个外部链路311-316可以是将其计算节点的对应段上的计算节点连接到光网络的光纤链路。例如,每个外部链路311-316可以将其计算节点连接到光网络的ocs交换机。如下所述,光网络可以包括用于每个维度的一个或多个ocs交换机,对于每个维度,构建块310具有段。也就是说,用于x维的外部链路311和312可以连接到与外部链路313和314不同的ocs交换机。ocs交换机可以被配置为将构建块连接到其他构建块以形成工作量集群,如下面更详细描述的。
70.构建块310是4
×4×
4网格排列的形式。对于4
×4×
4(或其它尺寸的构建块),其它
排列也是可能的。例如,构建块310可以是具有环绕式环面链路的三维环面的形式,类似于工作量集群320。工作量集群320也可通过配置光网络以提供环绕式环面链路321-323而从单个网格构建块310产生。
71.环面链路321-323提供每个段的一端与每个段的另一端之间的环绕式数据通信。例如,环面链路321将沿x维的每个段的每个端部处的计算节点连接到段的另一端部处的相应计算节点。环面链路321可以包括将计算节点325连接到计算节点326的链路。类似地,环面链路322可以包括将计算节点325连接到计算节点327的链路。
72.环面链路321-323可以是导电电缆,例如铜电缆,或光链路。例如,环面链路321-323的光链路可将其对应的计算机节点连接到一个或多个ocs交换机。ocs交换机可以被配置成将数据从每个段的一端路由到每个段的另一端。构建块310可以包括用于每个维度的ocs交换机。例如,环面链路321可以连接到第一ocs交换机,该第一ocs交换机在沿着x维的每个段的一端和沿着x维的每个段的另一端之间路由数据。类似地,环面链路322可以连接到第二ocs交换机,该第二ocs交换机在沿着y维的每个段的一端和沿着y维的每个段的另一端之间路由数据。环面链路322可以连接到第三ocs交换机,该第三ocs交换机在沿着z维的每个段的一端和沿着z维的每个段的另一端之间路由数据。
73.工作量集群330包括形成4
×8×
4平台的两个构建块338和339。每个构建块338和339可以与构建块310或工作量集群320相同。两个构建块使用外部链路337沿y方向连接。例如,一个或多个ocs交换机可以被配置为在构建块338的y维段和构建块339的y维段之间路由数据。
74.此外,一个或多个ocs交换机可被配置为沿着所有三个维度在每一段的一端与每一段的另一端之间提供环绕式链路331-333。在该示例中,环绕式链路333将构建块338的y维段的一端连接到构建块339的y维段的一端,从而为由两个构建块338和339的组合形成的y维段提供全环绕式通信。
75.工作量集群340包括形成8
×8×
8集群的8个构建块(一个未示出)。每个构建块348可以与构建块310相同。沿着x维连接的构建块链路使用外部链路345a-345c连接。类似地,沿着y维连接的构建块链路使用外部链路344a-344c连接,并且沿着z维连接的构建块使用外部链路346a-346c连接。例如,一个或多个ocs交换机可以被配置为在x维段之间路由数据,一个或多个ocs交换机可以被配置为在y维段之间路由数据,并且一个或多个ocs交换机可以被配置为在z维段之间路由数据。存在附加的外部链路,每个维度将在图3中未示出的构建块连接到相邻的构建块。此外,一个或多个ocs交换机可以被配置为沿着所有三个维度在每个段的一端和每个段的另一端之间提供环绕式链路341-343。
76.图4示出了从计算节点到ocs交换机的示例光链路400。超级平台的计算节点可以安装在数据中心机架的托盘中。每个计算节点可以包括六个高速电链路。这些电链路中的两个电链路可以连接在计算节点的电路板上,并且四个电链路可以被路由到外部电连接器,例如,八进制小尺寸可插拔(octal small form factor pluggable,osfp)连接器,其连接到端口410,例如,osfp端口。在该示例中,端口410通过电触点412连接到光模块420。如果需要,光模块420可以将电链路转换为光链路,以扩展外部链路的长度,例如扩展到超过一公里(km),以提供大型数据中心中的计算节点之间的数据通信。光模块的类型可以根据构建块和ocs交换机之间所需的长度以及链路的所需速度和带宽而变化。
77.光模块420通过光纤电缆422和424连接到循环器430。光纤电缆422可以包括用于将数据从光模块420传送到循环器430的一个或多个光纤电缆。光纤电缆424可以包括用于从循环器430接收数据的一个或多个光纤电缆。例如,光纤电缆422和424可以包括双向光纤或单向tx/rx光纤对。循环器430可以通过从单向光纤转换为双向光纤来减少光纤电缆的数量(例如,从两对到单对光纤电缆432)。这与ocs交换机440的单个ocs端口445很好地对准,ocs交换机440通常容纳在一起交换的一对光路(2个光纤)。在一些实施方式中,循环器430可以集成到光模块420中或者从光链路400中省略。
78.图5-7示出了如何使用多个计算托盘(tray)形成4
×4×
4构建块。可以使用类似的技术来形成其它尺寸和形状的构建块。
79.图5示出了用于形成4
×4×
4构建块的逻辑计算托盘500。4
×4×
4构建块的基本硬件块是具有2
×2×
1拓扑的单个计算托盘500。在该示例中,计算托盘500具有沿着x维的两个计算节点,沿着y维的两个节点,以及沿着z维的一个节点。例如,计算节点501和502形成x维段,而计算节点503和504形成x维段。类似地,计算节点501和503形成y维段,并且计算节点502和504形成y维段。
80.每个计算节点501-504使用内部链路510(例如铜电缆或印刷电路板上的迹线)连接到两个其他计算节点。每个计算节点还连接到四个外部端口。计算节点501连接到外部端口521。类似地,计算节点502连接到外部端口522,计算节点503连接到外部端口523,并且计算节点504连接到外部端口524。如上所述,外部端口521-524可以是osfp或将计算节点连接到ocs交换机的其它端口。端口可以容纳附接到光纤电缆的电铜或光纤模块。
81.每个计算节点501-504的外部端口521-524具有x维端口、y维端口和两个z维端口。这是因为每个计算节点501-504已经使用内部链路510连接到x维和y维中的另一个计算节点。具有两个z维外部端口允许每个计算节点501-504还连接到沿着z维的两个计算节点。
82.图6示出了省略了一维(z维)的示例性构建块的子块600。特别地,子块600是由2
×
2的计算托盘排列(例如,图5的计算托盘500的2
×
2排列)形成的4
×4×
1块。子块600包括2
×
2排列的四个计算托盘620a-620d。每个计算托盘620a-620d可以与图5的计算托盘500相同,包括2
×2×
1排列的四个计算节点622。
83.计算托盘620a-620d的计算节点622可使用内部链路631-634(例如,铜电缆)连接。例如,计算托盘620a的两个计算节点622使用内部链路632沿着y维连接到计算托盘620b的两个计算节点622。
84.每个计算托盘620a-620d的两个计算节点622也沿着x维连接到外部链路640。类似地,每个计算托盘620a-620d的两个计算节点也沿着y维连接到外部线641。特别地,在每个x维段的末端和每个y维段的末端处的计算节点被连接到外部链路640。这些外部链路640可以是例如使用图4的光链路400将计算节点连接到ocs交换机的光纤电缆,从而将包括计算节点的构建块连接到ocs交换机。
[0085]4×4×
4构建块可以通过将四个子块600沿着z维连接在一起来形成。例如,每个计算托盘620a-620a的计算节点622可以使用内部链路连接到排列在z维中的其他子块600上的计算托盘的一个或两个对应计算节点。每个z维段末端的计算节点可以包括连接到ocs交换机的外部链路640,类似于x维和y维段末端的外部链路。
[0086]
图7示出了示例性构建块700。构建块700包括沿着z维连接的四个子块710a-710d。
每个子块710a-710d可以与图6的子块600相同。图7示出了沿着z维的子块710a-710d之间的一些连接。
[0087]
特别地,构建块700包括沿着z维的子块710a-710d的计算托盘715的对应计算节点716之间的内部链路730-733。例如,内部链路730沿着z维连接计算节点0的一段。类似地,内部链路731沿着z维连接计算节点1的一段,内部链路732沿着z维连接计算节点8的一段,并且内部链路733沿着z维连接计算节点9的一段。尽管未示出,但类似的内部链路连接计算节点2-7和a-f的段。
[0088]
构建块700还包括在沿着z维的每个段的末端处的外部链路720。尽管外部链路720仅针对计算节点0、1、8和9的段示出,但是计算节点2-7和a-f的每个其他段还包括外部链路720。外部链路可以将段连接到ocs交换机,类似于x维和y维段的末端处的外部链路。
[0089]
图8示出了用于超级平台的ocs结构拓扑800。在该示例中,ocs结构拓扑包括用于沿着包括64个构建块805(即,构建块0-63)的超级平台的4
×4×
4构建块的每一维的每一段的单独的ocs交换机。4
×4×
4构建块805包括沿着x维的16个段,沿着y维的16个段和沿着z维的16个段。在该示例中,ocs结构拓扑包括用于x维的16个ocs交换机,用于y维的16个ocs交换机,以及用于z维的16个ocs交换机,总共48个ocs交换机,其可以被配置为生成各种工作量集群。
[0090]
也就是说,ocs结构拓扑包括用于构建块的每个逻辑轴的ocs交换机。在同一逻辑轴上的构建块的段被连接到同一ocs交换机。以这种方式,用于逻辑轴的ocs交换机可以被配置为在创建工作量集群时将沿着逻辑轴的计算节点的段连接在一起,使得沿着逻辑轴的计算节点可以经由用于逻辑轴的ocs交换机彼此通信。如果构建块a将被逻辑地安排在工作量集群中的构建块b的右边,则用于沿x维的逻辑轴的ocs交换机可以被配置为在该逻辑轴上的构建块a的段和该逻辑轴上的构建块b的段之间路由数据。
[0091]
对于x维,ocs结构拓扑800包括16个ocs交换机,包括ocs交换机810。对于沿着x维的每个段,每个构建块805包括外部输入链路811和外部输出链路812,它们连接到用于该段的ocs交换机810。这些外部链路811和812可以与图4的光链路400相同或相似。
[0092]
对于y维,ocs结构拓扑800包括16个ocs交换机,包括ocs交换机820。对于沿着y维的每个段,每个构建块805包括外部输入链路821和外部输出链路822,它们连接到用于该段的ocs交换机810。这些外部链路821和822可以与图4的光链路400相同或相似。
[0093]
对于z维,ocs结构拓扑800包括16个ocs交换机,包括ocs交换机830。对于沿着z维的每个段,每个构建块805包括外部输入链路831和外部输出链路832,它们连接到用于该段的ocs交换机810。这些外部链路821和822可以与图4的光链路400相同或相似。
[0094]
在其它示例中,多个段可以共享相同的ocs交换机,例如,这取决于ocs基数和/或超级平台中的构建块的数量。例如,如果ocs交换机具有足够数量的端口用于超级平台中所有构建块的所有x维段,则所有x维段可以连接到相同的ocs交换机。在另一个示例中,如果ocs交换机具有足够数量的端口,则每个维度的两个段可以共享ocs交换机。然而,通过具有连接到同一ocs交换机的超级平台的所有构建块的相应段,使得能够使用单个路由表在这些段的计算节点之间进行数据通信。此外,为每个分段或每个维度使用单独的ocs交换机可以简化故障排除和诊断。例如,如果在特定的段或维度上存在数据通信的问题,则识别可能有故障的ocs将比如果将多个ocs用于特定的段或维度更容易。
[0095]
图9示出了示例超级平台900的部件。例如,超级平台900可以是图1的处理系统130的超级平台中的一个。示例超级平台900包括64个4
×4×
4构建块960,其可用于生成执行计算工作量(例如,机器学习工作量)的工作量集群。如上所述,每个4
×4×
4构建块960包括32个计算节点,其中四个计算节点沿着三个维度中的每一个维度排列。例如,构建块960可以与上述构建块310,工作量集群320或构建块700相同或类似。
[0096]
示例性超级平台900包括光网络970,该光网络970包括48个ocs交换机930,940和950,这些ocs交换机930,940和950使用用于每个构建块960的96个外部链路931,932和933而连接到构建块。每个外部链路可以是与图4的光链路400类似或相同的光纤链路。
[0097]
光网络970包括用于每个构建块的每个维度的每个段的ocs交换机,类似于图8的ocs结构拓扑800。对于x维,光网络970包括16个ocs交换机950,每个ocs交换机950用于沿着x维的每个段。对于每个构建块960,光网络970还包括用于构建块960的沿着x维的每个段的输入外部链路和输出外部链路。这些外部链路将该段上的计算节点连接到该段的ocs交换机950。由于每个构建块960包括沿着x维的16个段,所以光网络970包括32个外部链路933(即,16个输入链路和16个输出链路),这些链路将每个构建块960的x维段连接到用于这些段的相应ocs交换机950。
[0098]
对于y维,光网络970包括16个ocs交换机930,每个ocs交换机用于沿y维的每个段。对于每个构建块960,光网络970还包括用于构建块960的沿着y维的每个段的输入外部链路和输出外部链路。这些外部链路将该段上的计算节点连接到该段的ocs交换机930。由于每个构建块960包括沿着y维的16个段,所以光网络970包括32个外部链路931(即,16个输入链路和16个输出链路),这些链路将每个构建块960的y维段连接到用于这些段的相应ocs交换机930。
[0099]
对于z维,光网络970包括16个ocs交换机940,每个ocs交换机940用于沿z维的每个段。对于每个构建块960,光网络970还包括用于构建块960的沿着z维的每个段的输入外部链路和输出外部链路。这些外部链路将该段上的计算节点连接到该段的ocs交换机940。由于每个构建块960包括沿着z维的16个段,所以光网络970包括32个外部链路932(即,16个输入链路和16个输出链路),这些链路将每个构建块960的z维段连接到用于这些段的相应ocs交换机940。
[0100]
工作量调度器910可以接收请求数据,该请求数据包括工作量和指定用于执行工作量的所请求集群的构建块960的数据。请求数据还可以包括工作量的优先级。优先级可以以水平表示,例如高、中或低,或数字表示,例如在1-100的范围内或另一个适当的范围内。例如,工作量调度器910可以从用户设备或单元调度器(例如图1的用户设备110或单元调度器140)接收请求数据。如上所述,请求数据可以指定计算节点的目标n维排列,例如包括计算节点的构建块的目标排列。
[0101]
工作量调度器910可以选择一组构建块960以生成与请求数据所指定的目标排列相匹配的工作量集群。例如,工作量调度器910可以在超级平台900中识别一组可用的健康的构建块。可用的健康的构建块是不执行另一个工作量或不是工作量集群的一部分并且未失效的构建块。
[0102]
例如,工作量调度器910可以例如以数据库的形式来维护和更新状态数据,该状态数据指示超级平台中的每个构建块960的状态。构建块960的可用性状态可以指示构建块
960是否被分配给工作量集群。构建块960的健康状态可以指示构建块是工作的还是失效的。工作量调度器910可识别具有可用性状态的构建块960,可用性状态指示构建块960未被分配给工作量且具有健康的工作状态。当构建块960被分配给工作量(例如,用于生成用于该工作量的工作量集群),或者具有健康状态变化(例如,从工作状态变化到失效状态或反之亦然)时,工作量调度器可以相应地更新构建块960的状态数据。
[0103]
从所识别的构建块960中,工作量调度器910可以选择与由目标排列所限定的数量相匹配的构建块960的数量。如果请求数据指定了一种或多种类型的计算节点,则工作量调度器910可以从所识别的构建块960中选择具有所请求的一种或多种类型的计算节点的构建块。例如,如果请求数据指定具有两个tpu构建块和两个gpu构建块的2
×
2排列的构建块,则工作量调度器910可以选择具有tpu的两个可用健康的构建块和具有gpu的两个健康可用的构建块。
[0104]
工作量调度器910还可以基于当前在超级平台中运行的每个工作量的优先级和包括在请求数据中的工作量的优先级来选择构建块960。如果超级平台900没有足够的可用健康的构建块来为所请求的工作量生成工作量集群,则工作量调度器910可以确定在超级平台900中是否存在具有比所请求的工作量低的优先级的任何正在执行的工作量。如果是,则工作量调度器910可以将来自一个或多个较低优先级工作量的工作量集群的构建块重新分配给所请求的工作量的工作量集群。例如,工作量调度器910可以终止较低优先级工作量,延迟较低优先级工作量,或者减小用于较低优先级工作量的工作量集群的大小,以释放构建块,用于较高优先级工作量。
[0105]
工作量调度器910可以简单地通过重新配置光网络(例如,通过如下所述配置ocs交换机)将构建块从一个工作量集群重新分配到另一个工作量集群,使得构建块连接到较高优先级工作量的构建块而不是较低优先级工作量的构建块。类似地,如果较高优先级工作量的构建块失效,则工作量调度器910可以通过重新配置光网络,将用于较低优先级工作量的工作量集群的构建块重新分配给较高优先级工作量的工作量集群。
[0106]
工作量调度器910可以生成按作业配置数据912并将其提供给超级平台900的ocs管理器920。按作业配置数据912可以指定用于工作量的所选择的构建块960以及构建块的排列。例如,如果该排列是2
×
2排列,则该排列包括用于构建块的四个点。按作业配置数据可指定哪一个所选择的构建块960进入在四个点中的每一个。
[0107]
按作业配置数据912可以使用用于每个构建块的逻辑标识符来识别所选择的构建块960。例如,每个构建块960可以包括唯一的逻辑标识符。在特定示例中,64个构建块960可被编号为0-63,且这些编号可为唯一逻辑标识符。
[0108]
ocs管理器920使用按作业配置数据912来配置ocs交换机930,940和/或950,以生成与由按作业配置数据指定的排列相匹配的工作量集群。每个ocs交换机930,940和950包括用于在ocs交换机的物理端口之间路由数据的路由表。例如,假设用于第一构建块的x维段的输出外部链路连接到用于第二构建块的相应x维段的输入外部链路。在该示例中,用于该x维段的ocs交换机950的路由表将指示这些段所连接的ocs交换机的物理端口之间的数据将在彼此之间被路由。
[0109]
ocs管理器920可以维护将每个ocs交换机920,930和940的每个端口映射到每个构建块的每个逻辑端口的端口数据。对于构建块的每个x维段,该端口数据可以指定外部输入
链路连接到ocs交换机950的哪个物理端口以及外部输出链路连接到ocs交换机950的哪个物理端口。端口数据可以包括用于超级平台900的每个构建块960的每个维度的相同数据。
[0110]
ocs管理器920可使用此端口数据来配置ocs交换机930,940和/或950的路由表以产生用于工作量的工作量集群。例如,假设在2
×
1排列中第一构建块将连接到第二构建块,其中第一构建块在x维上在第二构建块的左侧。ocs管理器920将更新用于x维的ocs交换机950的路由表,以在第一构建块和第二构建块的x维段之间路由数据。由于构建块的每个x维段将需要被连接,所以ocs管理器920可以更新每个ocs交换机950的路由表。
[0111]
对于每个x维段,ocs管理器920可以更新用于该段的ocs交换机950的路由表。特别地,ocs管理器920可以更新路由表以将第一构建块的段所连接的ocs交换机950的物理端口映射到第二构建块的段所连接的ocs交换机的物理端口。当每个x维段包括输入和输出链路时,ocs管理器920可以更新路由表,使得第一构建块的输入链路连接到第二构建块的输出链路,并且第一构建块的输出链路连接到第二构建块的输入链路。
[0112]
ocs管理器920可以通过从每个ocs交换机获得当前路由表来更新路由表。ocs管理器920可以更新适当的路由表,并将更新的路由表发送到适当的ocs交换机。在另一示例中,ocs管理器920可以向ocs交换机发送指定更新的更新数据,并且ocs交换机可以根据更新数据来更新它们的路由表。
[0113]
在用更新的路由表配置ocs交换机之后,生成工作量集群。然后,工作量调度器910可以使工作量由工作量集群的计算节点执行。例如,工作量调度器910可以将工作量提供给工作量集群的计算节点以供执行。
[0114]
在完成工作量之后,工作量调度器910可以将用于生成工作量集群的每个构建块的状态更新回可用。工作量调度器910还可以指示ocs管理器920移除用于生成工作量集群的构建块之间的连接。接着,ocs管理器920可以更新路由表,从而移除用于在构建块之间路由数据的ocs交换机的物理端口之间的映射。
[0115]
以这种方式使用ocs交换机来配置光结构拓扑以生成用于工作量的工作量集群,使得超级平台能够以动态和安全的方式托管多个工作量。工作量调度器920可以在接收到新的工作量并且完成工作量时,动态地生成和终止工作量集群。与传统的超级计算机相比,ocs交换机提供的段之间的路由在同一超级平台中执行的不同工作量之间提供了更好的安全性。例如,ocs交换机利用工作量之间的气隙将工作量彼此物理地去耦合。传统的超级计算机使用软件,该软件提供工作量之间的隔离,这对于数据破坏来说更易受影响。
[0116]
图10是示出用于生成工作量集群并使用该工作量集群执行计算工作量的示例性过程1000的流程图。过程1000的操作可由包括一个或多个数据处理装置的系统来进行。例如,过程1000的操作可以由图1的处理系统130进行。
[0117]
系统接收指定计算节点的所请求集群的请求数据(1010)。例如,可以从用户设备接收请求数据。请求数据可以包括计算工作量和指定计算节点的目标n维排列的数据。例如,请求数据可以指定包括计算节点的构建块的目标n维排列。
[0118]
在一些实施方式中,请求数据还可以指定构建块的计算节点的类型。超级平台可以包括具有不同类型的计算节点的构建块。例如,超级平台可以包括90个构建块,每个构建块包括4
×4×
4排列的tpu,超级平台还包括10个专用构建块,其包括2
×
1排列的专用计算节点。请求数据可以指定每种类型的计算节点的构建块的数量以及这些构建块的排列。
[0119]
该系统从包括一组构建块的超级平台中选择用于所请求集群的构建块的子集(1020)。如上所述,超级平台可包括具有三维排列的计算节点(例如,4
×4×
4排列的计算节点)的一组构建块。系统可以选择与目标排列所限定的数量相匹配的构建块的数量。如上所述,系统可选择健康的且可用于所请求集群的构建块。
[0120]
构建块的子集可以是构建块的适当子集。适当的子集是不包括该集合的所有成员的子集。例如,生成与计算节点的目标排列相匹配的工作量集群可能需要少于所有的构建块。
[0121]
该系统生成包括所选择子集的计算节点的工作量集群(1030)。工作量集群可以具有与请求数据所指定的目标排列相匹配的构建块的排列。例如,如果请求数据指定了4
×8×
4排列的计算节点,则工作量集群可以包括被排列为类似于图3的工作量集群330的两个构建块。
[0122]
为了生成工作量集群,系统可以为工作量集群的每个维度配置路由数据。例如,如上所述,超级平台可以包括光网络,该光网络包括用于构建块的每个维度的一个或多个ocs交换机。维度的路由数据可以包括一个或多个ocs交换机的路由表。如上参考图9所述,ocs交换机的路由表可以被配置为沿着每个维度在适当段的计算节点之间路由数据。
[0123]
系统使工作量集群的计算节点执行计算工作量(1040)。例如,系统可以向工作量集群的计算节点提供计算工作量。在执行计算工作量的同时,配置的ocs交换机可以在工作量集群的构建块之间路由数据。尽管计算节点在目标排列中没有物理地连接,但是所配置的ocs交换机可以在构建块的计算节点之间路由数据,就好像计算节点在目标排列中物理地连接一样。
[0124]
例如,一个维度的每个段的计算节点可以通过ocs交换机将数据传送到该段的其他计算节点,这些计算节点在不同的构建块中,就好像该段中的计算节点在单个物理段中物理地连接一样。这与分组交换网络不同,因为工作量集群的这种配置在中间没有分组交换或缓冲的情况下在相应的段之间提供真正的端到端光路径。在分组交换中,由于分组需要由交换机接收、缓冲和在另一个端口上再次发送,因此增加了等待时间。
[0125]
在完成计算工作量之后,例如,通过将构建块的状态更新为可用状态,并将路由数据更新为不再在工作量集群的构建块之间路由数据,系统可以释放构建块,用于其它工作量。
[0126]
图11是示出用于重新配置光网络以替换失效的构建块的示例性过程1100的流程图。过程1100的操作可由包括一个或多个数据处理装置的系统来执行。例如,过程1100的操作可以由图1的处理系统130执行。
[0127]
该系统使工作量集群的计算节点执行计算工作量(1110)。例如,系统可以生成工作量集群,并使计算节点使用图10的过程1000执行计算工作量。
[0128]
系统接收指示工作量集群的构建块已经失效的数据(1120)。例如,如果构建块的一个或多个计算节点失效,则另一组件(例如,监视组件)可确定构建块已经失效,并向系统发送指示构建块已经失效的数据。
[0129]
系统识别可用的构建块(1130)。例如,系统可以在与工作量集群的其它构建块相同的超级平台中识别可用的健康构建块。系统可以基于例如由系统维护的构建块的状态数据来识别可用的健康构建块。
[0130]
系统用所识别的可用的构建块替换失效的构建块(1140)。该系统可以更新连接构建块的光网络的一个或多个ocs交换机的路由数据,以用所识别的可用的构建块替换失效的构建块。例如,系统可以更新一个或多个ocs交换机的路由表,从而移除工作量集群的其他构建块与失效的构建块之间的连接。该系统还可以更新一个或多个ocs交换机的路由表,以将所识别的构建块连接到工作量集群的其它构建块。
[0131]
该系统可以在逻辑上将所识别的构建块排列在失败的构建块点的逻辑点中。如上所述,ocs交换机的路由表可以将连接到构建块的一段的ocs交换机的物理端口映射到连接到另一构建块的相应段的ocs交换机的物理端口。在该示例中,系统可以通过更新到所识别的可用构建块(而不是失效的构建块)的对应段的映射,来进行替换。
[0132]
例如,假设用于失效构建块的特定x维段的输入外部链路连接到ocs交换机的第一端口,并且用于所识别的可用构建块的相应x维段的输入外部链路连接到ocs交换机的第二端口。还假定路由表将第一端口映射到ocs交换机的第三端口,该第三端口连接到另一构建块的相应x维段。为了进行替换,系统可以更新路由表的映射以将第二端口映射到第三端口,而不是将第一端口映射到第三端口。系统可以对失效构建块的每一段执行此操作。
[0133]
如上所述,用于超级平台的光网络结构可以包括用于构建块的每个逻辑轴的一个或多个ocs交换机。4
×4×
4构建块沿着每个维度具有16个逻辑轴。因此,光网络结构可以包括48个ocs交换机,其可以被配置为连接各种逻辑排列的构建块。
[0134]
由于每个构建块的每个段具有到与该段相对应的逻辑轴的ocs交换机的输入连接和输出连接,因此用于每个轴的ocs交换机将具有用于64构建块超级平台的128个端口。因此,在这种配置中,如果每个逻辑轴使用一个ocs交换机,则每个ocs交换机将需要至少128个端口用于64个构建块超级平台。对于用于连接构建块的给定大小(例如,给定端口计数)的ocs交换机,一对多交换机可以用于增加包括在超级平台中的构建块的数量,和/或对于给定大小的ocs交换机,一对多交换机可以用于减少在每个ocs交换机上使用的端口的数量。
[0135]
图12示出了包括构建块1211-1214和1
×
2光交换机1261-1264的示例性超级平台1200的一部分。1
×
2光交换机是具有一个输入和两个输出的示例性一对多光交换机。尽管使用了术语输入和输出,但是光可以在任一方向上穿过交换机,例如,从一个输出到输入以及从输入到一个输出。如下所述,可以使用具有不同数量输出的其它一对多交换机,例如1
×
3光交换机(一个输入和三个输出),1
×
4光交换机(一个输入和四个输出),或其它适当的一对多光交换机。
[0136]
为了清楚起见,该示例示出了位于同一逻辑轴上(沿着x维)的段1221-1224与两个ocs交换机1271和1272的连接。然而,每个逻辑轴上的每个构建块的段可以连接到用于该逻辑轴的两个ocs交换机。例如,段1231-1234可以连接到两个ocs交换机(未示出),段1241-1244可以连接到两个ocs交换机(未示出),并且段1251-1254可以连接到两个ocs交换机(未示出)。沿着x维的每个其它逻辑轴的段,沿着y维的每个其它逻辑轴的段以及沿着z维的每个逻辑轴的段也可以以类似的方式连接到用于该逻辑轴的两个ocs交换机。
[0137]
超级平台1200可包括具有与构建块1211-1214相同配置的其它构建块。例如,超级平台可以包括64个构建块,在图1200中仅示出4个。这些构建块的段可以连接到用于它们的逻辑轴的相应ocs交换机。
[0138]
例如使用光纤电缆,每个段1221-1224的一侧连接到用于该段的相应1
×
2交换机1261-1264的输入。例如使用光纤电缆,每个1
×
2交换机1261-1264的一个输出连接到ocs交换机1271,并且每个1
×
2交换机1261-1264的另一个输出连接到另一个ocs交换机1272。每个构建块的每个段可以在一侧连接到用于该段的1
×
2交换机。可以选择性地调整用于该段的1
×
2交换机,以将段的该侧连接到ocs交换机1271或ocs交换机1272(对于所示的逻辑轴)。对于包括64个具有4
×4×
4结构的构建块的超级平台,该超级平台可以包括3,0721
×
2个交换机,每个构建块的每段有一个交换机。
[0139]
每段的另一侧连接到ocs交换机1271或ocs交换机1272。例如,段1221和1223的另一侧连接到ocs交换机1271,而段1222和1224的另一侧连接到ocs交换机1272。以这种方式,与使用单个ocs端口并且每个构建块的输入和输出连接被连接到一个ocs交换机相比,构建块1211-1214使用ocs交换机1271和1272的更少的端口。例如,存在到ocs交换机1271的六个连接(对于所示的四个构建块)。如果ocs交换机1271是用于包括段1221-1224的逻辑轴的唯一交换机,则将存在到ocs交换机1271的八个连接,四个段1221-1224中的每段有两个连接。ocs交换机1272类似地具有六个连接而不是八个连接。
[0140]
工作量调度器可以通过配置ocs交换机1271和1272(以及用于其他逻辑轴的其他段的ocs交换机)以及用于每个段的1
×
2交换机,来使用构建块1221-1224(和/或超级平台1200的其他构建块)创建工作量集群。如上所述,工作量调度器可以为工作量集群选择构建块,并配置用于ocs交换机的路由表,以在工作量集群中的构建块的段之间路由数据。
[0141]
在该示例中,当沿着给定逻辑轴的每个段被连接到一对ocs交换机时,工作量调度器为每个逻辑轴的每对ocs交换机配置路由表,使得在该逻辑轴上的工作量集群中的构建块的段可以彼此通信。类似地,工作量调度器可以基于段将与之通信的另一构建块的段来设置每个1
×
2交换机,以将其对应的段连接到两个ocs交换机中的一个。
[0142]
例如,假设构建块1211将被逻辑地排列在构建块1213的左侧,如图12所示。在该示例中,段1221将需要能够与段1223通信;段1231将需要与段1233通信;段1241将需要与段1243通信;并且段1251将需要与段1253通信。
[0143]
特别地,段1221,1231,1241和1251右侧的计算节点应该分别连接到段1223,1233,1243和1253左侧的计算节点。例如,段1221右侧的计算节点应该连接到段1223左侧的计算节点。段1221,1231,1241和1251右侧的计算节点连接到它们相应的1
×
2交换机(段1221的交换机1261)的输入端。段1223,1233,1243和1253左侧的计算节点连接到ocs交换机1271。因此,为了分别在段1221,1231,1241和1251的右侧上的计算节点与段1223,1233,1243和1253的左侧上的计算节点之间进行连接,工作量调度器可以为每个段1221,1231,1241和1251配置1
×
2交换机,以将1
×
2交换机的输入连接到输出(o1),该输出(o1)连接到ocs交换机1271。例如,1
×
2交换机1261将被配置为使得输入被路由到连接到ocs交换机1271的输出。由于光可以在两个方向上通过1
×
2交换机传播,所以可以经由1
×
2交换机1261和ocs交换机1271,在段1221右侧的计算节点和段1223左侧的计算节点之间在两个方向上路由数据。
[0144]
如果工作量集群沿着x维仅具有两个构建块(例如,2
×4×
4排列),则段1223,1233,1243和1253右侧的计算节点也应该分别连接到段1221,1231,1241和1251左侧的计算节点。例如,段1223右侧的计算节点应该连接到段1221左侧的计算节点。段1223,1233,1243
和1253右侧的计算节点连接到它们各自的1
×
2交换机(段1223的交换机1263)的输入。段1221,1231,1241和1251左侧的计算节点连接到ocs交换机1271。因此,为了分别在段1223,1233,1243和1253的右侧上的计算节点与段1221,1231,1241和1251的左侧上的计算节点之间进行连接,工作量调度器可以为每个段1223,1233,1243和1253配置1
×
2交换机,以将1
×
2交换机的输入连接到输出(o1),该输出(o1)连接到ocs交换机1271。例如,1
×
2交换机1263将被配置为使得输入被路由到连接到ocs交换机1271的输出(o1)。
[0145]
工作量调度器还可以配置ocs交换机1271,以在对应的段之间路由数据。例如,工作量调度器可以配置ocs交换机1271的路由表,以在段1221和段1223之间路由数据。特别地,工作量调度器可以配置路由表,以将在连接到1
×
2交换机1261的输出o1的端口处接收到的数据路由到被连接到段1223左侧的计算节点的端口。类似地,工作量调度器可以配置路由表,以将在连接到1
×
2交换机1263的输出o1的端口处接收到的数据路由到段1221左侧的计算节点。工作量调度器可以以类似的方式为每个其它段1231,1241,1251及其对应的段1233,1243和1253配置ocs交换机1271的路由表。
[0146]
在另一个示例中,假设构建块1211将被逻辑地安排在构建块1212的左边,而不是构建块1213的左边。在该示例中,段1221将需要能够与段1222通信。段1231将需要与段1232通信,段1241将需要与段1242通信;并且段1251将需要与段1252通信。
[0147]
特别地,段1221,1231,1241和1251右侧的计算节点应该分别连接到段1222,1232,1242和1252左侧的计算节点。段1221,1231,1241和1251右侧的计算节点连接到它们各自的1
×
2交换机(段1221的交换机1261)的输入。然而,段1222,1232,1242和1252左侧的计算节点连接到ocs交换机1272。因此,为了分别在段1221,1231,1241和1251的右侧上的计算节点与段1222,1232,1242和12532的左侧上的计算节点之间进行连接,工作量调度器可以为每个段1221,1231,1241和1251配置1
×
2交换机以将1
×
2交换机的输入连接输出(o2),该到输出(o2)连接到ocs交换机1272。例如,1
×
2交换机1261将被配置为使得输入被路由到连接到ocs交换机1272的输出(o2)。
[0148]
如果工作量集群沿着x维仅具有两个构建块(例如,2
×4×
4排列),则段1222,1232,1242和1252右侧的计算节点应该分别连接到段1221,1231,1241和1251左侧的计算节点。例如,段1222右侧的计算节点应该连接到段1221左侧的计算节点。段1222,1232,1242和1252右侧的计算节点连接到它们各自的1
×
2交换机(段1222的交换机1262)的输入。段1221,1231,1241和1251左侧的计算节点连接到ocs交换机1271。因此,为了分别在段1222,1232,1242和1252的右侧上的计算节点与段1221,1231,1241和1251的左侧上的计算节点之间进行连接,工作量调度器可以为每个段1222,1232,1242和1252配置1
×
2交换机,以将1
×
2交换机的输入连接到输出(o1),该输出(o1)连接到ocs交换机1271。例如,1
×
2交换机1262将被配置为使得输入被路由到连接到ocs交换机1271的输出(o1)。
[0149]
工作量调度器还可以配置ocs交换机1271和1272,以在对应的段之间路由数据。例如,工作量调度器可以配置ocs交换机1272的路由表,以分别将从连接到段1221,1231,1241和1251右侧的计算节点的1
×
2交换机的输出(o2)接收到的数据路由到段1222,1232,1242和1252左侧的计算节点。特别地,工作量调度器可以配置路由表,以将在连接到1
×
2交换机1261的输出(o2)的端口处接收到的数据路由到连接到段1222左侧的计算节点的端口。类似地,工作量调度器可以配置ocs交换机1271的路由表,以将在连接到1
×
2交换机1262的输出
(o1)的端口处接收到的数据路由到段1221左侧的计算节点。工作量调度器可以以类似的方式为每个其它段1231,1241,1251及其对应的段1232,1242和1252配置ocs交换机1271的路由表。
[0150]
如上所述,可以使用其它一对多交换机来代替1
×
2交换机。例如,超级平台可以包括用于每个逻辑轴的三个ocs交换机。在该示例中,每个构建块的每个段的一侧可以连接到具有三个输出的1
×
3交换机的输入。用于一段的1
×
3交换机的三个输出可以连接到对应于该段的逻辑轴的三个ocs交换机。1
×
3交换机和ocs交换机可以以与上述类似的方式配置,以将构建块的段与其它构建块的对应段连接。相对于使用1
×
2交换机和每个逻辑轴两个ocs交换机,使用1
×
3交换机和每个逻辑轴三个ocs交换机,能够对于给定大小的ocs交换机实现更大的超级平台和/或每个ocs交换机使用更少的端口。然而,这也导致构建块的每个逻辑轴有更多的ocs交换机。也可以使用其它一对多交换机,例如1
×
4,1
×
5等,每个逻辑轴的ocs交换机的数量等于一对多交换机的输出的数量。
[0151]
图13示出了示例性工作量集群1300。工作量集群1300是由8个构建块组成的8
×8×
8集群。1311-1317(在构建块1315下方的一个未示出)。每个构建块是4
×4×
4构建块,其具有沿着x维上的16个逻辑轴的16段计算节点,沿着y维上的16个逻辑轴的16段计算节点,以及沿着z维上的16个逻辑轴的16段计算节点。对于这个例子,假设从中创建工作量集群1300的超级平台包括用于每个逻辑轴的两个ocs交换机和用于每个构建块的每个段的相应的1
×
2交换机。
[0152]
工作量调度器可以通过配置ocs交换机和1
×
2交换机来将构建块的段连接到其它构建块的对应段,从而创建工作量集群1300。例如,构建块1311在逻辑上在构建块1312之上。工作量调度器可以为y维上的每个逻辑轴配置ocs交换机,使得ocs交换机在y维上将数据从构建块1312的每个段的顶部计算节点路由到构建块1311的对应段的底部计算节点。例如,工作量调度器可以为逻辑轴1330(沿y维的最左边和最前面的段)配置ocs交换机,使得ocs交换机在构建块1312的计算节点1331与构建块1311的计算节点1332之间路由数据。工作量调度器还可以为构建块1311和1312的y维上的每个段配置1
×
2交换机,以将这些段连接到适当的ocs交换机,如以上关于图12所述。
[0153]
类似地,构建块1311在逻辑上位于构建块1313的左侧。工作量调度器可以为x维上的每个逻辑轴配置ocs交换机,使得ocs交换机在x维上将数据从构建块1311的每个段的最右面的计算节点路由到构建块1313的相应段的最左面的计算节点。例如,工作量调度器可以为逻辑轴1320(沿着x维的最上面和最前面的段)配置ocs交换机,使得ocs交换机在构建块1311的计算节点1321与构建块1313的计算节点1322之间路由数据。工作量调度器还可以为构建块1311和1313的x维上的每个段配置1
×
2交换机,以将这些段连接到适当的ocs交换机,如以上关于图12所述。
[0154]
类似地,构建块1314在逻辑上沿着z维位于构建块1317的前面。工作量调度器可以为z维上的每个逻辑轴配置ocs交换机,使得ocs交换机在z维上将数据从构建块1314的每个段的最后面的计算节点路由到构建块1317的相应段的最前面的计算节点。例如,工作量调度器可以为逻辑轴1340(沿z维的最上面和最右面)配置ocs交换机,使得ocs交换机在构建块1314的计算节点1341与构建块1317的计算节点1342之间路由数据。工作量调度器还可以为构建块1314和1317的z维上的每个段配置1
×
2交换机,以将这些段连接到适当的ocs交换
机,如以上关于图12所述。
[0155]
工作量调度器可以为每个逻辑轴配置ocs交换机,并且为每个段配置1
×
2交换机,使得每个构建块的段与相邻构建块的对应段通信。给定段的对应段是与给定段在相同逻辑轴上的段。
[0156]
图14是示出示例性过程1400的流程图,用于生成工作量集群并使用该工作量集群执行计算工作量。过程1100的操作可由包括一个或多个数据处理装置的系统来执行。例如,过程1100的操作可以由图1的处理系统130执行。
[0157]
该系统接收请求数据,该请求数据指定用于计算工作量的所请求的计算节点(1410)。例如,可以从用户设备接收请求数据。请求数据可以包括计算工作量和指定计算节点的目标n维排列的数据。例如,请求数据可以指定包括计算节点的构建块的目标n维排列。
[0158]
系统从包括一组构建块的超级平台中选择用于所请求集群的构建块的子集(1420)。如上所述,超级平台可包括具有三维排列的计算节点(例如,4
×4×
4排列的计算节点)的一组构建块。系统可以选择与目标排列所限定的量相匹配的构建块的量。如上所述,系统可选择健康且可用于所请求集群的构建块。
[0159]
在超级平台中,每个构建块可以连接到光网络,该光网络包括用于m维中的每一维的两个或更多个ocs交换机。例如,光网络可以包括用于m维度的每一维度的每个逻辑轴的两个ocs交换机。对于m维度中的每一维度,每个构建块可包括一段或多段沿着该维度互连的计算节点。例如,每个构建块可以包括沿着该维度的每个逻辑轴的段。
[0160]
每个段可以包括在该段的第一端上的第一计算节点和在该段的与第一端相对的第二端上的第二计算节点。如果该段包括多于两个的计算节点,则附加的计算节点可以在第一计算节点和第二计算节点之间的段内。
[0161]
第一计算节点的第一部分连接到该维度的两个或更多个ocs交换机中的第一ocs交换机。第一计算节点的一个或多个附加部分被连接到该维度的两个或更多个ocs交换机中的相应的附加ocs交换机。如上所述,光网络可以包括用于构建块的每个逻辑轴的两个ocs交换机。对于给定的逻辑轴,一些构建块的第一计算节点可以连接到两个ocs交换机中的第一ocs交换机。其它构建块的第一计算节点可以连接到两个ocs交换机中的第二ocs交换机。这些连接可以是直接连接,而没有任何中间的一对多交换机。
[0162]
可以将这些部分分配给每个ocs交换机,使得ocs交换机平衡。也就是说,如果光网络包括用于每个逻辑轴的两个ocs交换机,则该逻辑轴上的一半(或大约一半)的段可以被分配给第一ocs交换机,并且该逻辑轴上的一半(或大约一半)的段可以被分配给第二ocs交换机。
[0163]
每个段的第二计算节点连接到具有输入和多个输出的相应一对多光交换机的输入。例如,1
×
2光交换机具有一个输入和两个输出。一对多光交换机的第一输出可以连接到第一ocs交换机。每个附加输出连接到附加的ocs交换机。例如,如果光网络包括用于每个逻辑轴的两个ocs交换机和连接到每个段的1
×
2光交换机,则用于该段的1
×
2交换机的第二输出可以连接到用于该段的逻辑轴的第二ocs交换机。
[0164]
系统确定与计算节点的目标排列相匹配的计算节点子集的逻辑排列(1430)。逻辑排列可以是构建块的布局的内存式模型。对于m维中的每一维,逻辑排列可以限定每个构建块的段与一个或多个其它构建块的对应段之间的连接。例如,逻辑排列可以指定哪个构建
块将进入计算节点的目标排列中的哪个位置。在特定示例中,如果目标排列是类似于图13的工作量集群的8
×8×
8排列,则逻辑排列可指定哪个构建块处于顶部、前面、左面的位置,哪个构建块处于顶部、右面、前面的位置,哪个构建块处于底部、左面、前面的位置,哪个构建块处于底部、右面、前面的位置等等。
[0165]
基于这些位置,在相同逻辑轴上并且沿着该轴相邻的构建块的段将彼此连接。例如,如果一个构建块在逻辑上排列在另一个构建块之上,则沿着顶部构建块的y维的每个段将连接到在相同逻辑轴上的底部构建块的对应段。
[0166]
系统生成计算节点的工作量集群,其包括构建块的子集并且基于逻辑排列彼此连接(1440)。系统可以使用组成操作1450和1460来生成工作量集群。
[0167]
对于工作量集群的每个维度,系统为维度的两个或更多个ocs交换机中的每一个配置相应的路由数据(1450)。用于工作量集群的每个维度的相应路由数据指定了计算工作量的数据如何沿着工作量集群的维度在计算节点之间路由。
[0168]
例如,如果光网络包括用于每个维度的每个逻辑轴的两个ocs交换机,则系统可以配置用于每个逻辑轴的ocs交换机,以沿着逻辑轴在段之间路由数据。路由数据可以使ocs交换机在同一逻辑轴上的相邻段之间路由数据。
[0169]
系统基于逻辑排列来配置所述一对多交换机的至少一部分,使得每段计算节点中的第二计算节点连接到与逻辑排列中第二计算节点所连接的对应段的对应第一计算节点相同的ocs交换机(1460)。例如,如果第一构建块在第二构建块之上,则第一构建块的一段将需要连接到第二构建块的在相同逻辑轴上的对应段。如果第一构建块的该段的第一计算节点被连接到用于该逻辑轴的第一ocs交换机,则可以配置用于第二构建块的该段的一对多交换机,使得一对多交换机的输入被路由到第一ocs交换机。
[0170]
系统使工作量集群的计算节点执行计算工作量(1470)。例如,系统可以向工作量集群的计算节点提供计算工作量。在执行计算工作量的同时,所配置的ocs交换机和一对多光交换机可以在工作量集群的构建块之间路由数据。尽管计算节点在目标排列中没有物理连接,但是所配置的ocs交换机和一对多光交换机可以在构建块的计算节点之间路由数据,就好像计算节点在目标排列中物理连接一样。
[0171]
在本说明书中描述的主题和操作的实施例可以在数字电子电路中实现,或者在计算机软件,固件或硬件中实现,包括在本说明书中公开的结构和它们的结构等价物,或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在计算机存储介质上以便由数据处理设备执行或控制数据处理设备的操作。可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电,光或电磁信号,该信号被生成来编码信息以便发送到适当的接收机设备以便由数据处理设备执行。计算机存储介质可以是或包括在计算机可读存储设备,计算机可读存储衬底,随机或串行存取存储器阵列或设备,或它们中的一个或多个的组合中。此外,当计算机存储介质不是传播信号时,计算机存储介质可以是在人工生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质还可以是一个或多个单独的物理组件或介质(例如,多个cd,磁盘或其它存储设备),或被包括在其中。
[0172]
本说明书中描述的操作可以实现为由数据处理装置对存储在一个或多个计算机可读存储设备上的数据或从其它源接收的数据执行的操作。
[0173]
术语"数据处理装置"包括用于处理数据的所有类型的装置,设备和机器,包括例如可编程处理器,计算机,片上系统,或前述的多个系统或组合。该装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件,协议栈,数据库管理系统,操作系统,跨平台运行时环境,虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境可以实现各种不同的计算模型基础设施,例如web服务,分布式计算和网格计算基础设施。
[0174]
计算机程序(也称为程序,软件,软件应用,脚本或代码)可以以任何形式的编程语言来编写,包括编译或解释语言,声明性语言或过程语言,并且可以以任何形式来部署,包括作为独立程序或作为模块,组件,子例程,对象或适于在计算环境中使用的其它单元。计算机程序可以但不必须对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所述程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块,子程序或代码部分的文件)中。计算机程序可被部署为在一个计算机上或在位于一个站点或分布在多个站点上并通过通信网络互连的多个计算机上执行。
[0175]
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路(例如,fpga(现场可编程门阵列)或asic(专用集成电路))来执行,并且装置也可以实现为专用逻辑电路。
[0176]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或被可操作地耦合以从一个或多个大容量存储设备接收数据或向一个或多个大容量存储设备传送数据,所述大容量存储设备用于存储数据,例如磁盘,磁光盘或光盘。然而,计算机不必具有这样的设备。此外,计算机可以嵌入在另一设备中,例如,移动电话,个人数字助理(pda),移动音频或视频播放器,游戏控制台,全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪速驱动器)等。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器,介质和存储器设备,包括例如半导体存储器设备,例如eprom,eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;cdrom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。
[0177]
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如crt(阴极射线管)或lcd(液晶显示器)监视器,以及键盘和定点设备,例如鼠标或轨迹球,用户可以通过该定点设备向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈,听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音,语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网页浏览器接收的请求向用户的客户端设备上的网页浏览器发送网页。
[0178]
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或网页浏览器的客户端计算机,用户可以通过该图形用户界面或web浏览器与本说明书中描述的主题的实现进行交互。或一个或多个这样的后端,中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网("lan")和广域网("wan"),网络间(例如,因特网)和对等网络(例如,hoc对等网络)。
[0179]
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系是通过在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如,html页面)传输到客户端设备(例如,用于向与客户端设备交互的用户显示数据和从与客户端设备交互的用户接收用户输入)。可以在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
[0180]
虽然本说明书包含许多具体的实现细节,但这些不应被解释为对任何发明的范围或所要求保护的范围的限制,而应被解释为对特定发明的特定实施例的特定特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管上面可以将特征描述为在某些组合中起作用,并且甚至最初如此要求保护,但是在一些情况下,可以从组合中去除要求保护的组合中的一个或多个特征,并且要求保护的组合可以针对子组合或子组合的变型。
[0181]
类似地,虽然在附图中以特定顺序描述了操作,但这不应被理解为要求以所示的特定顺序或以顺序的顺序执行这些操作,或者要求执行所有示出的操作以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为需要所有实施例中的这种分离,并且应当理解,所描述的程序组件和系统通常可以被集成在单个软件产品中或者被封装到多个软件产品中。
[0182]
因此,已经描述了本主题的特定实施例。其它实施例在所附权利要求的范围内。在一些情况下,权利要求中所述的动作可以以不同的顺序执行,并且仍然实现期望的结果。此外,附图中所示的过程不一定需要所示的特定顺序或顺序,以获得所需的结果。在某些实现中,多任务和并行处理可能是有利的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献