CN113994318A - 具有多个处理器的计算机中的通信 - Google Patents

具有多个处理器的计算机中的通信 Download PDF

Info

Publication number
CN113994318A
CN113994318A CN202080045268.0A CN202080045268A CN113994318A CN 113994318 A CN113994318 A CN 113994318A CN 202080045268 A CN202080045268 A CN 202080045268A CN 113994318 A CN113994318 A CN 113994318A
Authority
CN
China
Prior art keywords
processor
data
computer
processors
index value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080045268.0A
Other languages
English (en)
Inventor
R.L.S.奥斯伯恩
M.D.法伊尔斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Graphcore Ltd
Original Assignee
Graphcore Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Graphcore Ltd filed Critical Graphcore Ltd
Publication of CN113994318A publication Critical patent/CN113994318A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Multi Processors (AREA)

Abstract

一种计算机,包括多个处理器,每个处理器被配置为在用于计算机的计算阶段期间对数据执行操作,并且在预编译的同步屏障之后,在用于计算机的交换阶段期间与至少一个其它处理器交换数据,其中计算机中的处理器被加索引并且由每个处理器在交换阶段中执行的数据交换操作取决于其索引值。

Description

具有多个处理器的计算机中的通信
技术领域
本公开涉及控制在包括多个处理器的计算机中的不同处理器之间执行的数据传送操作。
背景技术
当执行大规模并行操作时,在计算机内提供多个处理器。这种计算机可以是其中在单个芯片上提供每个处理器的系统。每个处理器本身可以包括多个处理单元。在一些情况下,每个处理器可以被配置为对不同的数据集执行相同的操作集。每个处理器在计算阶段期间执行其相应的计算,然后在交换阶段期间与其它处理器中的一个或多个处理器交换结果。在计算阶段和交换阶段之间施加预编译屏障(barrier)。对结果的交换允许在不同处理器之间实现同步,每个处理器在更大操作的上下文中执行不同任务。
在机器学习算法的上下文中,例如在深度神经网络的上下文中,发现了一个包括多个处理器的计算机的应用的示例。如机器智能领域的技术人员所熟悉的那样,机器智能算法基于对“知识模型”执行迭代更新,该“知识模型”可以由多个互连的节点的图表示。每个节点表示其输入的函数。一些节点接收图的输入,并且一些节点接收来自一个或多个其它节点的输入,而一些节点的输出形成其它节点的输入,并且一些节点的输出提供图的输出(并且在一些情况下给定节点甚至可以具有所有这些:图的输入、图的输出以及与其它节点的连接)。另外,每个节点处的函数由一个或多个相应参数(例如,权重)参数化。在学习阶段期间,目标是基于经验输入数据的集合来找到各种参数的值,使得图作为整体将为一定范围的可能输入生成期望的输出。用于这样做的各种算法在本领域中是已知的,诸如基于随机梯度下降的反向传播算法。在基于输入数据的多次迭代中,参数被逐渐调谐以减小它们的误差,因此图朝着解收敛。在后续阶段,学习到的模型可以被用于在给定指定的输入集的情况下对输出进行预测或者在给定指定的输出集的情况下对输入(原因)进行推断。
通常,每个节点的处理中的至少一些可以独立于图中的一些或所有其它节点执行,因此大图为并发和/或并行性提供了大的机会。每个处理单元是可以被用于执行与不同节点相关联的处理的计算机。以这种方式,多个处理单元可以被共同用于训练单个神经网络。这是通过应用数据并行性来实现的,其中每个处理单元使用不同的数据集为神经网络的每个处理单元导出对权重的更新。然后在交换阶段期间在处理单元之间同步这些更新。
因此,可以理解,当在计算机的处理器之间交换数据时,要求每个处理器在不同的时间交换数据的不同片段。此外,每个处理器可以被配置为关于接收到的数据执行不同操作,诸如数据的存储和精简,这些操作取决于相应处理器在计算机中的位置。因此,需要确保计算机中的每个处理器在适当的时间执行其相应的操作。
发明内容
如上所述,为了确保在计算机的处理器之间交换数据,每个处理器都必需在适当的时间执行数据交换所需的适当操作。实现此目的的一种方式是为计算机中的每个处理器编译不同的可执行代码集(可执行映像)。通过为每个处理器编译不同的代码集,可以对每个处理器进行编程以在不同时间执行用于数据交换的适当操作,从而允许处理器之间的适当数据交换。但是,存在与对于每个处理器编译单独的程序相关联的问题,即,编译时间随着处理器的数量而显著增加,使得编译时间变得不期望地大。
本发明提供了一种用于在处理器之间交换数据的技术,其特别适用于在使用机器学习模型执行训练时使用,但不限于这个上下文。
根据本申请的实施例,计算机中的处理器集中的每个处理器设有单个可执行计算机代码集,其可以采用可执行映像的形式。该处理器集中的每个处理器设有索引值,该索引值确定在执行期间的特定时间执行在该可执行计算机代码集中表达的哪些操作。取决于索引值的操作是控制处理器之间数据的交换的操作。因此,处理器被配置为根据它们相应的索引值执行适当的交换操作,而不要求为每个处理器编译单独的可执行代码集。
根据第一方面,提供了一种计算机,其包括多个处理器,每个处理器被配置为在计算机的计算阶段期间对数据执行操作,并且在预编译的同步屏障之后,在计算机的交换阶段期间与至少一个其它处理器交换数据,每个处理器包括:至少一个存储装置,其包括包含可执行指令集的程序和识别多个处理器当中的相应处理器的索引值;至少一个数据存储器,其存储用于由可执行指令指定的计算的数据;至少一个执行单元,被布置为执行相应可执行指令集中的一个或多个指令以:在计算机的交换阶段期间根据相应的索引值来选择用于在相应的至少一个数据存储器和相应的至少一个其它处理器之间执行数据传送的操作;并且在交换阶段期间执行用于执行数据传送的所选择的操作。
在一些实施例中,提供了一种计算机,其中对于至少一些处理器中的每个处理器,根据相应的索引值来选择用于执行数据传送的操作包括选择向其传送数据的相应的至少一个其它处理器。
在一些实施例中,对于至少一些处理器中的每个处理器,操作使得在根据相应索引值选择的相应至少一个数据存储器的区域与相应的至少一个其它处理器之间进行数据传送。
在一些实施例中,对于至少一些处理器中的每个处理器,相应的至少一个执行单元被配置为通过对相应的索引值执行算术运算来计算数据存储器的相应区域的地址。
在一些实施例中,对于至少一些处理器中的每个处理器,相应的至少一个执行单元被配置为根据相应的索引值分支到相应的可执行指令集中的至少一个指令,其中至少一个指令中的每个指令在由相应的至少一个执行单元执行时使得在数据存储器的相应区域与相应的至少一个其它处理器之间进行数据传送。
在一些实施例中,对于至少一些处理器中的每个处理器,操作包括将从相应的至少一个其它处理器接收的数据存储在数据存储器的相应区域中。
在一些实施例中,对于至少一些处理器中的每个处理器,操作包括根据相应的索引值来选择存储在相应的至少一个数据存储器中的数据并将所选择的数据传输到相应的至少一个其它处理器。
在一些实施例中,处理器中的至少一些的每个处理器的至少一个执行单元被配置为处理相应的所选择的数据以产生包括相应的所选择的数据和报头的数据分组,该报头包括相应的至少一个其它处理器上的缓冲器的地址。
在一些实施例中,计算机包括路由硬件,其被配置为静态地路由在数据传送中被传送的数据。
在一些实施例中,处理器中的至少一些的每个处理器:操作包括将从相应的至少一个其它处理器接收的数据与存储在相应的至少一个数据存储器中的另外的数据组合;并且相应的至少一个执行单元被配置为根据相应的索引值从相应的至少一个数据存储器中选择所述另外的数据。
在一些实施例中,对于每个处理器:相应的至少一个数据存储器包括用于至少一个机器学习模型的多个增量权重;并且相应的至少一个数据存储器与相应的至少一个其它处理器之间的数据传送包括控制相应的至少一个数据存储器与相应的至少一个其它处理器之间的一个或多个增量权重的传送。
在一些实施例中,对于至少一些处理器中的每个处理器,相应的至少一个执行单元被配置为根据相应的索引值从相应的数据存储器中选择一个或多个增量权重,并且使得将所选择的一个或多个增量权重传送到相应的至少一个其它处理器。
在一些实施例中,对于至少一些处理器中的每个处理器,相应的至少一个执行单元被配置为:根据相应的索引值从相应的数据存储器中选择一个或多个增量权重;并且用从多个处理器中的相应的至少一个其它处理器接收的一个或多个另外的增量权重来约简所选择的一个或多个增量权重。
在一些实施例中,计算机中的每个处理器都是片上系统。
根据第二方面,提供了一种生成多个程序的计算机实现的方法,每个程序适合由包括多个处理器的计算机的执行单元执行,每个处理器具有至少一个用于保持相应程序的存储器、至少一个用于执行相应程序的执行单元和用于保持数据的数据存储器,该方法包括:编译单个可执行指令集;为每个处理器确定与相应处理器相关联的索引值;并且为每个处理器生成包括单个指令集和相应索引值的本地程序,其中每个本地程序在分配给其相应处理器时被调度在相应处理器的至少一个执行单元上执行以使得:在用于计算机的计算阶段期间对数据执行操作,从而根据相应的索引值选择用于在用于计算机的交换阶段期间在相应的至少一个数据存储器与相应的至少一个其它处理器之间执行数据传送的操作;并且在预编译的同步屏障之后,在交换阶段期间执行用于执行数据传送的所选择的操作。
在一些实施例中,对于每个本地程序,根据相应的索引值选择用于执行数据传送的操作包括选择向其传送数据的相应的至少一个其它处理器。
在一些实施例中,对于每个本地程序,操作使得在根据相应索引值选择的相应至少一个数据存储器的区域与相应的至少一个其它处理器之间进行数据传送。
在一些实施例中,对于每个本地程序,相应的至少一个执行单元被配置为通过对相应索引值执行算术运算来计算数据存储器的相应区域的地址。
在一些实施例中,每个本地程序,相应的至少一个执行单元被配置为根据相应的索引值分支到相应的可执行指令集中的至少一个指令,其中至少一个指令中的每个指令在被相应的至少一个执行单元执行时使得在数据存储器的相应区域与相应的至少一个其它处理器之间进行数据传送。
在一些实施例中,每个本地程序,操作包括将从相应的至少一个其它处理器接收的数据存储在数据存储器的相应区域中。
在一些实施例中,每个本地程序,操作包括根据相应的索引值选择存储在相应的至少一个数据存储器中的数据并将选择的数据传输到相应的至少一个其它处理器。
在一些实施例中,其中每个本地程序在分配给其相应的处理器时被调度为在相应处理器的至少一个执行单元上执行以使得:处理相应选择的数据以产生包括相应选择的数据和报头的数据分组,该报头包括在相应的至少一个其它处理器上的缓冲器的地址。
在一些实施例中,计算机包括路由硬件,其被配置为静态地路由在数据传送中被传送的数据。
在一些实施例中,对于每个本地程序,操作包括将从相应的至少一个其它处理器接收的数据与存储在相应的至少一个数据存储器中的另外的数据组合;并且相应的至少一个执行单元被配置为根据相应的索引值从相应的至少一个数据存储器中选择所述另外的数据。
在一些实施例中,对于每个本地程序,相应的至少一个数据存储器包括用于至少一个机器学习模型的多个增量权重;并且相应的至少一个数据存储器与相应的至少一个其它处理器之间的数据传送包括控制相应的至少一个数据存储器与相应的至少一个其它处理器之间的一个或多个增量权重的传送。
在一些实施例中,对于每个本地程序,相应的至少一个执行单元被配置为根据相应的索引值从相应的数据存储器中选择一个或多个增量权重,并且使得将所选择的一个或多个增量权重传送到相应的至少一个其它处理器。
在一些实施例中,对于每个本地程序,相应的至少一个执行单元被配置为:根据相应的索引值从相应的数据存储器中选择一个或多个增量权重;并且用从多个处理器中的相应的至少一个其它处理器接收的一个或多个另外的增量权重来约简所选择的一个或多个增量权重。
在一些实施例中,计算机中的每个处理器都是片上系统。
附图说明
为了更好地理解本发明以示出如何实现本发明,现在将通过示例的方式参考附图。
图1是图示神经网络中的分布式训练的示意图,
图1A是示出一排处理器用于实现简单的“流”排全约简(reduce)算法的示意图,
图2是全约简操作的示意图,
图3A是约简-分散(reduce-scatter)操作的阶段的示意图,
图3B是全约简操作中操作的定时的示意图,
图4是根据索引值选择的操作在处理器之间交换数据的示意图,
图4A是根据取决于索引值选择的操作在处理器之间交换数据的示意图,
图4B是多片(tile)处理器的示意图,
图5是图示多片处理器内的计算和交换阶段的示意图,
图6图示了海量同步并行系统中的数据的交换,
图7图示了计算机中的多片处理器的布置,
图8图示了计算机中的片之间的数据分组的交换,
图9是多片处理器的片的简化示意图,
图10图示了多处理器计算机中的片的布置,
图11图示了为计算机中的每个处理器编译程序的方法,以及
图12是根据取决于索引值选择的操作在处理器之间交换数据的示意图。
具体实施方式
本发明的方面是在包括多片处理器的计算机的上下文中开发的,多片处理器被设计为充当机器学习工作负载的加速器。但是,本发明不限于机器学习上下文。加速器包括多个互连的处理器。在一些实施例中,每个处理器可以采用多片处理器的形式。可以被用于实现本发明的实施例的多片处理器在美国专利申请号:15/886315中进行了描述,该申请通过引用并入本文。可替代地,每个处理器可以简单地采用单个单片处理器的形式。
现在将参考附图更详细地描述本发明的示例实施例。
参考图12,其图示了根据本申请的实施例的计算机700的示例。计算机700包括多个处理器2i、2ii、2iii、2iv、2v、2vi(统称为处理器2)。每个处理器2都在也称为芯片的集成电路中实施。因此,每个处理器2都是片上系统。
多个处理器2中的每一个包括至少一个存储可由相应处理器2的至少一个执行单元420执行的指令的指令存储器410。每个处理器2还包括至少一个存储索引值的存储装置415。虽然存储单元405、410、415中的每一个在图12中被示为单独的存储元件,但是在一些实施例中,这些中的两个或更多个可以形成单个存储器单元的一部分。虽然存储单元405、410、415中的每一个被示为连续的存储器体,但是存储单元405、410、415中的一个或多个中的每一个可以包括在整个相应处理器2中分布的多个存储器单元。类似地,至少一个执行单元420中的每一个可以是多个执行单元。索引存储器415可以是寄存器。
指令存储器410中的指令集和索引存储装置415中的索引一起构成用于相应处理器2的程序。每个处理器2包括至少一个执行单元,该执行单元被配置为执行保持在指令存储器410中的修改保持在数据存储器405中的数据值的指令并且执行向其它处理器2传送数据和从其它处理器2传送数据的操作。指令存储器410中的指令在每个处理器2中是相同的。但是,保持在索引存储装置415中的索引值在处理器2之间不同。计算机700的每个处理器2在其相应的索引存储装置415中存储不同的索引值。由每个处理器2保持在存储装置415中的索引值唯一地识别计算机700的处理器2中的那个处理器2。每个处理器2被配置为根据其存储的索引值执行不同的数据传送操作集,以便在计算机700的处理器2之间适当地传送数据。索引值控制传送来自存储器405的哪些数据,并控制关于接收到的数据执行的操作。
路由硬件(图12中未示出)位于计算机700中,用于在处理器2之间路由数据。路由硬件采用外部互连72的形式,如关于图10更详细描述的。数据以数据分组的形式在处理器2之间发送。路由硬件被配置为静态地路由数据分组。在静态路由中,路由硬件包括路由表,路由表包括用于路由数据分组的固定路由信息。
计算机700在计算阶段和交换阶段之间交替。在计算阶段期间,计算机中的每个处理器2执行计算直到达到预编译的同步屏障。在屏障之后,计算机700移入交换阶段,其中处理器2彼此交换数据。
指令存储器410中的一些指令在由执行单元420执行时使执行单元420使用保持在数据存储器405中的数据执行计算。指令存储器410中的一些指令在由执行单元420执行时使得将保持在数据存储器405中的数据传送到处理器2中的另一个。指令存储器410中的一些指令在由执行单元420执行时使得将从处理器2中的另一个接收的数据存储在处理器的数据存储器405中。
因此,指令由执行单元420执行以控制在包括执行单元420的处理器2与计算机700的另一个处理器之间的数据传送。存储在索引存储装置415中的索引由执行单元420用来控制数据传送。这可以以不同的方式实现。在一些实施例中,来自指令存储器410的指令将索引值作为输入,并且在被执行时使执行单元420根据对索引值执行的计算来确定将如何执行数据传送。在一些实施例中,索引值被用于从指令存储器410中选择特定指令以执行特定数据传送操作。
索引值可以由执行单元420用来选择多个处理器2中数据将从数据存储器405传送到其的特定处理器。在一个示例中,处理器2i基于存储在索引存储装置415中的索引值从多个处理器中选择处理器2ii。执行单元420然后使数据被传送到所选择的处理器2ii。为此,执行单元420处理数据以产生包含处理器2ii的地址的数据分组,然后将由计算机2的路由硬件提供的分组分派到处理器2ii。
索引值可以由执行单元420用来选择目的地处理器上要在其中存储数据的地址。例如,处理器2i的执行单元420基于处理器2i的索引值确定处理器2ii的数据存储器205中的地址。执行单元420然后处理要传送到处理器2ii的数据以产生一个或多个数据分组,数据分组包括一个或多个报头,该报头包含处理器2ii的存储器405中数据将被存储到的地址。执行单元420使得这些数据分组被发送到处理器2ii,在那里它们被存储在存储器405中数据分组的报头中所指示的地址处。
索引值可以由执行单元420用来从数据存储器405中选择要传送的特定数据。执行单元420确定要传送的数据在数据存储器405中的地址。执行单元420然后使所选择的数据被传送到处理器之一,例如处理器2ii。执行单元可以通过将索引值的地址作为输入执行计算或者通过从指令存储器405中选择用于使特定数据被传送的指令来确定要传送的数据在数据存储器405中的地址。
索引值可以由执行单元420用来控制处理器2处对接收到的数据的处置。例如,当处理器2ii从处理器2i接收数据时,处理器2ii的执行单元420可以使用相应索引值来控制数据存储在数据存储器405中何处。附加地或可替代地,当处理器2ii从处理器2i接收数据时,处理器2ii的执行单元420可以使用相应的索引值来从数据存储器405中选择数据并执行涉及接收到的数据和从存储器405中选择的数据的操作(例如,组合数据)。处理器2ii然后可以将操作的结果存储在存储器405中。
虽然在图12中仅示出了处理器2i与2ii之间的数据传送,但是应该认识到的是,可以在计算机700中的其它处理器2之间执行数据传送,并且对于每个处理器2,相应处理器2的索引值可以被用于选择特定的数据传送操作,以按照上面针对处理器2i和2ii描述的任何方式来执行。
当训练机器学习模型时,本发明的实施例可以应用于计算机的处理器之间的数据交换。为了解释所公开技术的这种示例应用,参考图1,其示出了用于训练神经网络的分布式体系架构的示意性框图。提供了训练数据的源100。这可以是数据库或能够保持适用于正在训练的神经网络模型的训练数据的任何其它种类的数据存储库。根据神经网络模型的处理本身分布在多个处理器110a、110b、110c等上。图1中仅示出了三个单元,但容易认识到的是,可以使用任何数量的处理器。每个处理器110a、b、c从训练数据源100接收成批的训练数据。每个处理器110a、b、c保持定义模型的参数112a、112b、112c的集合。在计算函数114中用当前参数集处理传入的成批的训练数据,并且计算函数114的结果被用于生成所谓的增量,其作为对成批的训练数据和当前参数集应用计算函数的结果表示原始参数与新参数之间的差异。在许多神经网络中,这些参数被称为“权重”,因此增量值被称为“增量权重”。在图1中,权重被标记为112a、b、c,而增量权重被标记为116a、b、c。将认识到的是,在实践中,权重和增量权重被存储在处理器可访问的合适存储库中。如果权重和增量权重可以保持在本地存储器中,那么这使训练过程更加高效。
图1的体系架构的目的不是训练三个单独的模型,而是以分布式方式训练单个模型。因此,目的是让模型参数(或权重)收敛到每个处理器中的单个公共集合。从任何特定的权重集开始,并假设每个处理器处接收到的训练数据的批次不完全相同,那么在每个处理器中由每个计算函数产生的权重增量将会发生变化。因此,需要在成批的训练数据的每次迭代之后跨处理器分发增量权重的方式。这在图1中示意性地示出,其中组合函数118从每个处理器接收增量权重并执行约简增量权重的数学函数,诸如平均函数。组合函数118的输出然后被分别反馈回每个处理器内的组合电路120a、120b和120c。因此产生新的权重集作为原始权重和来自组合函数118的组合输出的组合,并且新权重118a、118b、118c被存储回本地存储器。然后,将下一批训练数据供应给每个处理器并且该过程重复多次。如果处理器的起始权重相同,那么在每次迭代之后,它们将再次被重置为相同的新值。增量权重被供应给组合函数118,在那里它们被约简,然后它们以它们的约简形式被供应回每个处理器,在那里它们可以与原始权重组合。
可以在处理器之间高效实现数据交换的一种方式是通过使用集合体,集合体是在计算机中处理数据时常用的例程。它们是使数据能够跨多个不同过程被共享和处理的例程,这些过程可以在同一处理器或不同处理器上运行。例如,如果一个过程从数据存储库中读取数据,那么它可以使用“广播”过程与其它过程共享那个数据。另一个示例是当在多个过程上需要特定函数的结果时。“约简”是要求对来自多个过程中的每个过程的数据值应用计算函数的结果。“搜集”和“分散”集合体(collective)处置多于一个数据项。某些集合体在处理机器学习应用方面变得越来越重要。
MPI(消息传递接口)是可以应用于多种并行计算体系架构的消息传递标准。MPI定义了适用于机器学习的多个集合体。一个这样的集合体被称为“全约简”。全约简操作使计算函数作用于来自不同源过程的多个数据值的结果能够在接收过程处被提供。注意的是,接收过程可以是源过程之一,并且可以有多个接收过程。全约简集合体约简来自多个源过程的数据值,并将结果分发到所有源过程(它们充当约简的结果的接收过程)。根据MPI标准,全约简集合体是通过约简来自约简集合体中所有源过程的数据值(例如,在其中一个过程处)然后将结果广播到每个源过程来实现的。
图1A是图示如何在五个处理器N0...N5的线连接的拓扑中实现全约简集合体的示意图。这些处理器可以与图1中其中分布有组合功能的处理器对应。处理器以线配置连接,其中每个处理器通过“前向”链路LF和“后向”链路LB连接到其邻居。如图中所示,并且如方向短语所暗示的,前向链路在图1A中从左到右连接处理器,并且后向链路从图1A中从右到左连接处理器。每个处理器具有指定为200的处理能力和指定为202的存储能力。每个处理器还具有使其能够经由链路LF/LB连接到其相邻处理器的一个或多个链路接口。
图2中图示了全约简集合体,其可以被用于在处理器之间交换增量权重。图2示出了处于起始状态S1的四个处理器中的每一个上的部分值或“部分”P0、P1、P2、P3的集合(向量)。在这种上下文中,处理器是处理器网络中的处理器。注意的是,每个处理器N0、N1、N2、N3都有四个“对应的”部分P0、P1、P2和P3。即,每个部分在向量中具有位置,使得P0(n)在其在处理器n上的向量中的位置与P0(n+1)在其在处理器n+1上的向量中的位置相同。后缀(n)用于表示部分所在的处理器-因此P0(0)是处理器N0上的部分P0。在约简-分散传递中,对应的部分被约简并且约简被提供给处理器之一。例如,部分P0(0)、P0(1)、P0(2)、P0(3)被约简(到r0)并放置到处理器N0上。类似地,部分P1(0)、P1(1)、P1(2)和P1(3)被约简(到r1)并放置到处理器N1上。依此类推,在中间状态S2,每个处理器具有约简r0、r1、r2和r3之一。如所解释的,约简可以通过任何组合函数
Figure BDA0003421362960000111
-它可以包括独立运算符(例如,max)或关联运算符=P1(N0)*P1(N1)*P1(N2)*P1(N3)。然后,在全搜集(all-gether)传递中,将每个约简提供给所有处理器以激活状态S3,其中每个处理器现在保持所有四个约简。注意的是,在S1中,“对应的”部分,例如P0(0)、P0(1)、P0(2)和P0(3),可以都不同,而在状态S3中,每个约简(例如,r0)在所有处理器处都相同,其中ri=f{(Pi(0),Pi(1),Pi(2)和Pi(3))}。在机器学习中,部分值P0、P1、P2、P3的集合是向量。在训练期间模型的每次传递都产生部分的向量(例如,更新后的权重)。处于状态S3的每个处理器上的约简r0、r1、r2、r3是全约简向量。在机器学习的上下文中,每个部分可以是模型中参数的更新增量的集合。可替代地(在本文未进一步描述的布置中),它可以是更新后的参数。
因此,如前所述,全约简操作由约简-分散操作后面跟着全搜集操作组成。在约简-分散操作期间,每个节点交换部分的不同元素。当约简-分散完成时,所有节点都具有最终全约简的n分之一。在全搜集期间,每个节点接收最终全约简的附加1/n,直到在n-1步之后,所有节点都具有完整的数据集。
图3A和3B图示了使用六个“虚拟”ID环的约简-分散/全搜集的示例。这些在本文中也称为“逻辑”环。图3A是图示在多个虚拟环中部分的约简的示意图。每个部分被拆分为六个片段。在图3A中,大写字母R、Y、G、B、P、L各自表示存储在每个处理器处的部分的不同片段。字母表示要彼此约简的对应片段,并且为这些片段定义“虚拟”或“逻辑”环。查看图3A,在每个部分P0、P1、P2、P3、P4和P5中的“R个”片段在结果向量
Figure BDA0003421362960000121
中被约简到单个片段中。Y、G、B、P和L片段类似。
图3B示出了时序图,其中水平轴上的时间指示全约简过程的每个步骤中的数据交换和计算。在图3A和B中,全约简过程是通过约简-分散阶段后面跟着全搜集阶段来完成的。
图3A和3B中的符号如下。分音各自被表示为P0、P1、P2、P3、P4和P5。在过程开始时,每个部分存储在相应的处理器N0、N1、N2、N3、N4、N5上。每个片段根据其片段序号及其在虚拟环中的位置被标记,在该虚拟环中它被认为要被约简。例如,RA0表示部分P0中的R片段,因为这是由处理器N0-N1-N2-N3-N4-N5形成的虚拟环中的第一个片段。RA1表示在处理器N1处计算的R片段,它位于其虚拟环中的第二个位置。YA0表示在处理器N1处计算的Y片段。“0”后缀指示它是其虚拟环中的第一个片段,Y环是N1-N2-N3-N4-N5-N0。特别注意的是,A上的后缀反映虚拟环,但不与物理处理器(或部分)对应。注意的是,图3A仅示出了前向链路上的虚拟环。图3B示出了在反向链路上正在发生等效过程,其中片段表示为B。
在步骤一中,每个虚拟环中的第一个片段(A0)从其处理器传送到下一个相邻的处理器,在那里它与那个处理器处的对应片段约简。即,RA0从N0移动到N1,在那里它与RA1约简以形成RA0,1。符号0,1指示该片段是由虚拟环中的第一个和第二个片段的约简形成的。注意的是,在同一步骤中,每个虚拟环的A0片段被同时传输。即,N1和N2之间的链路被用于传输YA0,N2和N3之间的链路被用于传输GA0,等等。在下一步中,对应的约简的片段通过前向链路被传输到它们的下一个相邻处理器。例如,RA0,1从N1传输到N2,YA0,1从N2传输到N3。注意的是,为清楚起见,并未对图3A中的所有片段进行编号。完整的片段集合和编号在图3B中示出。这个过程分五个步骤执行。在五个步骤之后,每个处理器上的所有片段都会约简。在第五步结束时,这个约简是在用于那个片段的每个对应环的最后一个处理器上。例如,R约简是在处理器N5上。
全搜集阶段的开始是通过从每个虚拟环中的最后一个处理器到第一个处理器的传输开始的。因此,用于R片段的最终约简在处理器N5上结束,为全搜集阶段的第一步做好准备。Y片段的最终约简相应地在处理器N0上结束。在全搜集阶段的下一步中,约简的片段再次传输到它们的下一个相邻处理器。因此,完全约简的R片段现在也在N2处,完全约简的Y片段现在也在N3处,依此类推。以这种方式,每个处理器在全搜集阶段结束时结束,具有部分的全部完全约简的片段R、Y、G、B、P、L。
本发明的示例实施例可以应用于控制机器学习上下文中的数据交换。具体而言,示例实施例可以应用于控制在上面关于图2、3A和3B描述的约简-分散操作期间的数据交换。
参考图4,其图示了关于图12描述的计算机700的示例实施例。这个示例实施例可以应用于在如上所述的机器学习上下文中控制处理器之间的数据交换。在图4中,数据在交换阶段的特定部分期间在计算机700的处理器2之间交换。
如图4中所示,在特定部分期间,每个处理器2的执行单元420被配置为根据保持在其索引存储装置415中的索引值从其数据存储器405中选择数据片段/元素。处理器N0的执行单元420根据处理器N0保持在存储装置415中的索引值来选择标记为RA0的数据并将其传送到处理器N1。处理器N1的执行单元420根据处理器N1保持的索引值选择标记为YA0的数据并将其传送到处理器N2。处理器N2的执行单元420根据处理器N2保持的索引值选择标记为GA0的数据并将其传送到处理器N3。处理器N3的执行单元420根据处理器N3保持的索引值选择标记为BA0的数据并将其传送到处理器N4。处理器N4的执行单元420根据处理器N4保持的索引值选择标记为PA0的数据并将其传送到处理器N5。处理器N5的执行单元420根据处理器N5保持的索引值选择标记为LA0的数据并将其传送到处理器N0
除了每个处理器2使用其索引值来选择要传送的数据之外,在从另一个处理器2接收到数据分组后,每个处理器2的执行单元420根据其存储在索引存储装置415中的索引值确定从接收到的数据分组导出的数据片段要存储在存储器405中的哪个位置。每个处理器2的执行单元420还选择与接收到的数据组合的任何其它数据片段。例如,处理器N0的执行单元420从处理器N5接收标记为LA0的数据,并且根据其索引,执行与保持在存储器405中的位置L处的数据LA1约简这个数据的指令。处理器N1的执行单元420从处理器N0接收标记为RA0的数据,并且根据其索引,执行与保持在存储器405中的位置R处的数据RA1约简这个数据的指令。处理器N2的执行单元420从处理器N1接收标记为YA0的数据,并且根据其索引,执行与保持在存储器405中的位置Y处的数据YA1约简这个数据的指令。处理器N3的执行单元420从处理器N2接收标记为GA0的数据,并且根据其索引,执行与保持在存储器405中的位置G处的数据GA1约简这个数据的指令。处理器N4的执行单元420从处理器N3接收标记为BA0的数据,并根据其索引,执行用保持在存储器405中的位置B处的数据BA1约简这个数据的指令。处理器N5的执行单元420从处理器N4接收标记为PA0的数据,并且根据其索引,执行用保持在存储器405中的位置P处的数据PA1约简这个数据的指令。处理器N0的执行单元420从处理器N5接收标记为LA0的数据,并根据其索引,执行用保持在存储器405中的位置L处的数据LA1约简这个数据的指令。
每个被传送的数据片段可以与图3A和3B中所示的数据片段对应。在这种情况下,每个数据片段与每个处理器2使用其训练数据计算出的增量值的子集对应。共同地,保持在存储器405中并由字母R、Y、G、B、P、L表示的数据值形成使用提供给相应处理器2的训练数据计算出的增量值的部分向量。图4图示了图2中所示的约简-分散操作的第一步,其中向每个处理器2提供包括一个或多个增量权重的约简的片段集合。传送到接收方处理器2的一个或多个增量权重的每个片段与保持在那个接收方处理器的存储器405中的增量权重的对应片段组合。例如,片段RA0从处理器N0传送到处理器N1,并在图4中所示的步骤中与片段RA1组合。通过传送片段并在后续步骤中组合它们,执行约简-分散操作。在每一步,在处理器之间交换的片段取决于保持在索引值存储装置415中的索引值。每个处理器2的至少一个执行单元使用这个索引值来确定要发送哪个片段以及将其接收的每个片段存储在存储器中的何处。
参考图4A,图4A图示了全搜集过程期间的数据交换,该过程在约简-分散过程之后执行,作为图2中所示的全约简过程的一部分。在图2中,处理器中的存储器405中所示的每个片段是约简的片段,即,在约简-分散操作开始之前存在于图4中的存储器中的对应片段的组合。
每个处理器2的至少一个执行单元420被配置为根据其存储的索引值来选择并传递约简的片段。处理器N0的执行单元420根据由处理器N0保持的索引值来选择并向处理器N1传送标记为
Figure BDA0003421362960000151
的数据。处理器N1的执行单元420根据由处理器N1保持的索引值选择并向处理器N2传送标记为
Figure BDA00034213629600001513
的数据。处理器N2的执行单元420根据由处理器N2保持的索引值选择并向处理器N3传送标记为
Figure BDA0003421362960000152
的数据。处理器N3的执行单元420根据由处理器N3保持的索引值选择并向处理器N4传送标记为
Figure BDA0003421362960000153
的数据。处理器N4的执行单元420根据由处理器N4保持的索引值选择并向处理器N5传送标记为
Figure BDA0003421362960000155
的数据。处理器N5的执行单元420根据由处理器N5保持的索引值选择并向处理器N0传送标记为
Figure BDA0003421362960000154
的数据。这些数据传送中的每一个都完成了全搜集操作的第一步。通过执行后续步骤,为每个处理器2提供每个约简的片段。
除了每个处理器2使用其索引值来选择要传送的数据之外,在从另一个处理器2接收到数据后,接收方处理器根据存储在索引存储装置415中的索引值来确定数据将存储在存储器中的何处。例如,处理器N0的执行单元420从处理器N5接收标记为
Figure BDA0003421362960000156
的数据,并根据其索引执行将这个数据存储在存储器405中的位置L处的指令。处理器N1的执行单元420从处理器N0接收标记为
Figure BDA0003421362960000157
的数据,并根据其索引执行将这个数据存储在存储器405中的位置R处的指令。处理器N2的执行单元420从处理器N1接收标记为
Figure BDA0003421362960000158
的数据,并根据其索引执行将这个数据存储在存储器405中的位置Y处的指令。处理器N3的执行单元420从处理器N2接收标记为
Figure BDA0003421362960000159
的数据,并根据其索引执行将这个数据存储在存储器405中的位置G处的指令。处理器N4的执行单元420从处理器N3接收标记为
Figure BDA00034213629600001510
的数据,并根据其索引执行将这个数据存储在存储器405中的位置B处的指令。处理器N5的执行单元420从处理器N4接收标记为
Figure BDA00034213629600001511
的数据,并根据其索引执行将这个数据存储在存储器405中的位置P处的指令。处理器N0的执行单元420从处理器N5接收标记为
Figure BDA00034213629600001512
的数据,并根据其索引执行将这个数据存储在存储器405中的位置L处的指令。
每个处理器包括用于将数据(诸如图4和4A中的存储器中所示的数据)传送到另一个处理器的完整指令集,其中索引值控制数据传送。索引可以以不同的方式控制数据的传送。
在一些实施例中,由每个处理器保持的索引值确定指令集中由每个执行单元420执行以执行将适当数据片段从存储器405传送到另一个处理器2的指令。每个处理器2还包括用于在存储器405中的适当位置处接收和存储片段的完整指令集。由每个处理器2保持的索引值确定指令集中由处理器2的至少一个执行单元420执行以将接收到的片段存储在适当位置处的指令。在这种情况下,执行单元420执行取决于索引值的分支操作以选择被执行用于执行相关数据传送的特定指令集。
在一些实施例中,每个处理器2的至少一个执行单元402使用索引值作为输入来执行算术运算以确定数据存储器405中将从其读取数据或写入数据的地址。
在图4和4A中,每个处理器2被示为具有统一的数据存储器405和指令存储器410。但是,这些存储器可以分布在它们相应的处理器2中。在一些实施例中,每个处理器2可以包括多个处理单元,在本文将其称为片。在美国专利申请号:15/886315中描述了这种布置,该申请通过引用并入。每个片包括它所属的处理器2的索引的副本,并且被配置为从其指令集执行根据索引值实现适当的数据传送操作的操作,诸如上面参考图12、4和4A讨论的那些操作。
参考图4B,其图示了多片处理器2的示例。处理器2包括多个处理器片4的阵列6和在片4之间连接的互连34。处理器2可以被单独实现为包装在同一IC包装中的多个管芯之一。互连34在本文中也可以被称为“交换架构”34,因为它使片4能够彼此交换数据。每个片4包括处理器和存储器的相应实例。例如,作为说明,处理器2可以包括数百个或甚至超过一千个的片4的数量级。为完整起见,还注意的是,本文所提到的“阵列”不一定暗示片4的任何特定数量的维度或物理布局。
在实施例中,每个处理器2还包括一个或多个外部链路8,从而使得处理器2能够连接到一个或多个其它处理器(例如,同一处理器2的一个或多个其它实例)。这些外部链路8可以包括以下任何一项或多项:用于将处理器2连接到主机处理器的一个或多个处理器到主机链路,和/或一个或多个处理器到处理器链路,用于与同一IC包装或卡上或不同卡上的处理器2的一个或多个其它实例连接在一起。在一个示例布置中,处理器2以要由处理器2处理的输入数据的形式从经由处理器到主机链路之一连接到处理器的主机处理器(未示出)接收工作。处理器2的多个实例可以通过处理器到处理器链路一起连接到卡中。因此,主机访问具有多个处理器2的计算机,根据主机应用所需的工作负载,每个处理器都被构建为芯片上的多片系统。
互连34被配置为使阵列6中的不同片4能够彼此通信。但是,除了在同一个片4上的线程之间可能存在依赖关系之外,在阵列6中的不同片4上运行的程序的部分之间也可以存在依赖关系。因此,需要一种技术来防止一个片4上的一段代码在它所依赖的数据通过另一个片4上的另一段代码变得可用之前运行。
每个片4本身是能够执行来自本地指令存储器的指令(代码)并处置本地数据存储器中的数据的处理器。片4可以包括桶状线程处理器和存储器的相应实例。例如,作为说明,处理器2可以包括数百个或甚至超过一千个的片4的数量级。为完整起见,还注意的是,本文所提到的“阵列”不一定暗示片4的任何特定数量的维度或物理布局。
处理器2上的片4之间的通信以时间确定性方式发生。但是,其它形式的片间交换也是可能的。在阵列6中的不同片4上运行的程序的部分之间可以存在依赖关系。即,在一个片上处理数据可以取决于来自另一个片的结果,例如,可以提供另一个片所依赖的结果。因此,需要一种技术来防止一个片4上的一段代码在它所依赖的数据通过另一个片4上的另一段代码变得可用之前运行。
用于AI和数据科学的并行编程模型通常遵循3阶段迭代执行模型:计算、屏障和交换。这意味着进出处理器的数据传送通常依赖于屏障,以提供处理器之间以及每个处理器与主机之间的数据一致性。通常使用的数据一致性模型是海量同步并行(BSP)、陈旧同步并行(SSP)和异步。本文描述的实施例使用BSP模型,但是显然可以使用其它同步模型作为替代。
参考图5和6,它们图示了BSP交换方案的实施方式,其中每个片4在交替的周期中执行计算阶段33和交换阶段32,通过片之间的屏障同步30彼此分开。在图5和6所示的情况下,在每个计算阶段33和随后的交换阶段32之间放置屏障同步。在计算阶段33期间,每个片4在片上本地执行一个或多个计算任务,但不与片4中的任何其它片交流这些计算的任何结果。在交换阶段32中,每个片4被允许将来自前面计算阶段的计算的一个或多个结果交换给一个或多个其它片和/或从其交换,但不执行任何新的计算,直到它从其它片4接收到其(一个或多个)任务具有依赖关系的任何数据。除了在前面计算阶段中计算出的数据之外,它也不会将任何数据发送到任何其它片。不排除在交换阶段32中可以执行诸如内部控制相关操作之类的其它操作。片组外部的通信可以可选地使用BSP机构,但可替代地可以不使用BSP并且可以替代地使用它自己的某种其它同步机构。
根据BSP原理,屏障同步30被放置在从计算阶段33过渡到交换阶段32的接合点处,或从交换阶段32过渡到计算阶段33的接合点处,或两者。即,或者:(a)在允许组中的任何片前进到接下来的交换阶段32之前,所有片4都要求完成它们相应的计算阶段33,或者(b)在允许组中的任何片进行到接下来的计算阶段33之前,该组中的所有片4都要求完成它们相应的交换阶段32,或者(c)这两个条件都被强制执行。在所有三个变体中,是各个片在阶段之间交替,并且整个组件同步。交换和计算阶段的序列然后可以重复多次。在BSP术语中,交换阶段和计算阶段的每次重复有时被称为“超级步骤”(但注意的是,在文献中该术语并不总是一致地被使用:有时每个个体交换阶段和计算阶段单独称为超级步骤,而在其它地方,如本文采用的术语中,交换和计算阶段一起被称为超级步骤)。
还要注意的是,不排除同一处理器2或不同处理器上片4的多个不同的独立组可以各自形成彼此异步操作的单独的相应BSP组,其中计算、同步和交换的BSP周期只在每个给定的组内强加,但每个组都独立于其它组这样做。即,多片阵列6可以包括多个内部同步组,每个组独立操作并且与其它这样的组异步操作(稍后更详细地讨论)。在一些实施例中,存在同步和交换的分层分组,如稍后将更详细地讨论。
图6图示了在强加:(a)从计算阶段33到交换阶段32的屏障同步(参见以上)的情况下在阵列6中一些或所有片的组4i、4ii、4iii当中实现的BSP原理。注意的是,在这种布置中,一些片4被允许开始计算33,而其它一些片仍在交换。
处理器2上的片4之间的通信以时间确定性方式发生,其中数据分组在没有报头的情况下被传输。这在我们较早的美国专利申请号:15/886315中进行了解释。
在实施例中,处理器2的多个实例连接在一起以形成跨越多个处理器2的片4的甚至更大的阵列。这在图7中图示。处理器2通过外部互连72(经由图7中所示的外部链路8)连接在一起。这可以在同一IC包装、同一卡上的不同IC包装和/或不同卡上的不同IC包装上的处理器2之间连接。除了提供用于在不同处理器上的片4之间交换数据的管道之外,外部互连72还提供用于在不同处理器2上的片4之间执行屏障同步和聚合不同处理器2上的片4的本地退出状态的硬件支持。
图8图示了用于在处理器2之间进行通信(外部交换)的示例性机构。这种机构是非时间确定性的。该机构在外部互连72中的专用硬件逻辑中实现。数据以分组的形式通过外部互连72发送。与通过内部互连34发送的分组不同,这些分组具有报头:由于传输的次序可以改变,它们要求在分组报头中呈现目的地地址。外部互连72包括路由表,用于根据数据分组的报头在不同处理器之间静态地路由数据分组。
在物理层处,互连机构是有损的,但在事务层处,由于链路层的体系架构,该机构不是有损的:如果分组没有得到确认,那么它将被互连72中的硬件自动重新发送。但是,在数据链路层丢失和重新发送的可能性意味着通过外部互连72的数据分组的递送不是时间确定性的。另外,给定交换的所有分组可以在时间上以任何次序一起到达或分开到达,因此外部互连要求流量控制和排队。另外,互连可以使用时钟数据恢复(CDR)技术从具有足够数据信号过渡的接收到的数据流推断时钟以维持位锁定。这个推断的时钟与发送时钟的相位关系未知,因此表示非确定性的附加源。
如图所示,外部互连72包括外部交换块(XB)78。编译器指定片4之一向交换块78发送外部交换请求(XREQ)(操作S1)。XREQ是包括一个或多个控制分组的消息,指示片4中的哪些具有要发送到另一个处理器2上的另一个或多个片4的数据分组(内容)。这在图8中通过勾号和叉号示意性地图示:作为示例场景,标有勾号的那些具有要向外部发送的数据分组,而标有叉号的那些则没有。在操作S2中,交换块78将交换开启(XON)控制分组发送到具有要向外部发送的数据的片4中的第一个。这使得第一片开始经由外部互连78将其分组发送到相关目的地(操作S3)。使用外部互连78中的路由表将在外部互连处从第一片接收到的数据分组静态地路由到目的地。如果在任何时候XB 78无法继续向互连发送分组(例如,由于先前的分组丢失和互连中的重新传输,或由于许多其它XB和片对外部互连过度订阅),那么XB78将在XB队列溢出之前向那个片发送交换关闭(XOFF)。一旦拥塞被清除并且XB 78在其队列中再次具有足够的空间,它就将向片发送XON,从而允许它继续传输其内容。一旦这个片发送了它的最后一个数据分组,在操作S4中,交换块78就向这个片发送交换关闭(XOFF)控制分组,然后在操作S5中向下一个片4发送另一个XON以及要发送的数据分组,等等。XON和XOFF的信令在外部交换块78形式的专用硬件逻辑中被实现为硬件机构。
参考图9,其图示了作为处理器2的一部分的片4的示例。片4包括至少一个执行单元905,其可以执行算术和逻辑运算、地址计算、加载和存储操作以及其它操作,如存储在指令存储器910中的指令所定义的。执行单元905被配置为执行对保持在数据存储器915中的数据执行操作的指令。保持在每个片4的指令存储器910中的指令可以被认为是保持在为图4和4A中的整个处理器2示出的指令存储器410中的指令集的子集。指令存储器410可以被认为是包括每个片4的指令存储器910的分布式存储器。
保持在指令存储器910中的指令在每个处理器2的对应片4中可以是相同的。参考图10,其图示了每个处理器2的不同片4如何彼此对应。第一处理器2i包括片4ia。第二处理器2ii包括片4iia。第三处理器2iii包括片4iiia。每个片4ia、4iia和4iiia都加载了相同的指令。由每个片4ia、4iia、4iiia的执行单元905执行的操作根据它们所属的相应处理器2的索引而不同。类似地,第一处理器2i包括片4ib。第二处理器2ii包括片4iib。第三处理器2iii包括片4iiib。每个片4ib、4iib和4iiib都加载了相同的指令。由每个片4ib、4iib、4iiib的执行单元905执行的操作根据它们所属的处理器2的索引而不同。因此,将认识到的是,由于处理器2中的每个对应片4加载有完全相同的指令集,因此计算机700中的每个处理器2包括相同的整体指令集。
返回去参考图9,在计算阶段期间,对保持在数据存储器915中的数据执行某些操作以更改这些数据的值。由于保持在指令存储器910中的指令在跨不同处理器2的对应块4中相同,因此在计算阶段期间为操纵保持在数据存储器915中的数据而执行的操作跨处理器2的对应块可以是相同的。但是,在一些实施例中,保持在指令存储器910中的指令可以是数据相关的,使得在计算阶段期间根据保持在数据存储器915中的不同数据集来执行不同的操作。
片4包括保持在索引值存储库920中的索引值。在计算阶段期间由执行单元905执行以操纵保持在数据存储器915中的数据的操作与保持在索引值存储库920中的索引值无关。但是,由执行单元905在与其它处理器2的交换阶段执行的操作取决于索引值。虽然索引存储装置920被示为与指令存储器910分开,但是在一些实施例中索引存储装置920和指令存储器910可以形成单个存储器阵列的一部分。
如图所示,保持在数据存储器915中的数据被划分为不同的部分/片段(示为切片(slice))。在与其它片交换数据之前,至少一个执行单元905被配置为执行将数据从一个或多个部分传送到发送缓冲器925的指令。执行单元905根据保持在索引存储器920中的索引值来选择要传送的数据。执行单元905然后将选择的数据传递到发送缓冲器925。在交换阶段期间,执行单元905执行经由接口8发送数据的指令。经由接口8发送数据包括将报头附加到具有用于另一个处理器2中的数据的目的地地址的数据分组。根据上面关于图8讨论的方案,数据分组被发送到那个处理器2。
在交换阶段期间,片4被配置为接收一个或多个数据分组。这些数据分组是从其它处理器2上的片接收的。在接收到一个或多个数据分组后,数据分组被存储在接收缓冲器930中。至少执行单元905根据保持在存储装置920中的索引值执行处置接收到的数据的指令。至少一个执行单元905被配置为根据保持在存储装置920中的索引值在数据存储器915中的位置处存储从数据分组导出的数据。至少一个执行单元905还可以在将操作的结果存储在存储器915中之前利用来自接收到的数据分组的数据和存储在存储器915中的数据执行诸如约简操作之类的操作。
因此,保持在存储器920中的索引值被至少一个执行单元905用于以下至少一项:从存储器915中选择某些地址处的数据进行发送,选择数据用于对接收到的数据执行操作(例如,约简操作),以及将从接收到的数据导出的结果存储在存储器915中取决于索引值的特定地址处。
存在索引值可以被执行单元905用来选择存储器915中用于存储数据的地址的不同方式。
在一些实施例中,不同的数据部分在存储器915中连续布置。执行单元905被配置为根据索引值计算存储器915中要读取或写入数据的地址。执行单元905通过执行指令存储器910中的指令中定义的操作来计算地址。操作是算术运算。
在一些实施例中,指令存储器910存储代码的多个部分,每个部分被配置为不同地控制数据传送。例如,代码的一个部分可以使存储器915中某个存储器位置处的数据被传输到另一个处理器2,而代码的另一个部分可以使执行单元905使存储器915中不同存储器位置处的数据被传输到另一个处理器2。代码的另一个部分可以使接收到的数据存储在存储器915中的某个位置处或使得对接收到的数据执行某个操作。执行单元905执行来自指令存储器915的代码,并且在执行序列中要从存储器915读取数据或向存储器915写入数据的点,执行单元905执行选择代码的一部分用于对数据执行读或写操作的分支操作。根据索引值选择代码的部分。
根据本文公开的技术的示例性应用,每个处理器2设有用于产生增量权重的不同训练数据集以便训练机器学习模型。在这种情况下,每个片4设有训练数据的不同集合,用于产生一个或多个增量权重。每个处理器2的所有片4一起产生完整的增量权重集合,其与在其它处理器2上产生的增量权重求平均。
在一些实施例中,执行单元905被配置为在处理不同的工作线程之间切换。在这种情况下,执行单元905是美国专利申请号:15/886315中描述的桶形线程处理器的一部分。在这种情况下,每个工作线程被编程为执行与机器智能图中相应的各个处理器相关联的计算。在这种情况下,处理器之间的至少一些边与线程之间的数据交换对应。在之间交换数据的线程可以是运行在同一个执行单元905上的线程,或者可以是运行在不同片4的执行单元上的线程。一些可以涉及处理器2的不同片之间的交换。存储器915中所示的切片可以各自与和与处理器之间的特定边相关联的增量值对应,该增量值在训练期间由执行单元905计算。存储器915也被示为包括另外的数据。这另外的数据可以包括用于产生增量值的数据,诸如训练数据、权重的当前值以及定义机器学习模型的任何另外的数据(诸如激活函数、每层中的处理器的数量等)。
参考图11,其图示了为计算机(诸如图12中所示的计算机700)中的每个处理器编译程序的编译过程。上面讨论的指令集和索引值一起构成用于在每个处理器2上执行的程序。用于每个处理器2的编译的指令集是相同的,用于每个处理器2的不同索引值被添加到指令集。
方法1100由编译器执行,该编译器可以在任何合适的计算装置上执行,该计算装置包括至少一个执行单元和至少一个保持用于由至少一个执行单元执行的计算机代码的存储器。
在步骤S1110处,编译器编译单个可执行指令集以提供给每个处理器2。单个可执行指令集采用可执行映像的形式。可执行指令集可以包括多个指令子集,每个子集由处理器2的不同片4执行。
在步骤S1120处,编译器为计算机700中的每个处理器2确定与处理器2相关联的索引值。确定的每个索引值唯一地识别计算机700内的不同处理器2。
在步骤S1130处,编译器为每个处理器2生成本地程序,该本地程序包括单个指令集和与处理器2相关联的索引值。编译器通过为每个处理器2获取在S1110中产生的已编译的指令集并用在S1120中确定的处理器的索引值修补这个指令集来这样做。
将认识到的是,以上实施例仅通过示例的方式进行了描述。虽然已经描述了特定实施例,但是一旦给出了本文的公开,所公开技术的其它应用和变体对于本领域技术人员来说就可以变得显而易见。

Claims (15)

1.一种计算机,包括多个处理器,每个处理器被配置为在计算机的计算阶段期间对数据执行操作,并且在同步屏障之后,在计算机的交换阶段期间与至少一个其它处理器交换数据,每个处理器包括:
多个处理单元;
至少一个存储装置,包括包含相同的可执行指令集的程序和识别所述多个处理器当中的相应处理器的索引值,其中相应的至少一个存储装置包括在处理器的每个处理单元中的至少一个存储器,每个至少一个存储器存储所述处理器的索引值的副本和所述可执行指令集的子集;
多个数据存储器,存储用于由所述可执行指令集指定的计算的数据,其中所述多个数据存储器包括在处理器的所述多个处理单元中的每个处理单元中的数据存储器;
多个执行单元,包括处理器的所述多个处理单元中的每个处理单元中的执行单元,至少一些执行单元中的每个执行单元被布置为执行相应的可执行指令子集中的一个或多个以:
在计算机的交换阶段期间根据相应的索引值来选择用于在相应的处理单元的数据存储器和至少一个其它处理器之间执行数据传送的操作;以及
在交换阶段期间执行用于执行数据传送的所选择的操作。
2.如权利要求1所述的计算机,其中,对于至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元,根据相应的索引值选择用于执行数据传送的操作包括选择向其传送数据的相应的至少一个其它处理器。
3.如权利要求1至权利要求2所述的计算机,其中,对于至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元,操作使得在根据相应索引值选择的相应数据存储器的区域与相应的至少一个其它处理器之间进行数据传送。
4.如权利要求3所述的计算机,其中,对于所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元,相应的执行单元被配置为通过对相应的索引值执行算术运算来计算数据存储器的相应区域的地址。
5.如权利要求3所述的计算机,其中,对于所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元,相应的执行单元被配置为根据相应的索引值分支到相应的可执行指令的子集中的至少一个指令,其中所述至少一个指令在由相应的执行单元执行时使得在数据存储器的相应区域与所述相应的至少一个其它处理器之间进行数据传送。
6.如权利要求3至5中的任一项所述的计算机,其中,对于所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元,所述操作包括将从相应的至少一个其它处理器接收的数据存储在数据存储器的相应区域中。
7.如前述权利要求中的任一项所述的计算机,其中,对于所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元,所述操作包括根据相应的索引值来选择存储在相应数据存储器中的数据并将所选择的数据传输到所述相应的至少一个其它处理器。
8.如权利要求7所述的计算机,其中所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元的执行单元被配置为处理相应的所选择的数据以产生包括相应的所选择的数据和报头的数据分组,所述报头包括所述相应的至少一个其它处理器上的缓冲器的地址。
9.如前述权利要求中的任一项所述的计算机,包括路由硬件,被配置为静态地路由在数据传送中被传送的数据。
10.如前述权利要求中的任一项所述的计算机,其中,对于所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元:
所述操作包括将从所述相应的至少一个其它处理器接收的数据与存储在相应的数据存储器中的另外的数据组合;以及
相应的执行单元被配置为根据相应的索引值从相应的数据存储器中选择所述另外的数据。
11.如前述权利要求中的任一项所述的计算机,其中,对于所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元:
相应的数据存储器包括用于至少一个机器学习模型的多个增量权重;以及
相应的数据存储器和所述相应的至少一个其它处理器之间的数据传送包括控制相应数据存储器和所述相应的至少一个其它处理器之间的一个或多个增量权重的传送。
12.如权利要求11所述的计算机,其中,对于所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元,所述相应的至少一个执行单元被配置为根据相应的索引值从相应的数据存储器中选择一个或多个增量权重,并且使得将所述选择的一个或多个增量权重传送到所述相应的至少一个其它处理器。
13.如权利要求11或权利要求12所述的计算机,其中,对于所述至少一些处理器中的每个处理器的至少一些处理单元中的每个处理单元,相应的执行单元被配置为:
根据相应的索引值从相应的数据存储器中选择所述一个或多个增量权重;以及
用从所述相应的至少一个其它处理器接收的一个或多个另外的增量权重来约简所选择的一个或多个增量权重。
14.如权利要求1所述的计算机,其中每个处理器是片上系统。
15.一种生成多个程序的计算机实现的方法,每个程序适合由包括多个处理器的计算机的处理器执行,每个处理器具有多个处理单元,每个处理单元包括用于保持相应处理器的相应程序的子集的至少一个存储器、用于执行相应程序的相应子集的执行单元和用于保持数据的数据存储器,所述方法包括:
编译单个可执行指令集;
为每个处理器确定与相应处理器相关联的索引值;以及
为每个处理器生成包括单个指令集和相应索引值的本地程序,
其中在本地程序分配给本地程序的相应处理器时每个本地程序的每个子集被调度在相应处理器的执行单元之一上执行以使得:
在计算机的计算阶段期间对数据执行操作;
根据相应的索引值选用于在计算机的交换阶段期间在相应处理单元的数据存储器与至少一个其它处理器之间执行数据传送的操作;以及
在同步屏障之后,在交换阶段期间执行用于执行数据传送的所选择的操作。
CN202080045268.0A 2019-12-23 2020-12-16 具有多个处理器的计算机中的通信 Pending CN113994318A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1919148.5 2019-12-23
GB1919148.5A GB2590658A (en) 2019-12-23 2019-12-23 Communication in a computer having multiple processors
PCT/EP2020/086418 WO2021130075A1 (en) 2019-12-23 2020-12-16 Communication in a computer having multiple processors

Publications (1)

Publication Number Publication Date
CN113994318A true CN113994318A (zh) 2022-01-28

Family

ID=69322866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080045268.0A Pending CN113994318A (zh) 2019-12-23 2020-12-16 具有多个处理器的计算机中的通信

Country Status (7)

Country Link
US (2) US11599363B2 (zh)
EP (1) EP3973465A1 (zh)
JP (1) JP7357767B2 (zh)
KR (1) KR20220010747A (zh)
CN (1) CN113994318A (zh)
GB (1) GB2590658A (zh)
WO (1) WO2021130075A1 (zh)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3003418B2 (ja) * 1992-09-25 2000-01-31 株式会社日立製作所 プロセッサ間データ通信方法
JPH06266683A (ja) 1993-03-12 1994-09-22 Toshiba Corp 並列処理装置
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US6643763B1 (en) 2000-02-28 2003-11-04 International Business Machines Corporation Register pipe for multi-processing engine environment
FR2809204B1 (fr) * 2000-05-17 2003-09-19 Bull Sa Interface applicative multiprosseur, ne necessitant pas l'utilisation d'un systeme d'exploitation multiprocesseur
US6738842B1 (en) * 2001-03-29 2004-05-18 Emc Corporation System having plural processors and a uni-cast/broadcast communication arrangement
US8316190B2 (en) * 2007-04-06 2012-11-20 Waratek Pty. Ltd. Computer architecture and method of operation for multi-computer distributed processing having redundant array of independent systems with replicated memory and code striping
NL2002799C2 (en) * 2009-04-24 2010-10-26 Univ Delft Tech Data structure, method and system for address lookup.
US10698859B2 (en) * 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US9122700B2 (en) * 2011-12-20 2015-09-01 Los Alamos National Security, Llc Parallel log structured file system collective buffering to achieve a compact representation of scientific and/or dimensional data
US10055228B2 (en) * 2013-08-19 2018-08-21 Shanghai Xinhao Microelectronics Co. Ltd. High performance processor system and method based on general purpose units
GB2569269B (en) 2017-10-20 2020-07-15 Graphcore Ltd Synchronization in a multi-tile processing arrangement
GB2569775B (en) * 2017-10-20 2020-02-26 Graphcore Ltd Synchronization in a multi-tile, multi-chip processing arrangement
US10963003B2 (en) * 2017-10-20 2021-03-30 Graphcore Limited Synchronization in a multi-tile processing array

Also Published As

Publication number Publication date
KR20220010747A (ko) 2022-01-26
GB201919148D0 (en) 2020-02-05
GB2590658A (en) 2021-07-07
WO2021130075A1 (en) 2021-07-01
US11907725B2 (en) 2024-02-20
US20210191731A1 (en) 2021-06-24
US20230185577A1 (en) 2023-06-15
US11599363B2 (en) 2023-03-07
JP2022545222A (ja) 2022-10-26
JP7357767B2 (ja) 2023-10-06
EP3973465A1 (en) 2022-03-30

Similar Documents

Publication Publication Date Title
JP6797880B2 (ja) マルチタイル、マルチチップ処理構成における同期
KR102228501B1 (ko) 컴파일러 방법
KR102167059B1 (ko) 멀티-타일 프로세싱 어레이의 동기화
KR102253628B1 (ko) 복수-쓰레드 프로세서에서의 복수 쓰레드들의 상태들의 결합
KR102178190B1 (ko) 명령 세트
KR102228502B1 (ko) 컴퓨터 프로세싱의 타이밍 제어
JP7357767B2 (ja) 複数のプロセッサを有するコンピュータにおける通信
US20210311807A1 (en) Update of Model Parameters in a Parallel Processing System
US11940940B2 (en) External exchange connectivity
US11726937B2 (en) Control of data sending from a multi-processor device
US11625357B2 (en) Control of data transfer between processors
JP7487334B2 (ja) 処理ノード動作の制御
US20220019668A1 (en) Hardware Autoloader

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination