CN112673351B - 流式传输引擎 - Google Patents
流式传输引擎 Download PDFInfo
- Publication number
- CN112673351B CN112673351B CN201980045007.6A CN201980045007A CN112673351B CN 112673351 B CN112673351 B CN 112673351B CN 201980045007 A CN201980045007 A CN 201980045007A CN 112673351 B CN112673351 B CN 112673351B
- Authority
- CN
- China
- Prior art keywords
- gateway
- data
- accelerator
- synchronization
- instructions
- 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.)
- Active
Links
- 238000012546 transfer Methods 0.000 claims abstract description 90
- 238000003860 storage Methods 0.000 claims abstract description 85
- 230000004888 barrier function Effects 0.000 claims description 67
- 230000004044 response Effects 0.000 claims description 20
- 238000013480 data collection Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 34
- 239000000872 buffer Substances 0.000 description 29
- 238000007726 management method Methods 0.000 description 27
- 230000007246 mechanism Effects 0.000 description 24
- 238000000034 method Methods 0.000 description 22
- 230000001360 synchronised effect Effects 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 17
- 239000004744 fabric Substances 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000002360 preparation method Methods 0.000 description 9
- 238000011144 upstream manufacturing Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 244000035744 Hura crepitans Species 0.000 description 4
- 238000013434 data augmentation Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000036316 preload Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/10—Architectures or entities
- H04L65/102—Gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/401—Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Linguistics (AREA)
- Medical Informatics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
一种用于将主机与用于充当主机的工作加速器的子系统相接的网关。该网关实现在预编译的数据交换同步点处将批次数据传送到子系统。该网关包括具有数据移动器引擎和存储器管理引擎的流式传输引擎,该数据移动器引擎和存储器管理引擎被配置为协调地执行来自工作描述符的指令。存储器管理引擎被配置为执行来自工作描述符的指令,以在外部存储和与网关相关联的本地存储器之间传送数据。数据移动器引擎被配置为执行来自工作描述符的指令,以在与网关相关联的本地存储器和子系统之间传送数据。
Description
技术领域
本公开涉及在计算机系统中使用的将主机与用于充当工作加速器的子系统相接的网关,并且尤其涉及通过网关来流式传输数据。
背景技术
在为复杂或大容量的应用处理数据的上下文中,工作加速器可以是从主机系统向其卸载(offload)某些数据的处理的子系统。此类工作加速器可以具有用于执行特定类型的处理的专用硬件。
作为示例,在机器智能中发现了可以使用此类专用的加速器子系统的一类计算领域。如机器智能的本领域技术人员所熟悉的,机器智能算法是基于对“知识模型”执行迭代更新,该“知识模型”可以由多个互连节点的图来表示。每个节点的实现都涉及对数据的处理,并且图的互连对应于要在节点之间交换的数据。通常,每个节点的至少一些处理可以独立于图中的一些或所有其他节点来执行,并因此大型的图有很大的机会使用并行处理。因此,专用于机器智能应用的工作加速器可以包括很大程度的并行处理。可以通过处理器的手段来实现一种形式的并行性,该处理器包括布置在同一芯片(chip)(即,同一晶片(die))上的多个区块(tile),每个区块包括其各自单独的相应处理单元和存储器(包括程序存储器和数据存储器)。因此,可以在不同的区块上并行地运行程序代码的单独部分。区块经由芯片上互连被连接在一起,这使得能够实现在区块之间交换数据。此类加速器可以用作主机系统的子系统,以对提供给它的数据集执行并行处理。
一般来说,运行在不同区块上的程序部分之间可能存在依赖性。因此,需要一种技术来防止一个区块上的一段代码在其所依赖的、通过另一个区块上的另一段代码可获得的数据之前运行。有许多用于实现此目的的可能方案,举例而言,在此将其中一种方案描述为“BSP(bulk synchronous parallel)”,即批量同步并行。根据BSP,每个区块以交替的周期来执行计算阶段和交换阶段。在计算阶段期间,每个区块在区块上本地执行一个或多个运算任务,但不将其任何运算结果与任何其他区块进行通信。在交换阶段中,允许每个区块将来自前一计算阶段的一个或多个运算结果交换到组中的一个或多个其他区块和/或从组中的一个或多个其他区块交换来自前一计算阶段的一个或多个运算结果,但是该区块尚未进入到下一计算阶段。此外,根据BSP原理,在从计算阶段转换到交换阶段的交接、从交换阶段转换到计算阶段的交接、或这两者的交接处放置屏障同步。也就是说:(a)在允许组中的任何一个区块进入到下一个交换阶段之前,要求所有区块完成它们各自的计算阶段,或者(b)在允许组中的任何一个区块进入到下一个计算阶段之前,要求组中的所有区块完成它们各自的交换阶段,或者(c)这两者。在某些情况下,可以允许执行运算的区块与诸如网卡或存储磁盘之类的其他系统资源通信,只要不涉及与组中的其他区块进行的通信。
在交换阶段期间,数据交换不仅可能在加速器中内部地(即,在区块之间)发生,并且在某些情况下可能需要在加速器和外部存储(例如,主机系统)之间或者在不同加速器上的区块之间发生。当子系统充当工作加速器时,其被配置为对提供给它的(诸如来自主机系统的)数据集进行处理。应当有利地调取数据集,使得可以在恰当的预编译的数据交换同步点处将它们提供给加速器,这可以表示屏障同步。
当通过将子系统直接或间接连接在一起来扩展子系统时,可能会出现一个问题,即如何确保当在预编译的数据交换同步点处需要数据时,该数据是可用的以便递送给加速器。可以在将该数据在预编译的数据交换同步处递送给加速器之前从外部存储中调取该数据,外部存储可以包括不同类型的存储,例如主机存储,或网络附加存储。
发明内容
本发明使用网关的概念,该网关可用于将来自外部存储的数据提供给加速器,并因此将它们进行互连以扩展充当工作加速器的子系统。外部存储可以是主机存储、网络访问存储、另一网关处的存储或另一加速器处的存储。在某些形式的网关中,网关本身是数据的主动处理器并自主地管理其数据流。网关充当在BSP模型中操作的一个或多个加速器和外部异步环境之间的中介。网关具有用于临时存储从外部环境递送到加速器的数据的本地存储器。这就提出了一个挑战,即如何确保网关使恰当的数据在本地存储器中可用以便在预编译的数据交换同步点处递送给加速器。
根据第一方面,提供了一种用于将主机与用于充当主机的工作加速器的子系统相接的网关,网关实现在由至少包括网关和子系统的同步区域获得的预编译的数据交换同步点处将批次数据传送到子系统,预编译的数据交换同步点充当同步区域的计算阶段和交换阶段之间的屏障,网关包括具有数据移动器引擎和存储器管理引擎的流式传输引擎,数据移动器引擎和存储器管理引擎被配置为协调地执行来自工作描述符的指令,每个工作描述符定义数据流式传输操作集合,存储器管理引擎被配置为执行来自工作描述符的指令以通过网关的数据连接接口在外部存储和与网关相关联的本地存储器之间传送数据;以及数据移动器引擎被配置为执行来自工作描述符的指令以通过网关的加速器接口在与网关相关联的本地存储器和子系统之间传送数据;流式传输引擎被配置为由存储器管理引擎和数据移动器引擎执行来自工作描述符的指令以通过网关流式传输数据。
在一些实施例中,该流式传输引擎被配置为在从同步区域接收到同步点的指示时触发来自工作描述符的指令的执行。
在一些实施例中,该流式传输引擎被配置为针对每个屏障执行工作描述符指令,工作描述符指令定义用于由存储器管理引擎执行的存储器管理指令的集合和用于由数据移动器引擎执行的数据移动器指令的集合。
在一些实施例中,工作描述符指令定义由数据移动器引擎响应于表示屏障的同步点的指示而传送的每批数据的大小。
在一些实施例中,工作描述符指令定义要由存储器管理引擎在外部存储和本地存储器之间传送的每批数据的大小。
在一些实施例中,存储器管理引擎被配置为执行至少一个前期工作指令,该至少一个前期工作指令通过数据连接接口将一批或多批数据从外部存储传送到与网关相关联的本地存储器中。
在一些实施例中,存储器管理引擎被配置为在到达同步点的时间之前执行至少一个前期工作指令。
在一些实施例中,该存储器管理引擎被配置为执行至少一个后期工作指令,该至少一个后期工作指令通过数据连接接口将一批或多批数据从与网关相关联的本地存储器传送到外部存储。
在一些实施例中,数据连接接口被配置为连接到以下中的一个:与主机相关联的存储;网络附加存储;以及另一网关,其用于访问与该另一网关相关联的另一网关存储器或另一加速器的加速器存储器。
在一些实施例中,工作描述符定义要由存储器管理引擎执行的指令集合中的指令的数量,以及要由数据移动器引擎执行的指令集合中的指令的数量。
在一些实施例中,该数据移动器引擎被配置为执行指令以传送来自或去往与网关相关联的本地存储器中的指定位置的数据,该指定位置在指令中被定义。
在一些实施例中,存储器管理引擎被配置为执行指令以将一批或多批数据加载入或加载出指定位置。
在一些实施例中,存储器管理引擎被配置为执行在将与网关相关联的本地存储器中的数据传送出本地存储器之前操纵该数据的指令。
在一些实施例中,数据移动器引擎被配置为操纵从本地存储器被传送到子系统的数据。
在一些实施例中,网关包括包括网关传送存储器,其中数据移动器引擎被配置为在所到达的同步点处将数据传送到子系统之前,将该数据加载到网关传送存储器中。
在一些实施例中,单个数据移动器指令与工作描述符中的存储器管理指令的集合相关,每个存储器管理指令将数据加载到由数据移动器指令标识的位置中以用于数据收集操作。
在一些实施例中,单个前期工作指令加载数据以支持多个数据移动器指令。
根据第二方面,提供了一种用于通过网关流式传输数据的流式传输引擎,流式传输引擎具有数据移动器引擎和存储器管理引擎,数据移动器引擎和存储器管理引擎被配置为协调地执行来自工作描述符的指令,每个工作描述符定义相对于在至少包括网关的同步区域中获得的同步点要执行的数据流式传输操作集合,存储器管理引擎被配置为执行来自工作描述符的指令以通过网关的数据连接接口在外部存储和与该网关相关联的本地存储器之间传送数据;以及数据移动器引擎被配置为执行来自工作描述符的指令以通过网关的加速器接口在与网关相关联的本地存储器和计算机子系统之间传送数据;流式传输引擎被配置为由存储器管理引擎和数据移动器引擎执行来自工作描述符的指令以通过网关流式传输数据。
根据第三方面,提供了一种计算机程序,其包括存储在暂时或非暂时介质上的用于由网关执行的计算机可读指令,计算机可读指令包括工作描述符指令、存储器管理指令和数据移动器指令,每个工作描述符指令定义相对于在至少包括网关和连接到网关的至少一个加速器的同步区域中获得的同步点要执行的数据流式传输操作集合,工作描述符指令协调至少一个存储器管理指令以通过网关的数据连接接口在外部存储和与该网关相关联的本地存储器之间传送数据;以及工作描述符指令协调至少一个数据移动器指令以通过网关的加速器接口在与网关相关联的本地存储器和计算机子系统之间传送数据。
附图说明
为了更好地理解本发明并显示如何实现本发明,现在将通过示例的方式来参照附图,其中:
图1是包括多个区块的处理器芯片的示意框图;
图2是批量同步并行(BSP)计算模型的示意图;
图3是BSP模型的另一个示意图;
图4是在加速器和网关之间的同步请求/确认的交换的示意图;
图5是多处理器芯片的系统的另一示意图;
图6示意性地图示了涉及与主机的同步的程序流;
图7示意性地图示了包括加速器、网关和主机的系统;
图8是通过网关的不同数据路径的示意图;
图9示意性地图示了加速器和使用网关的主机的聚合;
图10是通过网关的数据流的示意图;
图11是包括加速器、网关和主机的系统的示意图;
图12是包括多个加速器和网关的机器的示意图;
图13是包括多个机器的群聚(pod)的示意图;
图14图示了部署和计算数据的示例方法;以及
图15是在三个网关之间的同步请求和确认的交换的示意图。
具体实施方式
本申请的实施例涉及用于将主机与用于充当主机的工作加速器的子系统相接的网关。在整个描述中,可以将子系统称为“加速器”。网关实现了在由至少包括该网关和该子系统的同步区域到达的预编译的数据交换同步点处将批次数据传送到加速器,该预编译的数据交换同步点充当同步区域的计算阶段和交换阶段之间的屏障。
为了确保批次数据在网关存储器中可用以便在预编译的数据交换同步点处传送到加速器,网关包括协调地执行来自工作描述符的指令的流式传输引擎,每个工作描述符定义由同步点触发的数据流式传输操作集合。
网关的流式传输引擎具有存储器管理引擎,该存储器管理引擎被配置为执行来自工作描述符的指令,以通过网关的数据连接接口在外部存储和与网关相关联的本地存储器之间传送数据。网关的流式传输引擎还具有数据移动器引擎,该数据移动器引擎被配置为执行来自工作描述符的指令,以通过网关的加速器接口在与网关相关联的本地存储器和子系统之间传送数据。流式传输引擎被配置为从同步区域接收同步点的指示,并触发存储器管理引擎和数据移动器引擎对来自工作描述符的指令的执行以通过网关流式传输数据。
将同一个工作描述符中的操作分组在一起确保了使数据移动器引擎所需的用于传送到加速器的数据在预编译的数据交换同步点之前已经是可用的。
以下描述更详细地解释了本申请的各种实施例。本申请涉及一种用于充当主机系统的工作加速器的子系统,以及多个此类子系统的组合。子系统充当加速器以对由主机分配的数据集(工作)执行预定的处理步骤,其中该主机正在运行需要大量数据经历主要重复的处理的进程。每个子系统可以是一个所谓的智能处理单元(intelligence processingunit,IPU)或任何类别的加速器(XPU)。本文描述的技术可以与在早期的美国申请第15/885925号中描述的IPU一起使用(该申请的内容通过引用并入本文),但是也可以应用于任何的加速器。如将更详细描述的,可以组合若干加速器以形成加速器机器或装备。可以将若干加速器装备组合在一个机箱中。可以分组地组织多个机箱,可以将它们布置在一个机架中。所得的加速器的组合可以产生具有用于执行并行操作的大量处理能力的系统。这对于实现人工智能应用中的神经网络处理特别有用。这里列出的原理也可以潜在地用于扩展到单个机架之外的情况。
本申请涉及一种新颖的网关,其在提高此类加速器的效率方面具有许多优势。(一个或多个)网关允许将加速器从提供由加速器处理的数据集的一个或多个主机系统中分离出来。这具有若干好处。首先,允许每个主机的加速器数量可以由用户配置,并且该数量可以增加到超过主机的物理容量。其次,允许加速器I/O与主机去耦,这使得I/O容量能够作为加速器的数量的函数扩展。第三,分离使得多个主机能够使用通过完善定义的API按需向主机分配和分组的加速器资源集合,该API支持对这些资源和相关的主机的生命周期管理。
每个加速器可以是单芯片处理器。图1示出了单芯片处理器2,即单个晶片,其包括多个处理器区块4和在区块4之间进行连接的芯片上互连34的阵列6。芯片2可以在其自身的单芯片集成电路封装上单独实现,或者作为封装在同一集成电路中的多个晶片之一。芯片上互连在本文也可以被称为“交换结构”34,因为其使得区块4能够彼此交换数据。每个区块4是能够执行来自本地指令存储器的指令(代码)并处理本地数据存储器中的数据的处理单元。区块4可以包括桶线程处理单元10和存储器11的相应实例。例如,举例来说,芯片2可以包括数百量级的区块4,或者甚至超过一千个。为完整起见,还要注意,本文所指的“阵列”不一定意味着区块4的任何特定数量的维度或物理布局。
每个芯片2还包括一个或多个外部链路8,使得芯片2能够连接到不同芯片上的一个或多个其他外部处理器(例如,同一芯片2的一个或多个其他实例)。这些外部链路8可以充当芯片到芯片的链路,用于与同一IC封装或与卡片上的或不同卡片上的芯片2的一个或多个其他实例连接在一起。可以通过芯片到芯片链路将芯片2的多个实例连接在一起以成为卡片(如稍后描述的图12所示)。芯片还具有将芯片连接到网关的连接器9,稍后将对此进行详细描述。注意,并非所有加速器都需要具有网关连接器9,但是出于本文描述的目的,至少一些加速器具有网关连接器9。在一个示例布置中,芯片2以要由芯片2处理的输入数据的形式从网关接收由主机分配的工作。注意,对主机的引用可以替代地意指对芯片外存储系统的引用,诸如网络附加存储(network attached storage,NAS)。网关使得能够将来自主机或NAS的数据提供给一个或多个加速器,上述加速器被设计为一个单芯片处理器2或多个单芯片处理器2,可能被布置在多个互连的卡片上。网关实现了加速器和主机之间的中继和分离,如稍后描述的。
互连34被配置为使得阵列6中的不同处理器区块4能够在芯片2上彼此通信。在早期的专利申请中描述的IPU中,加速器2上的区块4之间的通信以时间确定的方式发生。然而,其他形式的区块间交换也是可能的。在阵列6中的不同区块4上运行的程序部分之间可能存在依赖性。也就是说,在一个区块上对数据进行的处理可能依赖于来自另一个区块的结果,例如,该区块可能提供另一个区块所依赖的结果。因此,需要一种技术来防止一个区块4上的一段代码在其所依赖的、通过另一个区块4上的另一段代码可获得的数据之前运行。
用于AI和数据科学的并行编程模型通常遵循三阶段的迭代执行模型:计算、屏障和交换。这意味着去往和来自加速器的数据传送通常依赖于屏障来提供加速器之间以及每个加速器和主机之间的数据一致性。通常使用的数据一致性模型是批量同步并行(BulkSynchronous Parallel,BSP)、延迟同步并行(Stale Synchronous Parallel,SSP)和异步。
在SSP中,允许多个工作器线程中的较快工作器线程以数个时钟周期在最慢工作器线程之前运行。工作器线程能够查看对具有一系列时间戳的共享参数进行的更新。例如,在时钟t处的一工作器能够查看来自工作器的所有更新,直到时间戳标记在t–Δ处的更新为止。BSP是一种Δ=0特殊情况,并因此工作器可能不会先于彼此运行。
在异步数据一致性模型中,可以随时读取和/或写入共享参数。
本文描述的本发明的实施例使用BSP模型,但是很明显,可以利用其他同步模型作为替代。
参照图2和图3,其示出了BSP交换方案的实施方式,其中每个区块4以交替的周期执行计算阶段33和交换阶段32,由屏障同步30在区块之间彼此分开。在图2和图3所示的情况下,在每个计算阶段33和随后的交换阶段32之间放置屏障同步。在计算阶段33期间,每个区块4在区块上本地地执行一个或多个运算任务,但是不将这些运算的任何结果与任何其他区块4进行通信。在交换阶段32,允许每个区块4将来自前一计算阶段的一个或多个运算结果交换到一个或多个其他区块和/或从一个或多个其他区块交换来自前一计算阶段的一个或多个运算结果,但是不执行任何新的运算,直到它已经从其它区块4接收到其(一个或多个)任务所依赖的任何数据。它也不会向任何其他区块发送除了在前一个计算阶段计算的数据以外的任何数据。不排除在交换阶段可以执行诸如内部控制相关的操作之类的其他操作。还要注意,在计算阶段33期间,可以允许执行运算的区块4与正在同步的区块4的阵列外部的网关进行通信——只要这不涉及与正在同步的组内的其他区块4的通信。区块组外部的通信可以可选地利用BSP机制,但是替代地也可以不利用BSP,而可以使用它自己的一些其他同步机制。
根据BSP原理,在从计算阶段33转换到交换阶段32的交接,或从交换阶段32转换到计算阶段33的交接,或这两者的交接处放置屏障同步30。也就是说,(a)在允许组中的任何区块4进入到下一个交换阶段32之前,要求所有区块4完成它们各自的计算阶段33,或者(b)在允许组中的任何区块4进入到下一个计算阶段33之前,要求组中的所有区块4完成它们各自的交换阶段32,或者(c)这两个条件都实施。在所有这三种变体中,在不同阶段之间交替的是各个处理器,而同步的是整个组件。然后,可以通过多次的重复来重复交换阶段和计算阶段的序列。在BSP术语中,有时将交换阶段和计算阶段的每次重复称为“超级步(superstep)”(尽管需要注意,在文章中并不总是一致地使用该术语:有时将每个单独的交换阶段和计算阶段单独地称为超级步,而在其他地方,如在本文采用的术语中,将交换阶段和计算阶段一起称为超级步)。
还要注意,不排除在同一芯片2上或不同芯片上的多个不同的独立的区块4的组可以各自形成彼此异步操作的分开的相应BSP组,其中仅在每个给定的组内施加计算、同步和交换的BSP周期,但是每个组独立于其他组来进行上述操作。即,多区块阵列6可以包括多个内部同步组,每个内部同步组相对于其他这样的组独立且异步地操作(稍后将更详细地讨论)。在一些实施例中,存在同步与交换的分层分组,这将在后面更详细地讨论。
图2示出了在阵列6中的一些或所有区块的组4i、4ii、4iii中实现的BSP原理,在这种情况下施加了:(a)从计算阶段33到交换阶段32的屏障同步(见上文)。注意,在这种布置中,允许一些区块4在其他一些区块4仍正在交换时开始计算33。
根据本文公开的实施例,可以通过将附加且专用的专门功能并入到用于执行屏障同步的机器代码指令(即,同步指令)中来促进这种类型的BSP。可以在区块的处理器上执行同步指令以便开始交换阶段,在该交换阶段中对数据进行交换以使得存储在区块的存储器中的数据同步。
同步指令具有定义同步模式的操作数。一种此类模式是区块间模式同步芯片,它使芯片上的所有区块实现用于数据交换的同步屏障。这由编译器在编译用于每个区块的指令时进行管理,因为每个区块是根据预先确定的基于时间的编译协议来执行的。
如上所述,可以组合若干加速器(例如IPU),以产生与单个加速器相比具有改进的处理能力的加速器机器161。此类加速器机器161如图12所示。加速器机器161包括以阵列形式连接的多个(在此示例中为四个)加速器162,每个加速器162通过链路8连接到其邻居。机器161还包括两个网关163,其被配置为将机器161连接到一个或多个主机(未示出)。每个网关163经由网关链路9连接到四个加速器162中的两个。
如将进一步详细解释的,在数据交换同步点之后,网关163能够在交换阶段中与其连接的加速器162交换数据。作为执行同步指令的结果而触发数据交换同步点,该同步指令是运行在加速器上的预编译的代码的一部分。在数据交换同步点的开始处,可以在区块的处理器上执行同步指令。加速器162的一个或多个区块对一个或多个同步指令的执行导致了由该一个或多个区块发出的一个或多个同步请求。加速器162聚合这些同步请求,随后向其相关联的网关163发出聚合后的同步请求。可以对网关进行连接以在它们之间发送同步信号,以使得能够由多个网关和加速器形成同步区域。同步信号的一个功能是在BSP模型的交换阶段促进网关163和相关联的加速器162之间的数据交换,但是它们具有其他与数据无关的应用。每个网关163具有本地存储器,并且被配置为(从主机、从远程存储或从另一网关)获得要在数据交换同步点处发送到加速器的数据并对其进行存储。在来自加速器162的同步请求之前将数据存储在本地存储器中,以便准备将其传送到加速器。网关的一个功能是在加速器需要时将请求的数据提供给加速器。网关可以通过不同的机制从主机或远程存储中获取数据,如在后面讨论的。
每个网关163还被配置为与其他网关交换数据。网关163可以将要发送到加速器162的数据的副本分发到其他网关。然后,这些其他网关162可以将数据分发到它们所连接的加速器162。因此,接收数据的副本的其他网关162不需要独立地从存储(例如,主机或远程存储)获得数据,由此防止多个网关从存储中调取冗余的数据。稍后将对此进行详细描述。此外,如稍后将更详细描述的,网关163被配置为能够进行多种不同类型的数据传送。网关163被配置为与其他网关交换数据。网关163被配置为与其耦合到的一个或多个加速器162交换数据。网关163被配置为与一个或多个主机交换数据(未示出)。
参照图4,其示出了在加速器51的一个或多个区块53向网关52发出用于同步的请求的情况下,同步请求/确认机制如何工作的示例。
网关52包括寄存器59,寄存器59包括针对要执行的即将到来的同步的同步区域的指示。可以在网关52的共享寄存器块(shared register block,SRB)中实现寄存器59。在屏障同步之前,加速器51的区块53被配置为针对即将到来的同步发送其所属的同步区域的指示32。由于加速器51的许多区块53可能属于同一同步区域,因此加速器51指定属于特定同步区域的一个区块来写入该指示32。同步区域指示哪些区块会一起参与同步。在一些情况下,同步区域可以仅包括同一芯片上的区块53,在这种情况下,应理解为不涉及网关。在其他情况下,同步区域可以是包括不同芯片上的区块53的外部同步。在一些情况下,同步区域包括不同加速器上的区块。在一些情况下,同步区域包括网关、主机和/或远程存储。
虽然这里将同步区域的指示呈现为从加速器51发送到网关52,但是在一些其他实施例中,该指示可以由网关52确定并存储在寄存器59中。网关52可以基于其预编译的代码自主地做出该确定。在一些其他实施例中,可以作为从加速器51接收到的同步请求56的一部分,或者在主张同步请求之前提供的带外(例如,PCIe写入)的同步信息的一部分来提供该指示。
作为在加速器51的区块53上运行的代码中预编译的同步指令的结果,触发数据交换同步点。在数据交换同步点的开始处,可以在一个或多个区块53的处理器上执行一个或多个同步指令。执行了同步指令的每个区块发送同步请求,该同步请求在加速器51的同步逻辑54处被接收。同步逻辑54聚合这些同步请求55,并将聚合后的同步请求56发送到网关52。
网关52从加速器51接收同步请求56,并且可以允许同步屏障被通过。这涉及响应同步请求56向加速器51发送同步确认57。允许同步屏障被通过使得加速器51的区块53彼此交换数据,并且在某些情况下,允许与网关52本身交换数据。与网关52的数据交换可以涉及将在网关52处从主机(未示出)接收到的数据传送到加速器51的一个或多个区块53。与网关52的数据交换可以涉及将在网关52处从另一网关(未示出)接收到的数据传送到加速器51的一个或多个区块53。从另一网关接收到的数据可以源自另一个加速器。这是一种经由网关来实现加速器之间的数据交换的机制。从另一网关接收到的数据可以源自另一台主机。另一种机制是通过网关的设施使得连接到一网关的一个加速器能够经由网关之间的结构端口直接写入连接到另一网关的另一个加速器。为了实现上述机制,在每个分组的加速器/网关(即,机箱/组/机架等)中的所有存储位置形成单个全局地址空间的一部分。
网关52具有三个数据交换边界:(i)网关—加速器;(ii)网关—外部;以及(iii)网关—网关。这些边界具有不同的要求,并因此由不同的协议管理。然而,必须对它们进行协调,以使得加速器51数据在被加速器51请求时(即,在同步时)在网关存储器中是可用的,但是为网关52存储数据的网关存储器不会溢出。
如上所述,在同步之前,关于加速器的一组区块53的同步区域的指示被存储在寄存器59中。在一些实施例中,在向网关52发出同步请求56之前,对该寄存器59进行写入50。区块可以在前一个交换阶段结束时或者在将要发生相应的同步的交换阶段之前的计算步骤开始时发送指示。针对每个同步屏障执行对寄存器59的单独的写入50。在接收到同步请求56时,网关52被配置为从寄存器59消耗对应于同步请求的指示。网关52被配置为仅在对应于同步请求56的指示已经被写入寄存器59的情况下,向加速器51发送对同步请求的确认57。换句话说,网关52将仅在自上一个屏障以来已经对该值进行刷新的情况下,向加速器51发送对同步请求的确认57。
如果在向寄存器59写入同步区域的指示时存在延迟(例如,这是因为加速器的一个或多个区块53直到计算阶段结束才能确定它们的同步区域),则可以在用同步区域的对应指示更新寄存器之前接收同步请求。在这种情况下,网关52等待到寄存器59接收到同步区域的对应指示才发送确认57。因此,在等待寄存器59被刷新时,系统可能会经历小的延时。
网关52使用存储在寄存器59中的同步区域的指示来生成同步确认57并将其发送到正确的区块、芯片和/或加速器。例如,如果同步区域的指示是同步区域包括加速器51和附加地包括另外的加速器(未示出),则网关52响应于对同步请求的接收而向加速器51和另外的加速器发送同步确认。网关52可以从寄存器59中读取同步区域的指示,并根据该指示相应地传播同步确认或请求57。
存储在寄存器59中的同步区域的指示包括是否需要来自网关52本身的数据传送以作为同步的一部分的指示。可以将该指示隐含在寄存器59中存储的同步区域的指示中。如果网关52确定需要数据传送,则网关52应用信用控制机制来确定是否允许同步屏障被通过。如果网关52确定不需要数据传送,则网关52向加速器51发送同步确认57,而不应用信用控制机制。对于信用控制机制而言,如果在网关52的存储(稍后描述的本地同步屏障模块(Local Sync Barrier Module,LSBM))中存在可用的一个或多个第一信用集合(称为交换同步点(exchange synchronisation point,ESP)信用),则网关52被配置为通过将同步确认57发送到加速器51并将同步的数据从网关存储器(未在图4中示出)传送到加速器51来响应于对同步请求56的接收而允许同步屏障被通过。如果可用的ESP信用为零,则网关52将不会确认57同步请求56,并且将不会将数据从网关存储器(未在图4中示出)传送到加速器51,因此导致同步停止。这种信用控制机制允许网关52和加速器51在BSP协议中彼此保持同步,下面将对此进行更详细的描述。
在一些实施例中,网关52和加速器51各自包括预编译的代码,从而允许网关52在正确的时间将所需的数据提供给加速器51。
在加速器51的同步逻辑54已发送了同步请求56之后,同步逻辑54将等待来自网关52的同步确认(sync_ack)57。当加速器51的同步逻辑54从网关52接收到同步确认57时,它将向发出同步请求55的区块53返回该同步确认信号57(sync_ack)。所有的同步请求的区块53将自动暂停,直到返回了来自外部同步逻辑54的同步确认58(sync_ack)。响应于同步确认58,区块53恢复用于监管器的指示发布,即,它们重新进入计算阶段。
可以通过同步请求55/56和同步确认57/58的不同通道在加速器区块53和网关52之间发送实际的数据(内容)。此外,将会理解,给定本文公开的同步和聚合功能的说明书,技术人员将能够构建不同类型的电路来实现所公开的该功能。例如,同步逻辑54可以使用专门的线路来发送同步请求56和同步确认57/58。作为专门的线路的替代,同步逻辑54可以另外使用通过互连承载的数据包。例如,可以以一个或多个数据包的形式发送每个同步请求55/56和/或同步确认57/58。例如,可以以一个或多个数据包的形式发送每个同步请求55/56和/或同步确认57/58。
参照图5,它更详细地说明了同步区域的概念。如图5所示,在实施例中,写入网关52的寄存器59的同步区域的指示可以用于指定多个不同的可能的外部同步区域之一,诸如区域_1或区域_2。在实施例中,这些区域对应于不同的层级。也就是说,每个较高的层级92(例如,区域2)环绕至少一个较低层级的两个或更多的区域91A、91B。以图9为例,两个最左边的网关和加速器可以具有同步区域0,其中两个网关之一是主设备(master)。同样,两个最右边的网关和加速器可以具有同步区域0,其中两个网关之一是主设备。然后可能还存在同步区域1,它是整个示意图(并且然后可以将任何的任意网关指定为同步主设备)。
随后程序可能会利用若干层次的同步:
1.仅内部加速器同步—同一加速器上的区块可以同步
2.仅IPU+网关(数据)同步—单个加速器向其网关要求同步(例如,以协调数据的交换)
3.最左边的同步区域0(在每个网关处存在或不存在信用的情况下)
4.最右边的同步区域0(在每个网关处存在或不存在信用的情况下)
5.同步区域1(在每个网关处存在或不存在信用的情况下)
该指示可以指示网关对于同步的参与(即,将在网关52和加速器51之间传送数据)。该指示可以指示除网关52之外的另一网关的参与,其中加速器51可以经由网关52与该另一网关进行通信。因此,当执行对应的同步指令时,执行该同步指令的区块53将经由与网关52的数据传送与主机63同步。在指示另一网关的参与的情况下,可以向上游传递来自加速器51的同步请求(在该同步请求与在网关52处接收到的其他同步请求进行聚合之后)以到达另一网关。网关52在向加速器提供同步确认之前,等待来自另一网关的同步确认。稍后将参照图8更详细地描述此场景。
响应于在寄存器59中的指示外部同步区域的指示,网关52向外部同步区域中的加速器发送同步确认57。加速器中的专门的硬件同步逻辑54从网关接收同步确认(sync_ack)57,并将同步确认58发送到所指示的组的区块4。同步逻辑54仅在已经从该区域中的所有区块4接收到在同步请求(sync_req)55时,才将同步确认信号58(sync_ack)返回到在发信号通知的同步区域中的区块(但是如果该同步逻辑54不是全局同步的,它将不等待在该区域之外的任何其他区块)。
注意,在其他实施例中,能够由寄存器59中的指示所指定的同步区域本质上不限于是分层的。一般来说,可以用对应于任何种类的分组的模式来提供寄存器59中的指示。例如,模式可以实现从仅仅非分层的组、或者分层的组和一个或多个非分层的组的混合中进行选择(其中至少一个组不完全嵌套在另一个组中)。这有利地使得编程器或编译器能够以最小的代码密度灵活地在内部同步的组的不同布局之间进行选择,其中内部同步的组可以彼此异步运行,直到需要更广泛的同步为止。
如前所述,一些同步屏障涉及将加速器的区块与来自主机的数据进行同步,而一些同步屏障则不涉及。图6示意性地示出了全局同步区域92的示例。在施加还需要与主机63进行同步的屏障90之前,允许系统执行N次超级步,从而通过N个同步屏障80。在与主机63的同步屏障90处,将数据(已经将该数据从主机63传送到网关52)从网关52传送到加速器51。N个同步屏障需要来自在相关的同步组92中的所有(非弃权的(non-abstaining))区块4的同步请求,但不需要来自主机63的同步请求。随后的同步屏障80需要来自在同步组92中的所有(非弃权的)区块4的同步请求。此外,为了通过同步屏障80,要求网关存储足够数量的ESP信用以通过特定的屏障。在该屏障90之后,可以在网关和一个或多个区块4之间执行交换50”,例如,以便一个或多个区块4将运算结果报告给主机63。
现在参照图7,图7更详细地示出了主机63如何与加速器51进行交互并交换数据。主机63被配置为提供数据以供加速器51进行处理。加速器51被配置为处理数据并将处理的结果递送给主机63。网关52负责在主机63和加速器51之间以托管(managed)的方式对数据进行流式传输以便交换数据。在该示例中,加速器51可以是如上参照先前附图所述的IPU。然而,网关52可以被用于将主机63与其他类型的加速器51相接。
通过交换同步点的在主机63、网关52和加速器51之间的数据同步确保了网关数据的一致性和I/O操作的准备就绪。经由ESP信用的信用机制来处理在网关52和加速器51之间的数据的可用性。一个信用允许通过一个ESP。在ESP之前,由网关52执行“前期工作”指令来处理网关存储器114的准备。通过执行“后期工作”指令来执行在ESP之后的数据处理。稍后描述的PPE执行引擎123执行了前期和后期工作指令。
如图7所示(并且还参考图5),网关52包括至少一个“本地同步传播模块”(LSPM)117和至少一个“本地同步屏障模块”(LSBM)118。可以将LSBM118视为一种PPE的代理,并且其使得运行在加速器上的程序能够对要从主机解耦的批次数据进行处理。加速器51/网关52同步可以与主机63向网关52提供数据的活动异步运行。LSBM 118被配置为存储上面讨论的ESP信用。LSBM对于LSPM 117是可访问的。
LSBM 118包括被配置为使主机63能够参与相应的同步组92的硬件电路,其中将LSBM 118布置为充当PPE的代理。如果区块4发出的同步请求56是涉及网关的同步,则它将使用网关52的LSPM 117和LSBM 118两者,而不涉及网关52和加速器51之间的数据传送的、用于同步的同步请求56将由LSPM 117接收并返回给请求区块,而不涉及LSBM 118。因此,区块4根据它们执行的程序来确定加速器51何时(如果有的话)需要经由LSBM 118与网关进行交互。
如果加速器51需要与网关交互,则LSBM 118随后被配置为在接收到同步请求56时允许同步屏障被通过,前提是ESP信用的数量大于零。允许同步屏障被通过涉及生成同步确认(未示出)并将该同步确认发送到加速器51。
如上所述,网关52存储与其自身和加速器51之间的接口相关联的信用集合。在描述中将这些信用称为交换同步点(ESP)信用。然而,本领域技术人员将理解,该名称仅用于方便地识别信用,而并不意味着对信用的性质进行限制。ESP信用也可以被称为屏障信用,因为它们控制是否可以对一个屏障执行数据交换操作。
如果LSBM 118中的ESP信用的数量为零,则在接收到同步请求56并且寄存器59中的对应指示使得需要与网关进行数据传送时,LSPM 117不允许同步屏障被通过并因此不允许组92中的区块4再次继续运行,直到ESP信用的数量大于零为止。当用于在交换同步点处被传送到加速器51的数据在网关52中变得可用时,可以实现ESP信用的生成。在一些情况下,数据可以由于从主机63或者网络附加的或其他的外部存储被发送而变得可用。在其他情况下,该数据可以由于从另一网关被传送而变得可用。从另一网关接收到的数据可以是来自另一个加速器或另一个主机或远程存储的数据。
在一些实施例中,网关52可以保存有多个ESP信用集合。对于不同的同步组可以存在不同的信用集合。在这种情况下,对应于一个同步组的同步请求56可以使网关52确认该请求(如果用于该组的ESP信用的数量不为零),而对应于另一个同步组的同步请求56可以不使网关52确认该请求(如果用于该组的ESP信用的数量为零)。对于被配置为与网关52通信的不同的加速器也可以存在不同的信用集合。如图12所示,每个网关163被配置为与两个加速器162通信,并因此,网关52可以为每个加速器162存储两个ESP信用集合。如果每个加速器162具有两个可能的需要网关数据传送的同步组,这导致每个网关163总共保存四个信用集合。
可以在完全不延迟到达网关的情况下,允许同步组的区块4继续运行通过N个同步的屏障(其中同步请求被转发到LSPM 117并由其进行确认),之后这些区块必须经由LSBM118与网关同步(并且随后可以将数据交换到网关和/或从网关交换数据)。例如,参见图6。
如上所述,运行在区块4上的软件被编程为通过发送关于针对同步是否需要网关参与的指示(该指示可以被包括在同步请求中或者单独发送)来请求与网关进行同步。该指示被存储在网关52的寄存器59中。在这样的实施例中,LSBM 118仅将上述信用控制机制应用于与被标记为需要网关参与的同步相对应的屏障(网关对于任何给定屏障的“参与”是由LSPM 118代表主机进行同步确认(sync ack)的代理授权(LSBM),或者偶尔显式地向LSBM118授予更多的ESP信用)。在实施例中,通过存储在寄存器59中的同步区域指示的不同变体(variant)来选择网关参与。也就是说,对于每个同步组91、92,同步区域指示实际上可以采用两种变体:区域_1_主机(zone_1_host)、区域_1_无主机(zone_1_no_host);和区域_2_主机(zone_2_host)、区域_2_无主机(zone_2_no_host)。区块的执行单元被配置为使得同步逻辑54相应地发信号通知网关参与标记。然而,在其他实施例中,不排除可以实施用于请求网关参与的其他机制,或者,网关参与甚至是硬连线的并因此总是施加网关参与。
在实施例中,由网关执行的针对屏障的准备可以包括准备要由加速器51取得的数据,诸如加速器51在学习一模型的下一阶段所需的经验数据集。在此上下文中,准备可以包括从存储磁盘或其他介质中取得数据,以在加速器51上运行的训练算法所需的格式来格式化数据,或者对图像数据进行解压缩。另外,针对屏障的准备可以包括消耗由加速器51产生的输出数据。如后面所讨论的,可以在网关52处进行上述准备的一些或全部。网关52至少位于存储磁盘或其他介质和加速器51之间的路径中。
去往LSBM 118的同步请求56可以作为网络或(PCIe)数据包从处理元件被递送,和/或同步确认57可以作为网络(或PCIe)数据包被返回。一般来说,网关可以参与任何一个或多个层级的同步。
通常来说,ESP信用的概念可以适用于任何多区块架构,而不仅仅是本文公开的示例架构。其也不一定局限于BSP应用上下文。所公开的技术与采用单个汇聚点(rendezvouspoint)的系统(诸如,BSP)具有特定的协同作用,或者当主机或其他外部世界系统与所讨论的机器之间的不同汇聚点的数量被限制为仅一个汇聚点或非常小的数量(相对于,比如说,CSP)时具有特定的协同作用。尽管如此,本公开的适用性并非绝对限于此方面。在任何系统或应用中,可以通过使区块能够通过指定数量的同步屏障而不涉及网关来实现降低延时,从而减少多区块子系统必须与网关交互的次数,并因此减少与网关交互所引起的延时惩罚的次数。
此外,尽管已经在卡片之间或与主机63的PCIe接口的方面举例说明了实施例,但是这不是限制性的,并且可以使用其他类型的接口,诸如以太网。
此外,实施方式不限于主机系统63和加速器51之间的同步通信,它们也会另外地异步运行。在实施例中,网关52可以用于两个独立的BSP或其他并行处理子系统之间的同步,该两个独立的BSP或其他并行处理子系统在内部同步运行,但彼此异步运行。网关52允许同步组的大小增加到更大的大小,并为那些更大型的组实现更有效的树结构。
将在网关52处接收的批次数据存储在存储器114中。存储器114是本地存储器(例如,DRAM),其被保留以供网关52使用。响应于同步请求56,网关52可以从存储器114中调取数据,并将其传送到加速器51。路径116示出了每批数据的流。注意,将每批数据保存在存储器114中一段时间,这段时间可以因批次而异。这依赖于批次进入网关52的时间和它被推送到加速器51的时间,并且这些时间不一定相关。
LSPM 117可以被配置为向网关52指示将数据从存储器114传送到加速器51或者从加速器51传送到存储器114的定时。这允许LSPM 117规定将数据从加速器61部署到存储器114的恰当定时,以便防止网关存储器114的溢出。
此外,对从主机/远程存储进入网关存储器114的数据流进行管理,以便避免溢出网关存储器114。
在图7中,将用于由加速器51处理的数据从主机63传送到网关52,网关52将该数据存储在本地存储器114中。该数据可以由网关52经由RDMA读取来拉取(pull),或者可以由主机63对网关52进行的RDMA写入而被写入。
参照图11,其示出了一种替代方案,在该替代方案中由网关52从网络附加存储151中调取数据116。网络附加存储151在本文也被称为远程存储。在图11中,用相似的附图标记来表示与图11的元件相似的元件。
在图11中,主机63向网关52发送描述符119。描述符119标识网关52可访问的网络附加存储151的位置。当参照描述符119执行数据取得指令时,网关52从网络附加存储151中调取数据116。然后,网关52在将数据116传送到加速器51之前将该数据存储在存储器114中。
在一些实施例中,并非是将描述符119从主机63传送到网关52,而是由网关52存储的预编译代码包括了描述符。在这种情况下,网关52自主地从远程存储151调取数据,而无需主机的干预。在该应用的一些示例中,网关52包括用作独立装备的片上系统(System onChip,SoC),从而使得不需要外部的主机63。整个应用程序堆栈直接在SoC上运行,或者在更广泛系统中的一个SoC上运行。网关52可被配置为在第一模式和第二模式下操作,在第一模式下网关52与外部的主机63处理器进行交互,而在第二模式下则不需要这样的外部的主机63。网关52的剩余部分(例如,参照图8描述的流式传输引擎)执行相同的功能,而不管网关52被配置为在这些模式中的哪一种模式下操作。
参照图8,其更详细地图示了网关52。图8示出了数据通过网关52的各种路径。
图8示出了用于由加速器51处理的数据120是如何从主机63或远程存储151被传送到存储器114的。如已经提到的,在一些示例中,数据120从主机63被传送到网关52。在其他示例中,数据120是响应于由网关52做出的对远程存储151(例如,网络附加存储)的读取请求而从本地或远程存储151被接收的。网关52经由RDMA从远程存储151调取数据120。经由数据中心端口来接收数据120。此外,除了调取数据以外,网关52还将数据写入(未示出)主机63/远程存储151。经由数据中心端口来进行数据写入。在交换阶段,数据可以从网关存储器114被传送到加速器51。
在交换阶段期间,代替将数据从网关存储器114传送到加速器51或者除此之外,可以将数据从加速器51传送到网关52。加速器51被配置为以数据包的形式向网关52发送数据,其中每个数据包包括指示地址的报头。网关52使用数据包的地址来确定将它们发送到哪里。例如,可以将数据包存储在本地存储器114中。可以将数据包发送到另一网关128。可以将数据包分派给连接到另一网关128的加速器。可以将数据包发送到主机63/远程存储151。
数据120在流式传输引擎124的控制下经过网关52到达存储器114(流式传输引擎124还负责从存储器114中调取数据121以递送给加速器51)。流式传输引擎124执行数据的流式传输操作。可以通过一工作描述符(work descriptor,WD)来指定用于批次数据的这些操作。流式传输引擎124包括两个执行引擎和代码存储器(未示出)。一个执行引擎是数据移动器引擎(Data Mover Engine,DME)122,另一个执行引擎是前期/后期工作引擎(Pre/PostWork engine,PPE)123。它们执行作为可执行图像被加载到代码存储器中的指令,该可执行图像由编译器生成。流式传输引擎124具有用于由DME 122执行的工作指令集合和用于由PPE 123执行的工作指令集合。用于DME和PPE的指令集合由WD协调,在编译时进行设置。可以将这些用于单个数据交换同步点的指令一起分组到单个WD中。通过在可执行图像的DME部分中找到的特定的DME指令来操作DME 124。DME 124使用WD来导航到与给定的ESP相关的数据移动器(DMOV)指令集合。通过在可执行图像的PPE部分中找到的特定的PPE指令来操作PPE 123。PPE 123使用WD来导航到与给定的ESP相关的前期/后期工作指令集合。
在与加速器51进行数据交换之前,PPE的前期工作必须准备就绪。只有在交换完成后才能开始在WD中的PPE的后期工作。数据交换是在同步请求56被确认并被信号通知给加速器51和流式传输引擎124两者之后立即进行的。该请求/确认发信号通知“交换同步点”(ESP)。
流式传输引擎124支持不同的数据流式传输模型。
所有模型都支持允许主机严格地控制对ESP信用的消耗的配置。这支持主机63、网关52和加速器51之间的I/O操作的协调,以及在不利用网关存储器114的其他加速器级I/O机制需要的情况下停止加速器51的机制。它也可以是一种用于设置断点或单步运行加速器的完整结构的机制。当在来自主机63的严格的流控制下运行任何模型时,由PPE调度器将主机63授权的ESP信用传送到“ESP信用寄存器”(LSBM 118的一部分)。可以由网关52的硬件和固件来读取/写入ESP信用寄存器。
由流式传输引擎124支持的第一流式传输模型被称为“先进网关(GW)推送”。在先进GW推送中,PPE 123流式传输来自/去往外部存储和网关(GW)存储器114的数据,而DME122向加速器51推送数据。执行是基于来自由网关保存的编译后的可执行图像的指示。用于流式传输引擎124的可执行图像的生成与加速器编译器整合在一起。编译器生成两个相关的编译后的代码序列或可执行图像。这两个编译后的代码序列或可执行图像中的第一个在加速器51上执行,而第二个在网关上执行。在一些实施例中,主机63可以向加速器51和网关52提供编译后的代码序列。
“网关推送模型”是在网关52推送数据的情况下的使用模型。该模型不同于“网关拉取模型”(随后讨论),因为它在约定的时间点处(在约定的ESP处)将数据推送到加速器51。该通用的推送模型可以支持不同类型的用于并行编程的存储器一致性协议或桥接模型。示例包括批量同步并行(BSP)、延迟同步并行(SSP)和异步并行。
先进网关(GW)推送模型使用信用机制来控制要推送的数据输入(相对于加速器)的可用性,以及控制加速器51将数据输出到其的网关52的数据缓冲区的可用性。网关52执行数据移动器指令(DME 122正在将数据推送到加速器51)和用于与外部节点(主机、NAS或其他网关)传送数据的前期/后期工作引擎指令两者。当加速器输入数据由于外部I/O瓶颈而不可用时,PPE 123负责通过丢失ESP信用来有效地停止DME 122。当加速器(去往远程主机/存储)的输出数据由于外部I/O瓶颈而堆积在网关52的存储器114中时,也需要类似的停止。
该模型允许网关52以较低的延迟递送数据,这是因为该模型允许在去往加速器51的推送发生之前,将数据从GW存储器114预取到高速网关传送存储器127中(诸如,SRAM)。此外,与拉取相比,推送本来就是较低延迟的操作,这是因为拉取操作需要往返。也就是说,拉取操作需要读取请求,之后才是响应于该读取请求返回数据。而另一方面,推送仅仅涉及对数据的传送。
先进网关推送模型的另一个优势是加速器51受益于不在拉取数据上花费宝贵的计算资源,而是反之将数据移动卸载到网关的DME 122。
如上所述的存储器一致性模型(BSP、SSP、异步等)可以与推送模型结合使用。然后,加速器51运行时必须确保外部屏障将触发DME 122和PPE 123数据移动。在推送操作的情况下,ESP信用将由网关52递减一。
第二种流式传输模型被称为先进加速器拉取。在这种流式传输模型中,PPE 123将来自/去往外部存储的数据流式传输到网关存储器114中。加速器51然后经由(一个或多个)PCIe读取操作从网关52拉取数据。PPE 123的执行基于来自代码存储器中的可执行图像的指示。
在该模型中,DME 122被禁用,并且不执行上述操作。另一方面,PPE 123是激活的,并且通过发出“拉取请求”(即,读取请求)从外部存储获得数据并将其存储在存储器114中。然后,加速器51将在预定义的ESP处从存储器114中拉取数据。先进加速器拉取模型利用了包含前期/后期工作指令的可执行图像,而没有DMOV指令。主机63经由ESP信用机制同步加速器51,使得它在预期的ESP处拉取在网关存储器114中准备的有效数据。
同样地,对于该模型来说,当加速器51输入数据由于外部IO瓶颈而不可用时,PPE123负责停止LSPM(经由信用机制)。当加速器51(去往远程主机/存储)的输出数据由于外部I/O瓶颈而堆积在网关的存储器114中时,也需要执行类似的停止。
第三种流式传输模型被称为简单加速器拉取。在该流式传输模型中,主机63将数据流式传输进/出网关存储器114。加速器51经由(一个或多个)PCIe读取操作从网关52拉取数据。在这种情况下,网关52不执行PPE指令,而是反之作为主机63或NAS与网关52之间的预定义I/O方案的从设备(slave)。
在该模型中,网关存储器114用作存储区,其中主机63控制其内容。在网关52中没有执行用于加载存储器114中的数据的指令。此外,DME 122被禁用并且不执行指令。PPE123并未执行指令,但是仍然作为代理来更新由主机63提供给加速器51的用于发现数据何时可用的ESP信用。
为数据的流式传输分配的网关存储器114由主机63维护,就像它是PCIe附加存储器一样,唯一的区别在于使用RDMA而不是PCIe。
在上述流式传输推送模型中,网关52通过使用网关存储器114作为芯片上流式传输缓冲区来隐藏加速器的存储器访问延时。流式传输引擎124的总体益处是数据移动可以与加速器运算重叠,并在定时的推送操作之前被预加载到网关52的存储器114中。先进GW推送模型还有一个额外的益处,即,其释放了原本用于DMA操作的加速器资源。
网关52中的数据流式传输操作的执行是由流式传输引擎124执行的,该流式传输引擎124将根据操作模型来运行网关52的指令集的全部或子集。将指令加载到网关存储器114中以作为可执行图像。用于流式传输引擎124的可执行图像的生成将与特定的加速器/网关编译器环境整合,在该环境中,编译器产生用于在加速器51和网关52上运行的相关代码。
可以看出,流式传输引擎124包括硬件和软件组件的集合,它们一起工作以确保以性能最佳的方式向加速器供应数据I/O。取决于网关52或流式传输引擎124的操作模型,流式传输引擎124可以以“及时(just in time)”的方式(即,在表示去往下一个加速器计算步的有条件入口点的、规划的数据交换阶段处)推送数据,或者可以使数据在网关存储器114中可用以便加速器51以相同的“及时”方式进行拉取。经由由网关流式传输引擎124执行的预先调度数据流式传输指令来完成在数据交换阶段之前准备网关存储器114中的相关数据。推送模型可以另外从网关存储器114将数据预取到网关传送存储器127中(例如,SRAM),以减少数据交换阶段期间的延迟。将数据“及时”带入网关存储器114的概念对于网关存储器114不足以大到能够保存加速器运算算法所需的所有数据的情况很有用。
PPE引擎使用WD来导航到与给定的ESP相关的前期工作(PRE)和后期工作(POW)指令集合。术语“前期”和“后期”指示操作发生在WD与加速器或其他目标的数据交换阶段之前还是之后。PRW指令的主要职责是将(例如,来自主机63、远程存储151或来自另一网关128的)数据从主机63带入网关存储器114,或者作为对一个或多个DMOV推送指令的准备。“后期工作”的主要职责是将数据移出GW存储器114(例如,以到达主机63或远程存储151)。PPE指令位于PPE特定的图像部分。
DME 122在如上所述的“网关推送”操作模型中是激活的。在推送模型中,DME 122使用WD来导航到与给定的ESP相关的数据移动器(DMOV)指令集合。DMOV指令向加速器推送数据。WD和DME相关的指令位于DME特定的图像部分。源自网关52物理DDR存储器中的图像的DME指令被转换成由DMA描述符列表,该DMA描述符列表作为DMOV指令的一部分由DME的DMA机器执行。DME 122将为由停止标准控制的若干规划的数据交换准备DMA描述符,该停止标准允许完全控制与加速器51交换的每批数据的大小。
DME 122使用高级可编程多信道DMA机器,其被设计用于将数据流式传输进和流式传输出加速器存储器。DME 122支持使用负载分配通过一个或两个高速数据总线向单个加速器51流式传输数据。如果加速器51对数据加载序列是不可知的,则负载分配由本地DME决策实现并且不受在可执行图像中找到的信息的控制。
当完成了用于WD的所有前期工作相关的指令以及具有用于该WD的结束标准的所有后期工作指令时,WD被视为“准备好执行”(或完全准备好)。只有到那时,才会将用于WD的ESP信用添加到在LSBM 118中的ESP信用集合。
当满足了“交换结束”标准时,WD被视为“已完成”。这是当完成了所有部署操作(DMOV)并且确定从加速器51接收到的所有输出数据等于预期的输出大小时。预期的输出大小被指示在WD中。
网关52需要一种方法,用于使PPE 123在WD完全准备好时发信号通知DME 122,并且这是通过向DME 122添加ESP信用来实现的(也可以称之为WD信用或交换信用)。允许在DME 122之前运行若干WD的PPE 123引擎添加若干ESP信用。这就避免了加速器必须在每个ESP处等待PPE工作完成。最理想的情况是,在每个ESP转换时,ESP信用应该已经可用,这样屏障就可以在不停止加速器的情况下被通过。
一个信用代表DME 122传送所有数据以便与加速器52进行第一次数据交换的能力。PPE 123通过在每次PPE为下一个顺序的ESP完成数据预取(即完成前期工作)时添加一个新信用来递增ESP信用。如果PPE 123没有为ESP及时完成从外部节点预加载数据,则DME122将发现其ESP信用为零并且停止执行,直到PPE 123递增信用计数。由于丢失数据而停止一个加速器51将有效地停止同步运行的(即,共享相同的屏障同步网络的)全部协作的加速器集合。
每个DMOV指令作为DMA操作由DME 122在硬件中执行。这些DMOV指令在应用了网关推送模型时被执行。DMOV指令将驻留在引用的数据缓冲区中(在网关存储器114中)的数据移动到其目的地。该目的地通常是加速器51的存储器位置,但也支持其他目的地。
由于数据的流式传输是按ESP被分批的,当传送了来自网关存储器114的所需数量的缓冲区时,DME 122将停止传送数据。对于1)流式传输引擎124推送操作和2)写入网关存储器114两者而言,每个ESP批次交换的字节数在WD中由参数字段指示。预计要推送的字节数等于为同一WD调度的所有缓冲区中的字节数。如果存在不匹配,这将导致异常情况。
DME 122被配置为使用物理存储器地址来从存储器114中调取数据,而不需要存储器管理单元(memory management unit,MMU)的支持。
对于具有到网关52的双总线附件的加速器51而言,在DMOV中不存在指示数据应该被定向到哪个总线的信息。DME 122对总线的选择进行控制,以便平衡在两条总线上发送的流量。
DMOV可以链接到网关存储器114中的预初始化数据缓冲区,并且因此,在这种情况下,不需要相关的前期工作指令来填充缓冲区。
可替代地,(在存储器114中具有单个存储器数据缓冲区的)单个DMOV可以链接到用于数据收集操作的前期工作指令集合。每个此类引用的前期工作指令将会把来自特定的源和位置的数据以不同的偏移带入相同的数据缓冲区中,从而形成一个收集操作。在与其准备数据的DMOV相同的WD中调度前期工作指令。单个前期工作操作可以提供要由若干DMOV操作推送的数据。
前期/后期工作引擎指令集由在软件中实现的前期/后期工作引擎执行。需要相对于给定的ESP执行“前期工作”,并且需要相对于给定的ESP执行“后期工作”。
可以在“网关推动”和“先进加速器拉取”操作模型中实现PPE对指令的自主执行。PPE 123使用RDMA、NFS、NVMoF、iSCSI或任何其他支持的文件访问协议来将数据移动到网关外部存储器/存储114或从网关外部存储器/存储114移动数据。由在可执行图像的“后期/前期工作部分”中找到的PPE指令来直接控制流式传输操作的执行。可以将PPE 123视为基于软件的流式传输处理器,其从图像文件中获取指令并将这些指令变换为本地/远程存储操作。将在网关存储器114和外部存储器/存储之间进行这些传送。
PPE 123与DME 122并行执行,并且由于DME 122依赖于PPE 123的结果,因此在调度由DME 122执行的数据移动器操作之前,PPE 123必须完成其工作。这在可执行图像中通过使用工作描述符将属于同一数据交换同步点的DME 122和PPE 123指令一起分组来解决。
每个PRW指令从外部存储调取数据,并将数据存储到PRW指令所定向的预编译的数据缓冲区中(在网关存储器114中)。取决于数据的源,PRW指令具有不同的变体。这些变体需要不同的详细说明外部IO操作的参数集合。在执行开始之前经由网关控制信道在控制平面建立的引用的IO模板中查找这些细节。
编译器为PRW指令所引用的缓冲区预先指派存储器114中的区域。这些缓冲区用于在执行PRW指令时存储从外部存储调取的数据。
当完成了被调度用于该WD的所有前期工作相关指令时,以及仅在还完成了被调度用于所有先前WD的所有前期工作相关指令的情况下,以及仅在还完成了具有关于该WD的结束标准的所有后期工作相关指令的情况下,针对每个WD由PPE 123对ESP信用集合进行递增。
取决于数据的源/目的地,PRW指令有不同的变体。
PRW指令的执行顺序是它们在可执行图像中被表示的顺序。但是,较小批次的PRW指令将并行运行,以优化远程位置的I/O性能。当需要数据时,来自一个或多个WD的一个或多个PRW指令在WD之前被执行。这是填充要由WD消耗的数据“管线”所必需的。网关52具有用于前期工作的并行执行引擎,从而允许它完成填充数据“管线”的前期工作。
PRW指令的完成顺序可能与可执行图像中的指令顺序不同。然而,这种乱序完成不存在问题,因为数据最终到达网关存储器114中,并无顺序要求。当涉及到该数据去往加速器51的部署顺序时,DME 122确保指令顺序是由可执行图像表示的顺序。
PRW指令总是具有结束标准。GW 52将PRW指令调度为在加速器51需要供应数据的给定WD之前的适当时间完成。结束标准由其中包含有PRW指令的WD表示。在不能及时为WD供应数据的情况下,数据交换阶段将延迟,直到数据可用。这有效地停止了加速器51的计算阶段,直到数据可用。对此类停止的发生进行计数,并且来自此类监视的反馈将有助于优化网关和/或编译器。
POW指令执行与给定的ESP相关的“后期工作”。其主要功能是将数据从网关存储器114移动到外部存储(例如,主机63或远程存储151)。存储在网关存储器114中的数据是从加速器51接收到的数据。取决于数据的目的地,POW指令具有不同的变体。这些变体需要不同的详细说明外部IO操作的参数集合。
由编译器来落实将POW指令链接到要在其上操作的存储器114中的数据缓冲区。
对于后期工作而言,由于没有将结果通信到加速器51,而是反之将其存储在主机63、远程存储151存储或网关存储器114中,所以可以乱序执行指令,其中没有与纯数据的写入顺序相关的隐含语义。
POW指令总是具有强制的开始标准,其代表了可以执行该指令的最早时间点。可以在强制开始点之后但不能早于其来执行该指令。因此,触发POW指令以在给定的WD处开始。该触发WD被表示为包含有该POW指令的WD。在前一个WD完成时,加速器51必须已经完成对POW指令的缓冲区的写入。
存在不同类型的POW指令。第一种类型的POW指令涉及将数据从本地GW存储器114移动到远程存储151。这可以由主机63通过经由控制信道发送的指示(例如,描述符119)来配置。第二种类型的POW指令涉及将数据从本地网关存储器114移动到主机63。这也可以由主机63通过经由控制信道发送的指示来配置。第三种类型的POW指令涉及对存储在网关存储器114中的数据的操纵。
POW指令也可以具有由POW指令的参数所表示的可选的结束标准。这可能有以下作用。首先,这个可选的结束标准可以使POW指令能够为特定的WD准备数据,大致如同前期工作指令具有由其所属的WD隐式给出的结束标准一样。其次,在网关编译器正在重用由POW指令所使用的“输出”缓冲区来导出到外部节点的情况下,保护仍然保存有未保存数据的缓冲区免于被加速器51重写极为重要。在这种情况下,程序可以通过在DME指令流中放置所谓的指定执行屏障(Named Execution Barrier,NEB)指令作为终止点来保护缓冲区,直到所有POW已完成刷新缓冲区,从而释放缓冲区以供重用和更多的加速器51输出操作。将在后面描述这些NEB指令。
如果POW指令不能满足其结束标准,则PPE 123将暂停本地DME 122,并且结果是所有的加速器以相同的同步级别被同步。PPE 123解析POW指令并找到结束标准。可能存在若干具有相同终止标准或具有不同终止标准或没有终止标准的POW指令。
如上所述,编译器可以及时在给定的执行点处放置终止/通过“执行屏障”。(NEB)指令是指指定“执行屏障”完成(NEBC)对象,它收集来自被指示在完成时发信号通知NEBC的对象的完成报告的数量(例如,POW指令)。
NEB指令总是属于一WD,即,其被WD封装。可以将其插入到所有三个指令流(DME、PPE_PRE和PPE_POST)中。
“终止”状态代表到DME/PPE的终止信号,指示DME/PPE不要继续执行WD中的指令。另一种可能的状态是“通过”,它允许DME/PPE继续执行WD中的指令,从而通过NEB指令。当链接到该结束标准的所有指令已经通过递增NEBC对象中的“完成_看到(completions_seen)”计数器来报告完成时,状态从“终止”改变为“通过”。
“执行屏障”的概念不应与可用于控制批量同步并行(BSP)存储器一致性模型中的屏障的ESP同步原语(primitive)相混淆。在一些示例中,NEB指令插入点与用于加速器程序的特定ESP相关联,但是没有这样的直接要求。NEB可用作各种同步的通用终止点。
可以给出使用NEB指令的第一个示例,在该示例中,在DME指令流的开始处将(一个或多个)NEB指令插入到WD中。NEB代表用于执行DME指令的前提条件。该前提条件用于控制经由POW指令到外部节点(例如,主机63或远程存储151)的加速器输出缓冲区(或环形缓冲区填充阈值)的刷新。ESP信用集合不会递增,直到发生以下两者:满足NEB前提条件并且完成PRW指令。这意味着WD可以被DME缓存,但在没有可用的ESP信用的情况下则不会被进一步执行。当DME 122已经完成对PRW指令的执行时,它将首先检查WD中的所有NEB指令是否都处于“通过”状态。如果它们处于“通过”状态,并且用于给出信用的所有其他前提条件均满足,则信用将被递增。如果DME执行引擎看到NEB指令处于终止状态,它将引发异常。这种异常表明,尽管处于“终止”状态,PPE还是错误地添加了信用,或者在DME/PPE的实施中存在一些引发条件。
可以给出使用NEB指令的第二个示例,在该示例中,将NEB指令插入到后期工作指令流中以便对从网关52到主机63的数据导出进行流控制(flow-controlling)。在这种情况下,主机63控制NEBC的状态。在该模型中,主机控制是否允许PPE 123执行POW指令以将数据传送到主机63,从而通过NEB指示。这由提供对“链接的”NEBC对象的状态的更新的主机进行控制,以将状态设置为“通过”状态。主机只允许在完成了所有链接的POW指令时设置“通过”状态。
结束标准总是被放置在指令流中的NEB的“下一次出现”上。“下一次出现”应理解为与POW的执行有关。
可以给出使用NEB指令的第三个示例,在该示例中,将NEB指令插入到前期工作指令流中以便对来自主机63的数据导入馈送进行流控制。在这种情况下,主机63正控制NEBC的状态。在该模型中,主机控制是否允许PPE123执行PRW指令以将数据从主机63或远程存储151传送到存储器114,从而通过NEB指示。这由提供对“链接的”NEBC对象的状态的更新的主机63进行控制,以将状态设置为“通过”状态。
NEBC对象总是在程序执行的开始处被初始化为终止状态。当从NEB之后的下一条指令开始时,执行相同的重新初始化。当将状态设置为“终止”时,“完成_看到”也设置为零。
在DME的情况下,DME 122本身在其执行中可能尚未达到看到NEB的程度,并且如果在看到NEB指令时已完成了所有链接的指令,则“完成_看到”与“预期_完成(expected_completions)”相同,并且状态将被视为“通过”,因此无需等待即可继续执行。否则,DME122等待直到完成了所有链接的指令。
在网关52中,每个加速器51有一个流式传输引擎124,其中每个流式传输引擎124可以以已经描述的各种模式运行。
在结构中有若干可用的流式传输引擎实例。每个加速器51有一个流式传输引擎124,其中每个流式传输引擎124正在执行图像。每个流式传输引擎124经由一个或多个高速总线(例如,PCIe Gen4)将数据馈送到加速器51。
存在使用流式传输引擎124可以实现的多个不同的可能的流式传输流。例如,在第一种可能的流式传输流中,网关52可以实现将去往加速器51的数据的流式传输。这种数据的流式传输可以由被配置为提供数据的另一个加速器发起。可选地,可以由网关52的DME122发起数据的流式传输,其执行指令以将数据从存储器114传送到加速器51。可能已经在网关52处从主机63或远程存储151接收到此类数据。
在第二种可能的流式传输流中,网关52可以实现去往远程加速器的数据的流式传输。加速器51可以向网关52提供具有在全局地址空间中标识远程加速器的地址的数据包。网关52被配置为使用该地址将数据包转发到另一网关128,以递送给远程加速器。
在第三种可能的流式传输流中,网关52可以实现流入本地网关存储器114的数据的流式传输。这可以是本地网关卸载的结果。去往存储器114的数据传送可以来自在ESP处的加速器51。去往存储器114的数据传送可以是本地RDMA或主机RDMA的结果。可以将数据从外部存储(诸如主机63、NAS 151)或从另一网关128传送到存储器114。将数据从这样的外部存储传送到存储器114是PPE 123执行的前期工作的一部分。
在第四种可能的流式传输流中,网关52可以实现流入另一网关128的存储器的数据的流式传输。可以由网关52本身发起数据传送。可以由加速器51发起数据传送,该加速器51向网关52提供具有在全局地址空间中标识另一网关128的地址的数据包。去往另一网关128的数据传送可以是由另一网关128执行的用于从网关存储器114拉取数据的前期工作指令的结果。
在第五种可能的流式传输流中,网关52可以实现去往远程存储151的数据的流式传输。通过以下一种或多种协议将数据从网关存储器114传送到远程存储151:RDMA协议、网络文件系统(Network File System,NFS)协议、非易失性光纤存储器(Non-VolatileMemory over Fabrics,NVMoF)协议和因特网小型计算机系统接口(internet SmallComputer System Interface iSCSI)协议。由网关发起数据传送。这种去往远程存储151的传送可以是由于PPE 123对后期工作指令的执行而导致的。
在第六种可能的流式传输流中,网关52可以实现去往主机63的数据的流式传输。将数据从网关存储器114传送到固定(pinned)主机存储器或RDMA可访问主机存储器。这种去往主机63的传送可以是由于PPE 123对后期工作指令的执行而导致的。
在第七种可能的流式传输流中,网关52可以实现来自一个或多个远程NFS服务器的数据的流式传输。来自这些服务器的数据传送可以是响应于由网关52发送的请求而发生的。
如前所述,用于AI和HPC的并行编程模型通常遵循三阶段的迭代执行模型:计算、屏障和交换(数据传送、收集和广播)。这意味着加速器通常需要在预编译的数据交换同步点处的去往/来自加速器的数据传送和/或在加速器请求时执行的收集。该请求表示一同步点,在该同步点处加速器51已经完成对可用数据的处理,并且现在需要导出一些数据以及需要导入一些数据。网关52将在经确认的加速器交换请求之后立即调度其数据移动。
网关的流式传输引擎124优化数据移动,因此数据缓冲区“对象”对于保存数据而言至关重要。通过在执行期间将指针传递到缓冲区(在网关存储器114中),系统在操作期间实现了零拷贝(zero copy)语义。数据缓冲区在加载的图像中被预先初始化,或者由PPE123填充。在这两种情况下,DME 122都可以使用对存储器114中的缓冲区的引用,以便在ESP处将数据传送到加速器51。
可能存在无需用于准备加速器数据的前期工作的情况,诸如在数据已经准备就绪并被嵌入到加载的可执行图像中的情况下。在这种情况下,PPE 123还将负责向DME 122发布ESP信用。
也可能存在没有去往加速器51的数据移动的ESP(例如,仅仅是加速器输出数据),并且在这种情况下,PPE 123还将负责向DME 122发布ESP信用。在这种情况下,PPE 123将响应于确定在即将到来的ESP期间没有去往加速器51的数据移动,来递增用于即将到来的ESP的ESP信用。
总是由PPE 123来添加ESP信用。
仅仅对于前期工作指令而言:如果与在之前发出的WD中的前期工作相比,WD的前期工作提前完成,则设计将需要使前期工作完成信息排入队列,并在对已经完成的所有先前的WD进行处理之后递增ESP信用的数量。
对于加速器数据导入(即,从网关52到加速器51的数据传送)而言,WD描述了在交换期间要在两个方向(即,在加速器51和网关52之间)传送的字节数。推送模型中的加速器51已经在相同的信息中进行编译,因此得知何时接收到所有用于该交换的预期数据,并且在接收到所有数据之后立即开始计算阶段。在拉取模型中,加速器51通过终止从网关52读取数据来控制交换何时结束。
对于加速器数据导出而言:加速器51从其编译的代码中得知对于给定的ESP有多少数据要发送到网关52,并且网关52通过从WD中读取信息而得知预期有多少数据。
当网关52已经从加速器51接收到预期的准确数量的字节时,它将继续执行下一个WD。在执行下一个WD时,网关52可以执行后期工作,包括对网关存储器114中的数据进行本地操作。附加地或可替代地,网关52可以执行后期工作以将数据传送到其最终目的地。可替代地,网关52可以不执行后期工作。例如,它可以让数据停留在网关存储器114中,从而允许存储器114用作非加速器数据高速缓存,以便稍后进行回读。在执行下一个WD时,网关52可以执行在下一个ESP之前需要完成的前期工作。附加地或可替代地,网关52可以执行要在下一个ESP之后执行的DMOV指令。如果有可用的ESP信用,则DMOV指令用于在ESP之前将数据预加载到网关传送存储器127。如果没有ESP信用,则DME 122等待ESP信用,并且当ESP信用可用时执行预加载。
如果PPE指令(即,后期工作(POW)和前期工作(PRW)指示两者)都是针对存储节点上已知已经可用的静态数据的远程存储114,那么只要网关支持用于直接访问该数据的存储协议,就不需要与该节点进行数据同步。
主机63的存储器相对于它传送到网关52和加速器51的数据量来说是小容量的,因此主机63需要将数据“逐段地”带入其存储器。由于这种“逐段”的性质,在网关52和主机63之间需要有一种同步机制来控制数据何时可用于网关52发起的RDMA读取(网关数据导入)。同样,对于网关52发起的RDMA写入(即,网关数据导出)而言,需要类似的同步。整个AI装备面临的挑战是让数据连续地流式传输进和流式传输出网关/加速器,因此这种同步机制对于AI性能至关重要。系统需要一个设计良好、开销最小的解决方案,以便扩展到大型AI结构
流式传输引擎123具有用于在网关和主机之间移动数据的若干操作模式。
在第一操作模式中,流式传输引擎124在来自主机63的命令下作为主机63的从设备运行。在第二操作模式中,流式传输引擎124基于存储在其代码存储器中的预编译的指令来执行。
在第一操作模式中,在主机63的控制下,流式传输引擎124充当主机63的从设备,并执行将数据存储在存储器114中的操作,以及从存储器114调取上述数据以递送给加速器51的操作。
在第二操作模式中,流式传输引擎124根据从编译器导出的预编译的可执行文件来从主机63或远程存储151预取数据,该编译器用于生成由加速器和网关组成的完整系统的代码。由于将该编译器用于生成用于网关52(其获取要递送给加速器51的数据)和加速器51(其处理数据)的代码,所以主机63、网关52和加速器51能够彼此同步地动作。网关52文件预期加速器51所需的数据,通过将该数据存储在存储器114中以在相关的计算阶段之前为部署准备该数据。网关52根据由编译器生成的代码来准备用于在恰当的时间传送到加速器51的数据。响应于来自加速器51的同步请求56,DME 122以延时优化的方式在用于加速器51的正确时间处将其传送到加速器51。DME 122位于加速器51附近,以便进行延时优化的递送。
在第三操作模式中,加速器51在接下来的N个屏障之前通知网关52针对对应的N个屏障要准备将哪些数据从存储器114传送到加速器51。在这种操作模式下,加速器编译器可以预见未来的I/O操作,并因此将这种命令调度到网关52,使得网关52有足够的时间来递送数据。
编译器产生由加速器51执行的计算机代码指令集合。这些计算机代码指令集合可以被称为可执行图像。在一些实施例中(例如,在上述的第二操作模式中),编译器还可以产生由网关52实现的相关的流式传输引擎数据移动/处理命令集合。
编译器为每个流式传输引擎产生一个可执行图像。从加速器的角度来看,可执行图像引用了一平坦连续的XPU虚拟地址(XVA)空间。该XVA空间涵盖了内部加速器存储器以及经由存储器管理单元(MMU)映射到同一XVA空间的“流式传输引擎沙箱”存储器。执行图像还引用“主机沙箱”虚拟地址(HSVA)空间,该空间覆盖了流式传输引擎122可访问的所需主机存储器。这一HSVA空间与GW操作模型(“GW推送模型”和“先进XPU拉取模型”)相关。
在这两个虚拟地址空间(XVA和HSVA)中,编译器负责定义流式传输引擎122、加速器51和主机63所需的缓冲区资源和可寻址元素的存在。
编译器还负责在其认为合适时并且当由于有限的网关存储器114而需要时,定义在WD的迭代和序列之间的存储器114中的网关缓冲区的重用。只要有足够的指派给网关52的存储器,就不需要缓冲区重用优化。
对于被配置为与两个或更多加速器通信的网关52而言,一个加速器当前不可能访问被指派给其他加速器的流式传输引擎沙箱。这是由每个加速器或加速器支持芯片内的MMU设置强制实现的。不同加速器的XVA空间在物理网关存储器中不重叠。流式传输引擎运行在其单独的“XPU沙箱”中,并且强制所有的访问在运行时保持在自己的沙箱中。由于加速器的板载MMU,有可能构建一个在这些流式传输引擎之间共享的公共存储器区域。
再次参照图7所示的去往加速器的数据传送,在一些示例中,网关52从主机63或远程存储151接收数据,并将其存储在存储器114中,然后使其在快速网关传送存储器127中可用以传送到加速器51。DME 122根据DME指令从存储器114中预加载快速网关传送存储器127。响应于握手请求的完成,将网关传送存储器127的内容传送到加速器51。这种对网关传送存储器127的预加载被用在上述的推送模型中。在一些示例中,只有当ESP信用的数量大于零时,才执行网关传送存储器127的预加载。
参照图14,其示出了数据的准备、网关52和加速器51之间的交换以及对该数据的处理是如何相关的。准备和部署阶段由网关52执行,而计算阶段由加速器51执行。由网关52在相关联的计算阶段之前准备数据。数据尽可能靠近加速器51存储。当加速器51能够接受数据并通过向网关52发送同步请求56以进行这样的指示时,网关52使用链接到加速器51的端口的全部容量来部署数据,而没有外部依赖性。当加速器51正在处理部署的数据时,网关52准备要部署的下一阶段的数据。该引擎可以在所有可用的网关数据中心端口上扩展其操作。
网关52能够从主机63或远程存储151接收数据,并执行对附加网关所需的数据的存储和扩充。可以将该数据传送到附加网关。传送到附加网关的数据随后可以被提供给与那些附加网关相关联的加速器。这可能有助于避免瓶颈。诸如,代替每个网关独立地从远程存储151中调取数据并因此在访问远程存储151时造成瓶颈,一个网关52可以从远程存储151中调取数据并将上述数据提供给多个网关。这可以解决当访问远程存储151时的瓶颈问题。
当网关52从主机63或远程存储151接收数据时,在将该数据提供给加速器51之前,网关52处理该数据。该处理可以由流式传输引擎124执行。该处理可以包括以下一个或多个:数据扩充(噪声注入)、解压缩、解码(例如,图像和视频数据(诸如JPEG格式的图像和H264格式的视频)的解码)。在上面讨论的简单加速器拉取模型中不执行此处理。
为了保持最小的存储器使用,在将数据加载到网关52中时对数据进行压缩,并且在递送到加速器51之前的最晚可能时间对数据进行解压缩。网关52可以为某些类型的压缩提供延时优化的硬件解压缩引擎(未示出)。此外,可以在网关软件中实现解压缩,从而为任意的压缩算法提供扩展支持。
通过在网关52中执行数据扩充(例如,噪声注入),原始数据可以以其原始格式被存储一次,并被取得一次。然后,可以将该数据复制到多个加速器,网关52将不同的扩充设置应用到每个复制的副本。网关52在硬件中提供一组扩充方法,并为网关软件提供实现用于所述扩充的不同算法的能力。
在一个实施例中,流式传输引擎124提供两个数据加速特征。流式传输功能提供复制特征和复制及转置特征。这允许将训练数据从一个网关复制到许多其他网关,从而减少了IO连接需求。
在网关52处从主机63或远程存储151接收数据,并由PPE 123将其存储(在经过路径120之后)在存储器114中。DME 122从存储器114中调取要沿路径121发送的数据,并使该数据被发送到加速器51。从存储器114经由指示的加速器端口将该数据发送到加速器51。如已经描述的,由同步信号触发沿着路径121的数据传送。
网关52允许对加速器51的数据供应(这涉及通过路径121传送数据)与从主机63或远程存储151的数据调取解耦。换句话说,网关52使得来自主机63或远程存储151的数据传送能够在加速器51执行的运算之前进行。
图8示出了允许在网关52和其他网关之间交换数据的两条其他数据路径。网关52包括路径125,可以从该路径125经由(通过所示的结构端口耦合到网关52的)另一网关128在(通过所示的加速器端口耦合到网关52的)加速器51和另一加速器(未示出)之间传送数据。网关52和另一网关128充当该路径125上的交换机,并实现加速器之间的扩展数据交换结构。另一网关128可以被配置为向/从它所连接的另一主机传送数据。沿着路径125的数据传送可以是单播的(即,定向到单个加速器的数据)、广播的(未定向到指定加速器而发送的数据)和多播的(定向到多个指定加速器的数据)。在广播模式下,在结构端口上发送的数据包包含多播组ID。每个网关都有一个包含了每个多播组ID的目的地列表的表。当网关接收到这样的数据包时,它在表中查找对应于包括在数据包中的多播组ID的目的地列表,并将数据包发送到那些目的地。
在一个实施例中,XPU端口是提供专用的数据移动能力的定制根复合体(RootComplex)的实施方式。除了向/从网关存储器114传送数据包之外,XPU端口还向/从结构端口提供对等能力。以映射到远程加速器的存储器空间为目标的数据包在XPU端口处被检测,并被定向到恰当的结构端口。接收结构端口会将数据包定向到正确的目的地加速器端口。此外,网关可以将数据包从一个结构端口转发到另一个结构端口。这允许经过任意大的结构。通过这种方式,可以通过网关结构实现完整的加速器到加速器交换。
图8还示出了用于在网关52和另一网关之间交换数据的数据路径126。数据路径126用于网关52和另一网关128之间的同步和管理消息的交换。另外,数据路径126用于在与网关52相关联的存储器114和与另一网关128相关联的存储器之间交换数据。当由PPE 123执行前期工作时,经由数据路径126交换的数据作为前期工作的一部分被交换。
响应于PPE 123对前期工作指令的执行,可以从另一网关128的存储器将数据传送到存储器114。然后,该数据在存储器114中可用于在即将到来的ESP处传送(例如,通过来自加速器的PCIe读取操作或通过DME 122对DME指令的执行)到加速器52。当PPE 123完成用于将数据传送到其存储器114的前期工作指令的执行时,它对其ESP信用集合进行递增。
如前所述,同步区域/组可以包括多个网关。在这种情况下,代替从相关联的加速器51接收同步请求或者作为其补充,可以在网关52处从另一网关128接收同步请求。在这种情况下,该另一网关128可以被称为“下游网关”。
现在参照图15,其示出了与另一网关128以及附加的第三网关152通信的网关52。当从另一网关128接收到同步请求129时,在网关52不是同步主设备(即,网关52是同步从设备)的情况下,网关52可以通过向上游将同步请求153发送到第三网关来允许同步屏障被通过。可以首先将同步请求129与从本地加速器(例如,加速器51)接收到的一个或多个同步请求(例如,同步请求56)聚合。在这种情况下,将该聚合后的同步请求153向上游发送到第三网关。
可替代地以及例如在网关152没有连接到网关52的同步区域的情况下,当从另一网关128接收到同步请求129时,在网关52是主设备的情况下,网关52可以通过向另一网关128发送同步确认154来允许同步屏障被通过。在网关128是主设备的情况下,其还对从本地加速器(例如,加速器51)接收到的任何同步请求进行确认(例如,通过发送确认155),只要同步请求是从所有配置的下游网关接收到的。
由网关52保存的LSBM 118中的ESP信用可用于控制在网关52和另一网关128之间的同步请求转发。如同在加速器51和网关52之间的屏障一样,仅仅在向网关52发送同步请求155的本地加速器(例如,加速器51)指示网关参与的情况下,才使用ESP信用来控制在网关52和另一网关128之间的同步请求转发。如前所述,可以将该指示存储在寄存器59中。如果没有指示网关参与,当接收到同步请求129时则将同步请求153发送到上游,并且当同步确认154返回时,同步屏障被通过。
假设加速器51指示网关参与,如果与加速器51相关联的ESP信用的数量非零,并且网关52已经从下游网关128接收到同步请求129,如果网关52不是同步主设备网关(即,它是一个同步从设备网关),则向上游传递屏障。同步请求129与来自加速器51的同步请求56聚合以形成同步请求153,该同步请求153被发送到上游网关152。在接收到与用于需要网关参与的同步的同步请求153相对应的同步确认156时,同步链中的每个LSBM 118中的ESP信用递减。
假设加速器51指示网关参与,如果与加速器51相关联的ESP信用的数量非零,并且网关52已经从下游网关接收到同步请求129,如果网关52是同步主设备网关,则它将向下游网关128和它自己的(一个或多个)流式传输引擎124发送同步确认154。一旦接收到同步确认,流式传输引擎124就递减LSBM 118保存的ESP信用的数量。
因此,在LSBM 118中不存在ESP信用的情况下,网关52的LSPM 117可以防止同步请求被传播到其他网关(即,LSBM)。这确保了当同步主设备最终生成确认时,所有加速器将同时开始执行它们的超级步。
网关52包括多个接口,例如,到加速器51的接口、到另一网关128的接口、到第三网关152的接口。网关52包括指示用于同步目的的这些接口中的每一个的方向性的寄存器,即,诸如另一网关128之类的实体是网关52的上游还是下游。因此,该寄存器指示:响应于网关52从下游实体接收到同步请求,要由网关52将同步请求发送到哪些接口。在寄存器指示没有接口用于同步请求的发送的情况下,这指示了网关52是同步主设备。在这种情况下,网关52通过其已经接收到同步请求的所有接口来发送同步确认。
在网关52充当从设备网关的情况下,它可以从与其相关联的加速器(例如,加速器51)接收一个或多个同步请求。这些同步请求由网关52聚合,然后网关52将它们向上游传递到另一网关128(假设对于从其接收到同步请求的指示网关参与的每个本地加速器均存在可用的ESP信用)。假设另一网关128也是从设备,则该另一网关收集上述请求以及来自其自己的本地加速器的所有同步请求,然后向下一个网关转发新的聚合后的同步请求(假设对于从其接收到同步请求的指示网关参与的每个本地加速器均存在可用的ESP信用)。这并行地发生在同步网络上。最终,主设备网关接收到来自所有下游网关及其自己的相关联加速器的同步请求。然后,并且仅仅到那时,才完成了同步,并且才由主设备网关生成同步确认(假设对于从其接收到同步请求的指示网关参与的每个本地加速器均存在可用的ESP信用)并将该同步确认向下游发送到从其接收到同步请求的实体(即,本地加速器或下游网关)。每个接收到同步确认的下游网关将向从其接收到同步请求的实体发送同步确认。
如上所述,在网关52处可以从多个本地加速器(而不仅仅只是示例的加速器51)接收同步请求。每个加速器都与不同的ESP信用集合相关联。只有当用于已经从其接收到同步请求(并且指示网关参与)的每个加速器的所有ESP信用非零时,网关52才会向上游传递聚合后的同步请求(在它是从设备的情况下),或者确认该同步请求(在它是主设备的情况下)。
如前所述,在向加速器51发送同步确认之后,网关52被配置为与加速器51交换数据。
参考图10,其示出了由流式传输引擎124实现的网关功能。PPE 123与DME 122并行执行,但是由于DME 122依赖于PPE 123的结果,PPE 123需要在DME操作被调度之前提供其结果。这在预编译的可执行图像中或者通过从加速器51递送到网关52的命令的用户程序序列来处理。
如图10所示,存在一个位于PPE 123和网络堆栈141之间的模块142(显示为GDxSM模块)。GDxSM模块142包括两个模块,即,网关数据导入同步模块和(GDISM)和网关数据导出同步模块(GDESM)。这两个模块都处理网关和主机之间的I/O缓冲区元素的同步。
同步是流控制的,并且确保了网关数据的一致性和在交换同步点(ESP)处的IO操作的准备就绪。
第一信用集合(已对其进行过详细讨论)是ESP信用。ESP信用管理加速器51和网关52之间或网关52和另一网关128之间的同步屏障的通过。通过使用ESP信用,将屏障信用机制用于控制网关52和加速器51之间的数据传送。一个ESP信用的可用性意味着可以针对一个屏障执行数据交换操作。
第二信用集合管理(从主机63、远程存储151或另一网关128)去往网关52的数据传送。这些信用由GDxSM 142存储。更具体地说,这些信用存储在GBxSM 142的GDISM中。第二信用集合可称为GDISM信用。本领域技术人员应该理解,术语“GDISM信用”只是一个名称,并且信用的本质不受该名称的限制。
响应于确定存在非零数量的GDISM信用可用,网关52执行前期工作指令以从主机63、远程存储151或另一网关128调取数据。如果网关52确定存在零数量的GDISM信用可用,则它不调取数据。主机63发送用于更新/递增GDISM信用的指示,其使用RDMA来发送该指示。当经由来自主机63的RDMA写入来向流式传输引擎124通知对GDISM信用寄存器的更新时,流式传输引擎124将相应地更新信用寄存器。网关52响应于PPE 123完成前期工作而递减存储的GDISM信用的数量,该前期工作是将数据从外部存储传送到网关52。
GDISM信用控制机制可以防止过早地执行前期工作(PRW)指令。GDISM控制在当前执行的ESP之前有多少个WD,才允许前期工作(PRW)引擎工作。
主机63可以被配置为对一组网关的GDISM信用执行相同的信用更新。使用RDMA和在RDMA之上的协议来执行信用更新,以进行可靠的广播。这在同步组包括多个网关的情况下可能是必须的。在这种情况下,该组网关可能需要有相同数量的GDISM信用可用,否则其中一个加速器可能会停止,并因此终止所有其他加速器。
在一些示例中,GDISM信用还用于控制从网关到主机的数据传送。用于从外部存储到网关52的数据传送的同一GDISM信用集合(即,上述的第二集合)可用于控制从网关52到外部存储(例如,主机63、远程存储151)的数据传送。响应于网关52将数据发送到外部存储,当PPE 123完成其在WD中的命令时,代表导入和导出信用两者的这些GDISM信用递减。如果GDISM信用的数量不为零,则网关128仅将向外部存储发送数据。
以这种方式,GDISM信用可用于阻止(throttle)POW指令以及PRW指令。如果GDISM信用数不为零,则不能执行POW指令。在GDISM信用控制去往和来自外部存储两者的数据传送的情况下,只有当针对给定ESP的所有POW指令和PRW指令都完成时,才消耗单个GDISM信用。
在一些示例中,第三信用集合管理从网关52到主机63或远程存储151的数据传送。这些信用由GDxSM 142存储。更具体地说,这些信用存储在GBxSM 142的GDESM中。第三信用集合可以被称为GDESM信用。本领域技术人员将理解,术语“GDESM信用”仅是一个名称,并且信用的本质不受该名称的限制。
如果GDESM信用的数量不为零,网关128仅将向外部存储发送数据。响应于网关52向外部存储发送数据,GDESM信用递减。以这种方式,GDESM信用可以用于阻止POW指令。如果GDESM信用的数量不为零,则不能执行POW指令。网关52响应于POW指令的完成而递减GDESM信用的数量。
主机63发送用于更新/增加GDISM信用的指示,其使用RDMA来发送该指示。当经由来自主机63的RDMA写入向流式传输引擎124通知对GDISM信用寄存器的更新时,流式传输引擎124将相应地更新信用寄存器。
在GDISM信用和ESP信用之间存在关联关系。GDISM信用允许网关52将用于一个超级步的数据从主机存储器传送到网关存储器114。当网关52已经将用于该超级步的数据加载到其存储器114中时,它将递减GDISM信用并向ESP信用增加一个信用。现在,加速器51可以对该数据执行拉取(包括根据任何拉取模型的拉取),或者网关52可以将该数据推送到加速器51(根据任何推送模型的推送),这是因为当ESP信用的数量>0时,LSPM 117和/或LSBM118将确认同步请求。
参考图9,其示出了包括多个加速器131、多个网关132和多个主机133的系统130的示例。由于网关132彼此通信,网关132共同形成了以太网134。网关132之间的通信实现了加速器与主机的分离。换句话说,系统130中的任何主机133都能够与任何加速器131通信。
虽然图9示出了每个网关132与其与之通信的主机133相关联,但是在一些实施例中,并非每个网关具有一个主机。在一些实施例中,仅图9中所示的网关132中的一个网关可以直接与一个主机133通信。该一个主机133可以控制多个网关134。耦合到该主机的网关可以将数据从主机分发到剩余的网关134。可替代地,多个网关134可以从远程存储151调取数据。
在仅仅一个网关134与主机133通信的情况下,该一个网关134可以是多个网关134中包括网络接口设备的唯一网关134。这样做的好处是通过减少构建剩余网关所需的组件数量来降低成本。当其余网关向主机提供数据时,它们可以首先对数据执行数据扩充操作,然后将该数据提供给包括网络接口设备的网关以用于与主机进行通信。
在一些实施例中,在系统130中不存在外部主机133,而是在一个或多个网关134上运行主机系统。在这种情况下,在网关134上运行编译器。
在一些示例中,网关132从主机133接收数据,并将该数据分发到一个或多个其他网关132。在其他示例中,网关132的子集从一个或多个主机133接收数据,并将接收到的数据分发到一个或多个其他网关。一个或多个其他网关132中的每一个可以向其相关联的加速器131提供分发的数据。通过执行上述方法,并非所有网关132都需要从主机133接收数据。这种方法可以降低成本,因为在这种情况下,不需要向所有的网关提供整个带宽。该方法还可以提高效率。在一些示例中,一组加速器中的每个加速器131接收相同的数据并对其进行处理。在这种情况下,该数据只需要从主机133取得一次。因此,网关132从主机133接收上述数据,并将该数据的副本分发给一个或多个网关132,每个网关被配置为将数据分发给它们相关联的加速器131。因此,由于不需要从主机133多次取得相同的数据,从而实现了效率增益。可替代地,这可以与使用远程存储151通过网关调取数据相结合。将远程存储151用于调取意味着可以实现成本降低,并且网关可以具有整个带宽。主机可以向许多网关发送存储描述符,这些网关可以基于这些描述符并行地动作,并通过每个网关的独立网络连接从远程存储151拉取/推送数据。这种技术将I/O扩展为网关数量的函数。
在一些情况下,从网关132分发到一个或多个其他网关132的数据在一个或多个其他网关132处被修改。例如,一个或多个其他网关132对一个或多个其他网关132应用数据扩充。这种数据扩充是由相应网关中的DME执行的。当一个或多个其他网关132中的每一个已经对其已接收的数据进行修改时,则其将修改后的数据推送到其相关联的加速器131。
预编译的网关软件指定哪个加速器52从哪个主机获得网关132在存储器114中保存的哪些数据。加速器代码的编译器决定如何在加速器之间分派数据以便在它们之间分派工作。网关132对在其具有的去往每个加速器的两个PCIe端口上的I/O流量进行负载平衡。
以此方式对系统的网关层和加速器层进行复制,以便允许系统的扩展。参照图12,其示出了包括多个加速器162和多个网关163的装置161的示例。装置161被称为机器161。机器161包括四个加速器162和两个网关163。每个网关163还耦合到一个或多个主机(未示出)。
参照图13,其示出了装置170的示例,该装置170包括多个如图12所示的机器161。多个机器161被布置在装置171中,该装置171被称为集群171。每个集群171包括多达4台机器161。多个集群171被布置在装置170中,该装置170被称为群聚(pod)171。每个群聚171包括多达32台机器161。通过以这种方式扩展系统,得到的群聚171包括128个加速器,实现具有16PFLop(每秒进行16千万亿次计算)和8TB DRAM的系统。
在图12和图13所示的模型中,每个网关163在两组或更多组的加速器162之间提供低延时的桥接,从而允许附接到不同网关163的加速器162彼此通信,就好像它们被连接到同一个内部结构上一样。在网关163的XPU端口处(如图8所示)从加速器162接收数据包。以映射到远程加速器的存储器空间为目标的数据包在XPU端口处被检测到,并被定向到网关163的恰当的结构端口(如图8所示)。在恰当的加速器端口处接收到的数据包将被转发到恰当的网关。网关将从那里将数据包转发到由作为数据包的目标的存储器空间来指示的远程加速器。
每个网关163包括PCIe端口。这些PCIe端口中的4个端口被配置为向加速器162传递去往和来自加速器162的数据包。每个PCIe端口(如图12所示)可以配置为使用不同的加速器特定的协议。然后,定制网关事务层在该协议和网关内部协议之间进行转换。定制网关层实现地址映射,并提供收集和广播/多播卸载支持。每个网关163提供地址映射方案,在全局地址空间中展示所有参与的加速器162。在网关163处从加速器162接收的数据包包含网关ID,其标识数据包将被路由到的目的网关。
全局地址空间涵盖了属于群聚170的所有加速器162以及所有网关163的存储器资源。加速器可以分派指定在全局地址空间中的地址的数据包。地址的某些部分用于选择目标网关上的资源。地址的某些部分用于标识正在被寻址的网关。其他一些部分用于标识网关存储器或相关加速器的区块存储器中的存储器的地址。加速器的区块存储器可通过区块索引和存储器偏移来寻址。地址可以包括该区块索引和存储器偏移,以标识要存储数据包中的数据的加速器中的位置。
在接收到数据包时,将地址中的网关的标识与该网关的全局ID进行比较。如果存在匹配,则请求的目标是属于该网关的资源(本地加速器或本地存储器)。否则,将地址的一部分用来索引路由表。路由表的内容指示系统中的目标端口。地址的某些比特将与网关路由表相匹配,以确定将数据包路由到哪里。
入口数据包管线旨在是一种直通(cut-through)管线,除了实现所需特征所需要的管线级之外,其不具有其他缓冲。首先按类型对数据包进行分类:多播/广播、收集和单播/存储器写入。然后将它们分割成单独的块进行处理。网关52可以包括用于处理单播数据包的单播模块和多播分组表。网关52使用单播数据包路由表来执行单播数据包(即,那些定向到单个加速器的数据包)的路由。对传入地址进行解码,并且将选择的比特用于确定目的地。这是一个两步的过程:首先,将网关ID比特用于确定该数据包是否以该网关为目标。如果不是,则将网关ID比特用于索引路由表,该路由表返回用于该数据包的输出结构端口。
如果数据包以网关52为目标,则将数据包地址中的本地地址比特用于在由多个区域组成的本地网关基址寄存器(BAR)(即,用于网关存储器的一个BAR,以及用于每个加速器端口的一个BAR)的集合(BARS)中进行查找。如果本地地址比特指示该数据包用于存储在网关存储器(例如存储器114)中,则根据在网关存储器的BAR中的地址,将数据包存储在网关存储器中。如果本地地址比特指示该数据包将被递送到加速器,则将该数据包转发到网关52的DME 122。根据用于相关加速器端口的BAR中的地址,可以将数据包从那里转发到加速器。
在多播组表中处理指定多播/广播服务的数据包。每个结构端口具有其自己的具有端口列表的表,该列表将为每个组(包括广播)获取一个副本。有三个目的地集合。首先,当且仅当数据包与网关属于同一个虚拟结构时,才将数据包发送到本地加速器。其次,根据结构表检查所有传入的广播/多播数据包,以确定是否必须对它们进行转发。第三,副本将被发送到本地DRAM。一旦构建了目的端口向量,就将向量和数据包转发到交换机互连,该交换机互连提供复制服务。
Claims (19)
1.一种网关,用于将主机与用于充当主机的工作加速器的子系统相接,该网关实现在由至少包括该网关和该子系统的同步区域获得的预编译的数据交换同步点处将批次数据传送到该子系统,该预编译的数据交换同步点充当该同步区域的计算阶段和交换阶段之间的屏障,该网关包括具有数据移动器引擎和存储器管理引擎的流式传输引擎,该数据移动器引擎和存储器管理引擎被配置为协调地执行来自工作描述符的指令,每个工作描述符定义数据流式传输操作集合,
该存储器管理引擎至少被配置为执行来自工作描述符的指令以通过该网关的数据连接接口在预编译的数据交换同步点之前将数据从外部存储传送到与该网关相关联的本地存储器;以及
该数据移动器引擎至少被配置为执行来自工作描述符的指令以通过该网关的加速器接口在所述预编译的数据交换同步点处将所述数据从与该网关相关联的本地存储器传送到所述子系统;
该流式传输引擎被配置为由该存储器管理引擎和该数据移动器引擎执行来自工作描述符的指令以通过该网关流式传输数据。
2.根据权利要求1所述的网关,其中该流式传输引擎被配置为在从同步区域接收到该同步点的指示时触发来自工作描述符的指令的执行。
3.根据权利要求1或权利要求2所述的网关,其中该流式传输引擎被配置为针对每个屏障执行工作描述符指令,该工作描述符指令定义用于由存储器管理引擎执行的存储器管理指令的集合和用于由数据移动器引擎执行的数据移动器指令的集合。
4.根据权利要求3所述的网关,其中该工作描述符指令定义由该数据移动器引擎响应于表示屏障的该同步点的指示而传送的每批数据的大小。
5.根据权利要求3所述的网关,其中该工作描述符指令定义要由存储器管理引擎在外部存储和本地存储器之间传送的每批数据的大小。
6.根据权利要求1或权利要求2所述的网关,其中存储器管理引擎被配置为执行至少一个前期工作指令,该至少一个前期工作指令通过数据连接接口将一批或多批数据从外部存储传送到与该网关相关联的本地存储器中。
7.根据权利要求6所述的网关,其中存储器管理引擎被配置为在到达该同步点的时间之前执行该至少一个前期工作指令。
8.根据权利要求1或权利要求2所述的网关,其中该存储器管理引擎还被配置为执行至少一个后期工作指令,该至少一个后期工作指令通过数据连接接口将一批或多批数据从与该网关相关联的本地存储器传送到外部存储。
9.根据权利要求1或权利要求2所述的网关,其中该数据连接接口被配置为连接到以下中的一个:
与主机相关联的存储;
网络附加存储;以及
另一网关,其用于访问与该另一网关相关联的另一网关存储器或另一加速器的加速器存储器。
10.根据权利要求1或权利要求2所述的网关,其中该工作描述符定义要由存储器管理引擎执行的指令集合中的指令的数量,以及要由数据移动器引擎执行的指令集合中的指令的数量。
11.根据权利要求1或权利要求2所述的网关,其中该数据移动器引擎被配置为执行指令以传送来自或去往与该网关相关联的本地存储器中的指定位置的数据,该指定位置在所述指令中被定义。
12.根据权利要求11所述的网关,其中该存储器管理引擎被配置为执行指令以将一批或多批数据加载入或加载出所述指定位置。
13.根据权利要求1或权利要求2所述的网关,其中该存储器管理引擎被配置为执行在将与该网关相关联的本地存储器中的数据传送出本地存储器之前操纵该数据的指令。
14.根据权利要求1或权利要求2所述的网关,其中该数据移动器引擎被配置为操纵从本地存储器被传送到子系统的数据。
15.根据权利要求1或权利要求2所述的网关,包括网关传送存储器,其中该数据移动器引擎被配置为在所到达的同步点处将数据传送到子系统之前,将该数据加载到该网关传送存储器中。
16.根据权利要求3所述的网关,其中单个数据移动器指令与工作描述符中的存储器管理指令的集合相关,每个存储器管理指令将数据加载到由数据移动器指令标识的位置中以用于数据收集操作。
17.根据权利要求6所述的网关,其中,单个前期工作指令加载数据以支持多个数据移动器指令。
18.一种用于通过网关流式传输数据的流式传输引擎,该流式传输引擎具有数据移动器引擎和存储器管理引擎,该数据移动器引擎和存储器管理引擎被配置为协调地执行来自工作描述符的指令,每个工作描述符定义相对于在至少包括该网关的同步区域中获得的同步点要执行的数据流式传输操作集合,
该存储器管理引擎至少被配置为执行来自工作描述符的指令以通过该网关的数据连接接口在预编译的数据交换同步点之前将数据从外部存储传送到与该网关相关联的本地存储器;以及
该数据移动器引擎至少被配置为执行来自工作描述符的指令以通过网关的加速器接口在所述预编译的数据交换同步点处将所述数据从与该网关相关联的本地存储器传送到计算机子系统;
该流式传输引擎被配置为由该存储器管理引擎和该数据移动器引擎执行来自工作描述符的指令以通过该网关流式传输数据。
19.一种存储在暂时或非暂时介质上的用于由网关执行的计算机程序,其包括计算机可读指令,该计算机可读指令包括工作描述符指令、存储器管理指令和数据移动器指令,每个工作描述符指令定义相对于在至少包括该网关和连接到该网关的至少一个加速器的同步区域中获得的同步点要执行的数据流式传输操作集合,
该工作描述符指令协调至少一个存储器管理指令以通过该网关的数据连接接口在预编译的数据交换同步点之前将数据从外部存储传送到与该网关相关联的本地存储器;以及
该工作描述符指令协调至少一个数据移动器指令以通过该网关的加速器接口在所述预编译的数据交换同步点处将所述数据从与该网关相关联的本地存储器传送到计算机子系统。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1811009.8 | 2018-07-04 | ||
GB1811009.8A GB2575289B (en) | 2018-07-04 | 2018-07-04 | Streaming engine |
US16/235,515 | 2018-12-28 | ||
US16/235,515 US11237882B2 (en) | 2018-07-04 | 2018-12-28 | Streaming engine |
PCT/EP2019/066882 WO2020007667A1 (en) | 2018-07-04 | 2019-06-25 | Streaming engine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112673351A CN112673351A (zh) | 2021-04-16 |
CN112673351B true CN112673351B (zh) | 2024-08-02 |
Family
ID=63143516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980045007.6A Active CN112673351B (zh) | 2018-07-04 | 2019-06-25 | 流式传输引擎 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11237882B2 (zh) |
EP (1) | EP3811211A1 (zh) |
JP (1) | JP7406539B2 (zh) |
KR (1) | KR20210023904A (zh) |
CN (1) | CN112673351B (zh) |
GB (1) | GB2575289B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2575293B (en) * | 2018-07-04 | 2020-09-16 | Graphcore Ltd | Data Through Gateway |
CN116529724B (zh) * | 2020-10-14 | 2024-04-12 | 甲骨文国际公司 | 在无共享分布式数据库中快速检测和修复故障的系统和方法 |
US12086095B2 (en) | 2022-05-27 | 2024-09-10 | Nvidia Corporation | Remote promise and remote future for downstream components to update upstream states |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185620B1 (en) * | 1998-04-03 | 2001-02-06 | Lsi Logic Corporation | Single chip protocol engine and data formatter apparatus for off chip host memory to local memory transfer and conversion |
JP2001142852A (ja) | 1999-11-12 | 2001-05-25 | Natl Inst Of Advanced Industrial Science & Technology Meti | 高速並列計算用同期及び通信制御装置 |
CN1497900A (zh) * | 2002-10-23 | 2004-05-19 | 国际商业机器公司 | 对电话对话查询和作书签的系统及方法 |
JP2008109585A (ja) | 2006-10-27 | 2008-05-08 | Toshiba Corp | ゲートウェイ機能を持ったデータ伝送装置および方法 |
WO2008057833A2 (en) * | 2006-11-08 | 2008-05-15 | Sicortex, Inc. | System and method for remote direct memory access without page locking by the operating system |
US8737454B2 (en) * | 2007-01-25 | 2014-05-27 | Adc Telecommunications, Inc. | Modular wireless communications platform |
US20090010265A1 (en) * | 2007-07-05 | 2009-01-08 | Cisco Technology, Inc. | Flexible mapping of virtual local area networks to Ethernet virtual circuits |
CN101420420A (zh) * | 2008-05-30 | 2009-04-29 | 北京天腾时空信息科技有限公司 | 一种数据流式传输的方法和装置 |
US8145749B2 (en) * | 2008-08-11 | 2012-03-27 | International Business Machines Corporation | Data processing in a hybrid computing environment |
US7870308B2 (en) * | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Programmable direct memory access engine |
US7870309B2 (en) * | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Multithreaded programmable direct memory access engine |
US9600429B2 (en) * | 2010-12-09 | 2017-03-21 | Solarflare Communications, Inc. | Encapsulated accelerator |
GB2511672B (en) | 2011-11-04 | 2020-04-15 | Univ Waseda | Processor system and accelerator |
TWI623881B (zh) | 2013-12-13 | 2018-05-11 | 財團法人資訊工業策進會 | 事件串流處理系統、方法與機器可讀記憶體 |
JP6732534B2 (ja) | 2015-05-29 | 2020-07-29 | キヤノン株式会社 | データ処理装置、データ処理方法 |
US10691463B2 (en) | 2015-07-30 | 2020-06-23 | Futurewei Technologies, Inc. | System and method for variable lane architecture |
WO2018161052A1 (en) * | 2017-03-03 | 2018-09-07 | Fenologica Biosciences, Inc. | Phenotype measurement systems and methods |
-
2018
- 2018-07-04 GB GB1811009.8A patent/GB2575289B/en active Active
- 2018-12-28 US US16/235,515 patent/US11237882B2/en active Active
-
2019
- 2019-06-25 EP EP19734059.9A patent/EP3811211A1/en active Pending
- 2019-06-25 CN CN201980045007.6A patent/CN112673351B/zh active Active
- 2019-06-25 KR KR1020207037780A patent/KR20210023904A/ko not_active Application Discontinuation
- 2019-06-25 JP JP2021500029A patent/JP7406539B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
GB2575289A (en) | 2020-01-08 |
US20200012534A1 (en) | 2020-01-09 |
US11237882B2 (en) | 2022-02-01 |
EP3811211A1 (en) | 2021-04-28 |
GB201811009D0 (en) | 2018-08-15 |
KR20210023904A (ko) | 2021-03-04 |
JP7406539B2 (ja) | 2023-12-27 |
JP2021528789A (ja) | 2021-10-21 |
GB2575289B (en) | 2020-09-16 |
CN112673351A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112740190B (zh) | 网关上的主机代理 | |
CN114026829B (zh) | 同步网络 | |
US11740946B2 (en) | Gateway to gateway synchronisation | |
US11507416B2 (en) | Gateway pull model | |
JP7322131B2 (ja) | データ通過ゲートウェイ | |
US11281506B2 (en) | Virtualised gateways | |
US11455155B2 (en) | Code compilation for scaling accelerators | |
US20230054059A1 (en) | Gateway Fabric Ports | |
CN112673351B (zh) | 流式传输引擎 | |
WO2020007648A1 (en) | Data through gateway | |
WO2020007667A1 (en) | Streaming engine |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |