首页> 中国专利> 具有有可重配置的核级和向量级并行度的并行计算架构

具有有可重配置的核级和向量级并行度的并行计算架构

摘要

提供了使用具有可重新配置的核级并行度和向量级并行度的并行计算架构的神经网络处理硬件。在各种实施方式中,神经网络模型存储器适于存储包括多层的神经网络模型。每层具有至少一个维度并且包括多个突触权重。提供了多个神经核。每个神经核包括计算单元和激活存储器。计算单元适于将多个突触权重应用于多个输入激活以产生多个输出激活。计算单元具有多个向量单元。激活存储器适于存储输入激活和输出激活。该系统适于基于该层的维度和所述向量单元将所述多个核划分成多个分区。

著录项

说明书

背景技术

本公开的实施例涉及神经网络处理硬件,并且更具体地,涉及具有可重配置的核级和向量级并行度的并行计算架构。

发明内容

根据本公开的各种实施例,提供了并行计算架构。神经网络模型存储器适于存储包括多层的神经网络模型。每层具有至少一个维度并且包括多个突触权重。提供了多个神经核。每个神经核包括计算单元和激活存储器。该计算单元适于将多个突触权重应用于多个输入激活以产生多个输出激活。计算单元具有多个向量单元。激活存储器适于存储输入激活和输出激活。该系统适于基于该层的维度和向量单元将多个核划分成多个分区。

根据本公开的实施例,提供了用于配置推理处理单元(IPU)的方法和计算机程序产品。读取包括多层的神经网络模型。每层具有至少一个维度并且包括多个突触权重。对于神经网络模型的每层:基于该层和向量单元的维度将多个核划分成多个分区;所述多个核被配置成实现该层;向所述多个核提供该层的输入激活;并且与该层相关联的所述突触权重被应用于所述输入激活以产生多个输出激活。

图1A-D示出了单个多核处理器上的给定网络的示例性并行配置。

图2A示出了根据本公开的实施例的多核推理处理单元(IPU)。

图2B示出了根据本公开的实施例的推理处理单元(IPU)的核内的核计算元件。

图3示出了根据本公开的实施例的示例性张量映射。

图4示出了根据本公开的实施例的另一示例性张量映射

图5示出了根据本公开的实施例的另一示例性张量映射。

图6示出了根据本公开的实施例的另一示例性张量映射。

图7示出了根据本公开的实施例的另一示例性张量映射。

图8示出了根据本公开的实施例的另一示例性张量映射。

图9示出了根据本公开的实施例的另一示例性张量映射。

图10示出了根据本公开的实施例的在核之间传递的部分和。

图11A-11B示出了根据本公开的实施例的参数分布。

图12是示出根据本公开的实施例的核操作的流水线时序图。

图13是根据本公开的实施例的说明数据重新混洗的流水线时序图。

图14示出根据本公开的实施例的混洗操作。

图15图示了根据本公开的实施例的另一混洗操作。

图16图示了根据本公开的实施例的另一混洗操作。

图17示出了根据本公开的用于并行计算利用的数据的重新混洗。

图18示出了根据本公开的实施例的配置推理处理单元(IPU)的方法。

图19示出了根据本公开的实施例的计算节点。

具体实施方式

人工神经元是其输出是其输入的线性组合的非线性函数的数学函数。如果一个神经元的输出是另一个神经元的输入,则两个神经元被连接。权重是对一个神经元的输出与另一个神经元的输入之间的连接的强度进行编码的标量值。

神经元通过将非线性激活函数应用于其输入的加权和来计算其输出,称为激活。加权和是通过将每个输入乘以相应的权重并累加乘积而计算的中间结果。部分和是输入子集的加权和。所有输入的加权和可以通过累加一个或多个部分和而分阶段计算。

神经网络是一个或多个神经元的集合。神经网络通常被分成称为层的神经元组。层是一个或多个神经元的集合,所述神经元全部从相同层接收输入并且全部向相同层发送输出,并且通常执行类似的功能。输入层是从神经网络外部的源接收输入的层。输出层是向神经网络外部的目标发送输出的层。所有其它层是中间处理层。多层神经网络是具有多于一层的神经网络。深度神经网络是具有多层的多层神经网络。

张量(tensor)是数值的多维阵列。张量块是张量中的元素的连续子阵列。

每个神经网络层与参数张量V、权重张量W、输入数据张量X、输出数据张量Y和中间数据张量Z相关联。参数张量包含控制层中神经元激活函数σ的所有参数。权重张量包含将输入连接到层的所有权重。输入数据张量包含该层作为输入消耗的所有数据。输出数据张量包含该层计算为输出的所有数据。中间数据张量包含该层作为中间计算产生的任何数据,例如部分和。

层的数据张量(输入、输出和中间值)可以是三维的,其中前二维可以被解释为编码空间位置,第三维可以被解释为编码不同特征。例如,当数据张量表示彩色图像时,前二维编码图像内的垂直坐标和水平坐标,并且第三维编码每个位置处的颜色。输入数据张量X的每个元素可以通过单独的权重连接到每个神经元,因此权重张量W通常具有六个维度,将输入数据张量的三个维度(输入行a,输入列b,输入特征c)与输出数据张量的三个维度(输出行i,输出列j,输出特征k)连接。中间数据张量Z具有与输出数据张量Y相同的形状。参数张量V将三个输出数据张量维度与指示激活函数σ的参数的附加维度o连接起来。

层的输出数据张量Y的元素可以如等式1中那样计算,其中神经元激活函数σ由激活函数参数向量V[i,j,k:],以及加权和Z[i,j,k]可以如等式2中那样计算。

Y[i,j,k]=σ(V[i,j,k,:];Z[i,j,k])

等式1

为了简化符号,等式2中的加权和可以被称为输出,其等效于使用线性激活函数Y[i,j,k]=σ(Z[i,j,k])=Z[i,j,k],可以理解,当使用不同的激活函数时,相同的语句适用而不失一般性。

在各种实施例中,如上所述的输出数据张量的计算被分解成较小的问题。然后,可以在一个或多个神经核上,或者在常规多核系统的一个或多个核上并行地求解每个问题。

神经网络模型是一组常数,其共同指定由神经网络执行的整个计算,包括神经元之间的连接图以及每个神经元的权重和激活函数参数。训练是修改神经网络模型以执行期望的功能的过程。推理是将神经网络应用于输入以产生输出而不修改神经网络模型的过程。

推理处理单元是执行神经网络推理的一类处理器。神经推理芯片是推理处理单元的特定物理实例。

如上所述,大规模并行计算架构具有比传统顺序计算架构大规模加速执行的潜力。然而,实际加速受到实际数据和算法中存在的并行度以及数据和算法到并行架构的映射效率的限制。神经网络通常服从并行度—在沿着包括空间和特征维度的许多维度的激活和权重数据两者中存在丰富的并行度。然而,并行度和最有效类型的并行度根据单独的网络以及在给定网络内改变。例如,从一层到另一层可以有不同的维度。因此,具有固定大小(例如,固定阵列大小、固定向量宽度、并行计算单元的固定数目)和配置的并行架构难以利用数据和/或算法中的所有可用并行度。

为了说明网络维度的变化,表1包括各种示例性网络的层维度(高度X宽度X特征)。尽管具有相同维度的输入层和最后层(因为它们解决了相同数据集上的相同分类问题),但是在实现之间存在网络层大小的宽变化(并且不是所有层都被示出)。应当理解,在网络内,层的形状从第一层到最后一层发生变化。早期层通常具有大的空间维度(高度、宽度),而后期层具有较大的特征维度。

表1

参考图1A-图D,示出了单个多核处理器上的给定网络的示例性并行配置。在图1A中,处理器100被配置为具有16个核并行度,这意味着16个核(例如101)中的每一个核正在并行执行。向量并行度是2,意味着每个核并行地处理2个输入向量(例如,102)。在图1B中,处理器100被配置为具有核并行度8和向量并行度4。在图1C中,处理器100被配置为具有核并行度4和向量并行度8。在图1D中,处理器100被配置为具有核并行度2和向量并行度16。本公开通过解决如何在核之间一致地划分和分配数据、如何使算术向量单元具有不同的有效向量宽度、如何一致地将数据发送到不同宽度的向量单元以及如何将处理器重新配置到不同模式中,来实现这种配置。

参考图2A,示出了根据本公开的实施例的多核推理处理单元(IPU)。IPU200包括用于神经网络模型的模型存储器201。如上所述,神经网络模型可包括要计算的神经网络的突触权重。在一些实施例中,模型存储器201包括一个或多个物理存储器,其可以被分别分配给突触权重211和指令212。IPU 200包括可以是瞬时的激活存储器202。激活存储器202可以被划分成输入和输出区域,并且存储神经元激活以供处理。

IPU 200包括神经核203的阵列206。每个核203包括计算单元233,其加载有来自模型存储器201的神经网络模型,并且可操作以执行向量计算。每个核还包括本地激活存储器232。在每个计算步骤之前从本地激活存储器232提供输入激活。来自计算单元233的输出被写回到激活存储器232,以便在相同或另一个计算单元上进行处理。

IPU 200包括一个或多个片上网络(NoC)205。在一些实施例中,部分和NoC 251互连核203并在它们之间传输部分和。在一些实施例中,单独的参数分布NoC 252将核203连接到存储器201,以用于将权重和指令分布到核203。将理解的是,NoC 251和252的各种构造适于根据本公开使用。例如,可以使用广播网络、行广播网络、树形网络和交换网络。

在各种实施例中,全局调度器(芯片微引擎)204被包括在IPU 200中。在各种实施方案中,本地核控制器(核微引擎)234被包括在每个核203上。在这样的实施例中,操作的方向在全局调度器(芯片微引擎)和局部核控制器(核微引擎)之间共享。例如,全局调度器204可以将计算指令从模型存储器201加载到每个核203上的计算单元233。参数(例如,神经网络/突触权重)可由全局调度器204从模型存储器201加载到每个核203上的计算单元233。神经网络激活数据可以由本地核控制器234从本地激活存储器232加载到每个核203上的计算单元233。如上所述,激活被提供给由模型定义的特定神经网络的轴突,并且可以源自相同或另一计算单元,或者源自系统外部。

计算单元233执行计算以生成如由本地核控制器234指导的输出神经元激活。具体地,该计算包括将输入突触权重应用于输入激活。应当理解,各种方法可用于执行这种计算,包括在硅树突(in silico dendrites)以及向量乘法单元。计算结果按照本地核控制器234的指示存储在本地激活存储器232中。这些阶段可以是流水线的,以便提供计算单元在每个核上的有效使用。还应当理解,根据给定神经网络的要求,输入和输出可以从局部激活存储器232传输到全局激活存储器202。

参考图2B,为了计算1×M输出张量块261,神经核将1×N输入激活块262乘以N×M权重块263。向量矩阵乘法单元264执行乘法,并将所得乘积传递到1×N向量算术单元265。接着,将算术265的结果提供给M个神经元激活函数266,以产生1×M输出张量块261。

为了说明的目的,IPU 200可以包括A×B并行核的阵列,每个核具有N×M并行向量或矩阵计算元素。

每个核计算向量矩阵乘法Z=XW,其中:X是输入数据行向量[1×N];W是权矩阵[N×M];Z是输出数据行向量[1×M]。每个核将激活函数Y=f(Z)应用于所述矩阵乘法的输出,其中Y为输出数据行向量[1×M],并且f(·)为线性或非线性函数。这构成了单个神经元操作。对于神经网络推理,在许多神经元和许多层的神经元上重复该操作,每个神经元对不同的数据X和潜在不同的参数W进行操作。

如这里进一步阐述的,本公开提供了对这种核的并行利用。特别地,提供了核和向量并行度。通常,通过在核上扩展来适应数据级或线程级并行度,而通过在向量单元上扩展来适应操作级并行度。本公开使得能够最大化该映射,使得在任何给定时间,几乎所有核都在计算(非空闲),并且几乎所有向量单元都在计算(非空闲)。

在示例性配置中,跨空间和特征维度提供神经推理数据并行度。数据并行度可如下映射到架构并行度:空间并行度通过在核上扩展来提供,而特征并行度通过在向量单元上扩展来提供。

在各种实施例中,提供了一种并行计算架构,其中,核级并行度和向量级并行度是可重新配置的。具体地,该计算架构可以应用于神经网络推理。各种示例以向量级并行度的术语来表述。然而,将理解,本文提供的公开内容适用于矩阵级并行,或者更一般地适用于涉及并行算术和/或逻辑计算单元的操作级并行。

如本文所述,不同维度的张量(具有不同的空间和特征维度)被映射到同一核阵列,同时保持核阵列和核计算元件的有效利用。数据以可配置的粒度(对应于核级并行度)跨核被分区。在各种配置中,数据空间并行度映射到核并行度且数据特征并行度映射到向量并行度。这样的配置可以特别适合于网络中的早期层。在一些配置中,空间并行度和特征并行度映射到核并行度,且特征并行度映射到向量并行度。这样的配置可以特别适合于网络中的后续层。在各种实施例中,NoC用于跨核分布数据。

如以下表2中所总结的,根据空间和核并行度以及特征并行度和向量并行度之间的关系,可以使用不同的并行策略。在典型的早期层中,特征并行度小于或等于向量并行度,并且空间并行度大于核并行度。在典型的中间层中,特征并行度大于或等于向量并行度,并且空间并行度大于或等于核并行度。在典型的后续层中,特征并行度大于向量并行度,并且空间并行度小于核并行度。将理解,在特征并行度等于向量并行度并且空间并行度等于核并行度的情况下,存在从给定张量到给定物理核阵列的原生1:1映射。

表2

参考图3,根据本公开的实施例图示了示例性张量映射。并行核阵列301包括A×B=16个并行核,每个并行核具有N≥1的向量并行度。激活张量302具有空间并行度R×C=16,并且特征并行度F=N。因此,A=R,B=C,并且N=F。核阵列301可被分割成16个岛303,每个岛包括一个核。然后,激活张量的A1×1×1个空间切片可以被映射到每个岛。

参考图4,根据本公开的实施例示出了另一示例性张量映射。并行核阵列401包括A×B=16个并行核,每个并行核具有N的向量并行度。激活张量402具有空间并行度R×C=64,以及F=N的特征并行度。因此,A<R,B<C,N=F。核阵列401可被分割成16个岛403,每个岛包括一个核。然后,激活张量的A2×2×1个空间切片可以被映射到每个岛。

参考图5,根据本公开的实施例示出了另一示例性张量映射。并行核阵列501包括A×B=16个并行核,每个并行核具有N的向量并行度。激活张量502具有空间并行度R×C=64以及F=4N的特征并行度。因此,A<R,B<C,N

参考图6,根据本公开的实施例示出了另一示例性张量映射。并行核阵列601包括A×B=16个并行核,每个并行核具有N的向量并行度。激活张量602具有R×C=4的空间维度以及F=4N的特征并行度。因此,A>R,B>C,N

参考图7,根据本公开的实施例示出了另一示例性张量映射。并行核阵列701包括A×B=16个并行核,每个并行核具有向量并行度N。激活张量702具有R×C=4的空间维度,以及F=4N的特征并行度。因此,A>R,B>C,N

参考图8,根据本公开的实施例示出了另一示例性张量映射。并行核阵列801包括A×B=16个并行核,每个并行核具有向量并行度N。激活张量802具有空间维度R×C=1,并且特征并行度为F=16N。因此,A>R,B>C,N

参考图9,根据本公开的实施例示出了另一示例性张量映射。并行核阵列901包括A×B=16个并行核,每个并行核具有向量并行度N。激活张量902具有空间维度R×C=64,以及F=N/4的特征并行度。因此,2A=R,2B=C,N=4F。核阵列901可以被分割成16个岛903,每个岛包括一个核。然后,可以将激活张量的A2×2×F个切片映射到每个岛。由于核具有向量并行度N,因此可以由核向量单元在单个周期中计算激活张量的2×2×F个切片,从而保持完全的向量单元利用。

将了解,以上分区是示范性的,且其它维度和分区方案在本发明的范围内。

如从上文将了解,不同大小张量(具有不同空间维度和特征维度)可映射到相同核阵列,同时维持核阵列和核计算元件的有效利用。在某些分区中,其中可用的空间并行度和特征并行度大于或等于核并行度和向量并行度,一个岛包括一个核。在某些分区中,其中可用的特征并行度大于向量并行度,并且可用的空间并行度小于核并行度,一个岛包括多于一个核。

在其中可用空间并行度大于核并行度且可用特征并行度小于向量并行度的某些分区中,使用过量特征并行度将核细分以增加空间并行度。通过将核内的较大向量单元分割成多个较小向量单元来实现细分。例如,一个64宽的向量单元也可以作为两个32宽的向量单元或四个16宽的向量单元来操作。在大的求和树的情况下(在神经推理单元中),在树中求和的最后一级(或多级)之前取得结果。

参考图10,根据本公开的实施例示出了在核之间传递的部分和。并行核阵列1001包括A×B=16个并行核,每个并行核具有向量并行度N。每个岛1002计算向量矩阵乘法Z=XW,其中X和W可以被分解成子向量和子矩阵X=[X

在一些实施例中,向量-矩阵子乘法、部分和传送以及部分和累加都是完全流水线式的。这样,整个岛表现为一个向量矩阵运算。

参考图11A-11B,示出了根据本公开的实施例的参数分布。在图11A中,核阵列1101被分成16个岛1102,每个岛包括一个核。在图11B中,核阵列1101被分成4个岛1103,每个岛包括4个核。对于这些不同的配置,在每个核处需要不同的参数(权重和指令)。特别地,在各种神经网络中,岛需要相同的参数,而岛内的核需要不同的参数。NoC 1104根据并行度配置来分配这些参数,从而在核之间分配并行计算。

参考图12,提供了流水线时序图,其示出了根据本公开的实施例的核操作。在1201处,将计算指令加载到神经计算单元。在1202,参数(包括神经网络权重)被加载到神经计算单元。在1203,操作数被加载到神经计算单元。在1204,执行向量-矩阵乘法。在1205,传送部分和。在1206,累加部分和。在1207,计算激活函数。在1208,存储结果。每个阶段1211…1214是不同的操作。因此,每个操作可以具有独立的并行配置。

在一些实施例中由芯片微引擎(204)分配的指令确定由每个核执行的操作(算术、数据寻址、部分和通信等),这些指令可以被全局地传递到所有核,或者可以利用用于每个核的特定指令被单独地传递到每个核。在后一种情况下,每个核仅需要知道它需要对其当前数据、传递给它的部分和以及任何重新混洗操作做什么。它不需要配置任何全局知识。可针对每一操作阶段传递新指令,因此可在每一操作阶段改变核并行度配置。对于流水线核,当前并行度配置在每个阶段的整个流水线中保持一致,从而实现重叠(流水线)操作。

因此,在各种实施例中,系统中的并行度在运行时间期间可动态重新配置。在一些实施例中,指令用于重新配置计算架构。在一些实施例中,使用多个指令来重新配置计算架构的多个部分。

参考图13,提供了流水线时序图,其示出了根据本公开的实施例的数据重新混洗(data reshuffling)。在1301,将计算指令加载到神经计算单元。在1302,参数(包括神经网络权重)被加载到神经计算单元。在1303处,将操作数加载到神经计算单元。在1304,执行向量矩阵乘法。在1305,传送部分和。在1306,累加部分和。在1307,计算激活函数。在1308,存储结果。在1309,重新混洗数据。数据重新混洗阶段发生在计算操作阶段之间。每个阶段1211…1214是不同的操作。

如果激活数据X在操作结束时不在适当的核中,则可能需要例如经由NoC将其传送到另一核。该操作可以被称为数据重新混洗,其作为计算操作阶段之间的附加阶段而发生。当在并行配置之间切换时,可能需要重新混洗。在各种实施例中,使用核级(核微码)指令执行数据重新混洗操作。例如,这样的指令可以包括:在地址处读取数据块长度;以及将数据块写入到核上的地址

因此,可针对系统并行度配置的改变而重新混洗数据。在一些实施例中,在NoC上执行重新混洗。在一些实施例中,经由指令来起始数据重新混洗。

参考图14,示出了根据本公开的实施例的混洗操作。输入激活张量1401被提供给核阵列1402。生成输出激活结果1403。在混洗阶段中,经由核之间的NoC来传送输出激活结果。在一些实施例中,混洗操作是显式的。输出的激活结果由此如图所示分布在核之间。

参考图15,示出了根据本公开的实施例的混洗操作。输入激活张量1501被提供给核阵列1502。产生并传送部分和1503。下一层岛内的每个核累加不同的部分和块。以此方式,最终累积结果在不同核处结束,而不经由NoC发送输出激活结果。

参考图16,示出了根据本公开的实施例的混洗操作。输入激活张量1601被提供给核阵列1602。生成输出激活结果1603。在下一层岛内的每个核处计算全输出张量结果。在下一层仅操作所需的数据。

参考图17,根据本公开示出了用于并行计算利用的数据的重新混洗。在示例性神经网络中,层L具有激活张量1701,其维度为R×C×F=4×4×1。核阵列1702具有维度A×B=4×4。因此,张量1701自然地映射到被配置为具有4×4=16个岛的核阵列1702上。层L+1具有维度R×C×F=2×2×4的激活张量1703。在没有数据混洗的情况下,张量1703将仅占用2×2=4个核(如1704所示出的)。然而,通过数据混洗,核阵列1702可被分成四个岛,每个岛包括四个核。张量1703然后可被映射到四个岛,从而产生100%的核利用率(如1705所示)。

在经由神经网络的不同层执行推理的过程中,激活数据组织自然地从较大的空间并行度转移到较大的特征并行度。如果数据未被重新混洗,则并行核的利用(并行计算的核的数量)将下降,因为空间并行度下降到核级并行度以下。通过重新混洗,使得空间并行度和特征并行度两者都可以映射到核级并行度,可以保持全部核被充分利用。

因此,本公开提供了通过在核级并行度和向量级并行度之间重新混洗数据来改进并行核阵列和计算元件利用率。在各种实施例中,在空间并行度与特征并行度之间提供数据的重新混洗,分别映射到核级并行度及向量级并行度。

现在参考图18,示出了根据本公开的实施例的配置推理处理单元(IPU)的方法。在1801,读取包括多层的神经网络模型。每层具有至少一个维度并且包括多个突触权重。对于神经网络模型的每层:在1802,基于该层的维度和向量单元将多个核划分成多个分区;在1803,所述多个核被配置为实现该层;在1804,将该层的输入激活提供给多个核;并且在1805,与该层相关联的突触权重被应用于输入激活以产生多个输出激活。

现在参考图19,示出了计算节点的示例的示意图。计算节点10仅是合适的计算节点的一个示例,并且不旨在对本文描述的实施例的使用范围或功能提出任何限制。无论如何,计算节点10能够被实现和/或执行上文阐述的任何功能。

在计算节点10中,存在计算机系统/服务器12,其可与许多其它通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。

计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。

如图19所示,计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。

总线18表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、外围部件互连(PCI)总线、外围部件互连快速(PCIe)和高级微控制器总线体系结构(AMBA)。

计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓冲存储器32。计算机系统/服务器12还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线18。如下文将进一步示出及描述,存储器28可包含具有经配置以执行本发明的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。

具有一组(至少一个)程序模块42的程序/实用程序40,以及操作系统、一个或多个应用程序、其它程序模块和程序数据,可作为示例而非限制存储在存储器28中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块42通常执行这里描述的实施例的功能和/或方法。

计算机系统/服务器12还可以与一个或多个外部设备14通信,诸如键盘、指示设备、显示器24等;一个或多个设备,其使得用户能够与计算机系统/服务器12交互;和/或任何使计算机系统/服务器12能够与一个或多个其它计算设备通信的设备(例如网卡、调制解调器等)。这种通信可以经由输入/输出(I/O)接口22发生,然而,计算机系统/服务器12可以经由网络适配器20与一个或多个网络通信,所述网络诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它组件通信,应当理解,尽管未示出,其它硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。

在各种实施例中,一个或多个推理处理单元(未示出)被耦合到总线18。在这样的实施例中,IPU可以经由总线18从存储器28接收数据或向其写入数据。同样,IPU可以经由总线18与其它组件交互,如这里所描述的。

本发明可以是系统,方法和/或计算机程序产品。该计算机程序产品可以包括其上具有用于使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储介质。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号