使用多播的高效多设备同步屏障的制作方法

未命名 08-01 阅读:119 评论:0

使用多播的高效多设备同步屏障


背景技术:

1.计算过程可以利用多个处理元件,例如图形处理单元(gpu)的流式多处理器(sm),来并行地执行处理操作。在并行计算中,可以使用同步屏障来同步处理,通过使处理元件在完成相应的计算任务之后,在同步屏障处等待,直到所有处理元件都达到特定的执行点,然后任何处理元件继续沿着执行路径。当所有处理元件都达到同步屏障时,处理元件可以继续执行附加的相应计算任务,直到达到另一个同步屏障或处理完成。
2.在实现同步屏障的传统方法中,将在同步屏障处等待的sm分布在多个gpu上,其中gpu中的一个用于将计数器存储在存储器中。当sm达到同步屏障时,sm向存储计数器的gpu发送读取操作以递增计数器。gpu轮询存储器,直到计数器指示所有sm都已达到同步屏障。然后,设备向参与同步屏障的其他gpu相互发送写入操作,以更改设备上标志的值。其他gpu每个在本地轮询存储器以检测标志是否被置位,这向gpu指示每个gpu已经达到同步屏障并且可以执行附加的计算。然而,这种方法可能包括每个gpu达到同步屏障后的延迟,因为其他gpu在继续计算任务之前必须等待轮询计数器的gpu将标志置位。


技术实现要素:

3.本公开的实施例涉及使用多播的高效多设备同步屏障。公开了向多个处理元件提供达到同步屏障的处理元件的多播通知的系统和方法。所公开的方法可以允许处理元件本地跟踪并确定每个处理元件是否已经达到同步屏障。
4.与诸如上述那些的传统方法相比,屏障同步可以支持多播,其中可以向多个物理地址(pa)和/或与多个处理元件相关联的设备(例如,对应于相应的本地存储器)传播处理元件(pe)已经到达同步屏障的单个通知(例如,存储器访问操作的请求)。因此,该通知可以允许在多个目标处记录处理元件已经达到同步屏障的指示。在至少一个实施例中,每个通知可以访问每个pe的pa和/或屏障组的设备以更新对应的计数器。pe和/或设备可以轮询或以其他方式使用计数器来确定组中的每个pe何时已达到同步屏障。当对应的计数器指示同步屏障处的同步时,pe可以继续与一个或更多个其他pe异步地执行计算任务,直到可以达到后续同步屏障。
附图说明
5.下面参考附图详细描述用于使用多播的高效多设备同步屏障的本系统和方法,其中:
6.图1是示出根据本公开的一些实施例的在协作处理环境中使用多播进行屏障同步的示例的图;
7.图2是示出根据本公开的一些实施例的在协作处理环境中实现用于单播和多播的单独存储器空间的存储器系统的转换路径的示例的图;
8.图3是示出根据本公开的一些实施例的在协作处理环境中使用约束来实现多播的存储器系统的转换路径的示例的图;
9.图4是示出根据本公开的一些实施例的交换机可以用来实现同步屏障的方法的流程图;
10.图5是示出根据本公开的一些实施例的存储器管理器可以用来实现同步屏障的方法的流程图;
11.图6是示出根据本公开的一些实施例的一个或更多个设备可以用来实现同步屏障的方法的流程图;
12.图7是适用于实现本公开的一些实施例的示例计算设备的框图;以及
13.图8是适用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
14.本公开的实施例涉及使用多播的高效多设备同步屏障。公开了向多个处理元件提供处理元件达到同步屏障的多播通知的系统和方法。所公开的方法可以允许处理元件本地跟踪并确定每个处理元件是否已经达到同步屏障。
15.本公开部分地提供了可以支持多播的屏障同步,其中处理元件(pe)已经达到同步屏障(这里也称为作为“屏障(barrier)”)的单个通知(例如,对存储器访问操作的请求)可以传播到多个物理地址(pa)和/或与多个处理元件相关联的设备(例如,对应于相应的本地存储器)。因此,该通知可以允许在多个目标处记录处理元件已经达到同步屏障的指示。在至少一个实施例中,每个通知可以访问每个pe的pa和/或屏障组的设备以更新对应的计数器。pe和/或设备可以轮询或以其他方式使用计数器来确定组中的每个pe何时已达到同步屏障。当对应的计数器指示同步屏障处的同步时,pe可以继续与一个或更多个其他pe异步地执行计算任务,直到可以达到后续同步屏障。
16.参考图1,图1是示出根据本公开的一些实施例的在协作处理环境100中使用多播用于屏障同步的示例的图。
17.应当理解,这里描述的这种布置和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元件(例如,机器、接口、功能、命令、功能分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,它们可以实现为分立或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。在一些实施例中,本文描述的系统、方法和过程可以使用与图7的示例计算设备700和/或图8的示例数据中心800的任何数量的实例类似的组件、特征和/或功能来执行。
18.协作处理环境100可以包括一个或更多个设备,例如设备102a、102b和102c到设备102n(在本文中也称为“设备102”)。协作处理环境100还可以包括一个或更多个交换机,例如交换机104。协作处理环境100还可以包括一个或更多个处理元件,例如处理元件106a、106b和106c到106n(这里也称为“处理元件106”)。协作处理环境100还可以包括一个或更多个存储器管理器,例如存储器管理器108a、108b和108c到108n(在本文中也称为“存储器管理器108”)。此外,协作处理环境100可以包括一个或更多个存储器,例如存储器110a、110b和110c到110n(在本文中也称为“存储器110”)。
19.作为示例而非限制,设备102a包括处理元件106a、存储器管理器108a和存储器
110a,设备102b包括处理元件106b、存储器管理器108b和存储器110b,设备102c包括处理元件106c、存储器管理器108c和存储器110c,并且设备102n包括处理元件106n、存储器管理器108n和存储器110n。尽管在每个设备102中示出了单个处理元件106,但是设备102可以包括任意数量的处理元件106,例如数十到数百或更多。包括在设备102中的其他设备,当存在时,可以包括类似的对应组件。
20.设备102的示例包括gpu、cpu、逻辑单元(例如,逻辑单元720)、集成电路和/或它们中的一个或更多个的组合。交换机104通常可以对应于将设备102、处理元件106、存储器管理器108和/或存储器110互连的相干结构(coherent fabric)。在实施例中,交换机104可以在设备102和/或处理元件106之间实现并行或以其他方式进行的协调处理。在至少一个实施例中,交换机104在设备102之间提供直接的设备到设备互连或网络。交换机104可以允许来自任何数量的设备102和/或其组件的传输被路由到任何其他设备102。
21.尽管交换机104被示为在设备102外部(例如,在单独的设备或集成电路上),但在至少一个实施例中,交换机104的一个或更多个部分和/或其功能可以是交换机104并入一个或更多个设备102中。此外,虽然示出了一个交换机104,但交换机104可以表示以任何合适的拓扑连接设备102的任何数量的交换机。当提供多个交换机时,不同的交换机可以形成设备102的不同多播和/或屏障组,如本文所述。多播和/或屏障组可能具有分层关系,其中子组到组的屏障可以被视为组内的单个设备或节点的屏障。
22.处理元件106的示例包括一个或更多个流式多处理器(sm)、单个指令、多数据(simd)单元、诸如cpu核心之类的核心、多线程处理单元、并行处理单元、线程、线程组等。在至少一个实施例中,处理元件106可以被配置为并行执行一个或更多个线程块和/或线程组。
23.在一个或更多个实施例中,每个设备102具有可以使用其自己的存储器系统和存储器总线实现的其自己的存储器110(诸如随机存取存储器的物理存储器)。存储器管理器108和/或交换机104可用于将存储器总线有效地扩展到一个或更多个其他设备102。在其他示例中,设备102中的一个或更多个可以共享存储器110、存储器系统和/或存储器总线中的至少一些。如图所示,存储器110可用于存储计数器102a、102b和102c至102n(在本文中也称为“计数器120”),其可由对应的处理元件106和/或设备102用于跟踪或确定有多少处理元件106已经到达屏障。
24.存储器管理器108的示例包括一个或更多个存储器控制器,例如存储器芯片控制器(mcc)、存储器控制器单元(mcu)和/或存储器管理单元(mmu),例如gpu mmu(gmmu)、分页mmu(pmmu)等。
25.处理元件106、设备102和/或其线程中的一个或更多个可以利用协作处理环境100以便执行同步处理,这可以包括并行处理操作。例如,组件的任何组合可以是利用一个或更多个屏障以便同步处理的屏障组的成员或节点。图1提供了一个示例,其中处理元件106a、106b、106c和106n是屏障组的成员或节点,尽管在其他示例中可以不同地配置屏障组,例如通过包括更多或更少的处理元件106。另外,虽然处理元件106可以被称为屏障组的成员,但并非所有对应于处理元件106的线程都需要是屏障组的成员。
26.屏障组可以使用屏障来使得其处理元件106能够在完成相应的计算任务之后在屏障处等待,直到所有成员已经到达特定的执行点,然后任何成员继续沿着执行路径。当所有
成员都到达屏障时,如果可用,成员可以继续执行附加的相应计算任务。如果屏障组存在后续屏障,则此过程可能会继续。此外,一个或更多个处理元件106可以是多个屏障组的成员,其可以包括不同的成员。在一些示例中,处理元件106(和/或线程)的相同执行路径可以包括用于不同屏障组的多个屏障。
27.所公开的方法可以用于可以利用屏障的任何合适的计算任务。作为示例而非限制,处理元件106可以各自执行计算任务并在它们之间共享信息。这个过程可以重复任意次数。每次可以使用屏障,以便在共享信息时(例如,每个处理元件读取彼此的值或将它们放在中心位置),处理元件可以同步。例如,在没有屏障的情况下,一个或更多个缓冲区可在仍在使用中时被一个或更多个处理元件106覆盖,或者一个或更多个处理元件106可在缓冲区包括更新值之前处理另一处理元件106的该缓冲区。
28.在至少一个实施例中,屏障组的处理元件106可以在到达对应屏障之前被初始化。作为示例而非限制,处理元件106可以运行在运行一个或更多个应用程序的设备102上(例如,在其一个或更多个线程上)运行的一个或更多个进程。初始化的一个或更多个部分可以发生在启动进程和/或应用程序中的至少一个(例如,包括实现一个或更多个屏障的执行路径)时或响应于启动进程和/或应用程序中的至少一个(例如,包括实现一个或更多个屏障的执行路径)而发生。例如,初始化的一个或更多个部分可以响应于启动使用处理元件106运行的程序(例如,多处理器程序)和/或作为启动使用处理元件106运行的程序(例如,多处理器程序)的一部分而发生。在一个或更多个实施例中,用于初始化的信息的一个或更多个部分可以传递到启动的内核中(例如,以便在进程启动时可用)。附加地或替代地,初始化的一个或更多个部分可以响应于在启动程序之后创建线程组和/或作为在启动程序之后创建线程组的一部分而发生。例如,在运行时间期间,处理元件106可以协调以创建线程组,使得阈值组在软件中被创建,并且用于初始化的信息可用于处理元件106以实现屏障。
29.初始化可以包括例如记录、提供或以其他方式使用于实现一个或更多个屏障的信息可用。非限制性示例包括指示和/或指定参与屏障和/或屏障组(可对应于多个屏障)的设备102和/或处理元件106的数量的数据、初始化或以其他方式定义存储在计数器120的值的数据、初始化或以其他方式定义用于递增计数器120的值的数据、初始化或以其他方式定义用于确定屏障组的每个成员是否已达到屏障的值的数据、和/或初始化、分配或以其他方式定义用于屏障组的多播组、用于计数器120的pa的存储器、va和pa之间的映射等的数据。
30.在一个或更多个实施例中,当屏障组的每个处理元件106(例如,sm)达到屏障组的屏障时,处理元件106可以向每个其他处理元件106、对应的设备102或存储器110,和/或屏障组的其他目标提供通知或其他指示。例如,处理元件106可以至少基于完成与屏障对应的计算任务,向一个或更多个交换机104发送通知。交换机104然后可以将通知转发或以其他方式提供给与使用多播的屏障组相关联的所有目标,使对应于目标的计数器120递增。在一个或更多个实施例中,通知可以包括目标的指示,交换机104可以使用该指示来确定目标或以其他方式将通知转发或提供给目标。因此,单个通知可以使所有计数器120递增。然而,计数器120递增的时间可以基于链路之间的延迟和带宽的差异而变化。
31.图1示出了可以由屏障组的成员提供的通知130a、130b和130c到130n(这里也称为“通知130”)的示例。例如,处理元件106a可以提供通知130a,处理元件106b可以提供通知130b,处理元件106c可以提供通知130c,并且处理元件106n可以提供通知130n。
32.在至少一个实施例中,通知可以包括请求,用于一个或更多个存储器访问操作的请求。存储器访问操作的请求(存储器访问请求)的示例包括那些用于加载、存储、归约和/或原子(atomic)的请求,这些请求可以发送到存储器系统,存储器系统可选地返回一个或更多个值作为响应(例如,对请求者)。图2和图3用于提供如何在一个或更多个实施例中实现请求的非限制性示例。然而,可以使用其他方法。
33.在一个或更多个实施例中,每个通知可以触发和/或包括对一个或更多个存储器访问操作的请求。例如,存储器访问操作可以包括原子操作,使得它们是不可中断的。在至少一个实施例中,每个通知可以对应于一个或更多个归约操作(包括读取、修改和写入),例如原子归约添加操作。例如,处理元件106可以向交换机104发出原子归约添加操作(例如,归约多播操作)。交换机104可以使用多播将操作转发到所有目标,其中可以对多播组的每个物理地址执行原子操作,而不返回响应。例如,对物理地址的操作可以包括或指示一个或更多个值(其可能已被包括在请求中)添加到存储在对应于计数器120的物理地址处的一个或更多个值。如果采用分布式多播层次结构,则交换机104可以在每个阶段收集响应。
34.当处理元件106使用的计数器120响应于来自屏障中的每个参与者的通知而增加时,指示每个参与者到达屏障,处理元件106可以继续通过屏障,这可以包括执行附加的计算任务。例如,图1中有四个参与者,每次从交换机104接收到通知130,计数器120a可以递增1。假设计数器120a从0开始,具有至少4的值的计数器120a可以指示所有通知130a、130b、130c和130n已被接收并用于递增计数器120a。
35.因此,计数器120a可用于确定是否所有参与者都已到达屏障并且对应于计数器120a的处理元件106a可继续通过屏障。计数器120b、120c和120n可以类似地分别由处理元件106b、106c和106n用于确定是否继续通过屏障。尽管已经提供了加法的示例,但计数器120可以以任何合适的方式递增以指示到达屏障(例如,乘法、减法、除法等)。
36.在一个或更多个实施例中,与处理元件106相关联(例如,本地)的设备102和/或存储器管理器108可以轮询140或以其他方式监视存储器110中的计数器120(例如,本地副本)以确定存储在其中的值是否指示处理元件106可以继续通过屏障(指示所有参与者至少已经到达屏障)。在至少一个实施例中,本地轮询可以至少基于处理元件106提供通知130而开始。在至少一个实施例中,本地轮询可以至少基于设备102确定处理元件106可以继续通过屏障而结束。在针对每个通知130向计数器120加1的示例中,设备102可以至少基于确定存储在计数器120中的值大于或等于4来确定处理元件106可以继续通过屏障。
37.如本文所述,计数器120递增的时间可以基于用于不同目标的链路之间的延迟和带宽的差异而变化。这可能导致不同的计数器120在不同的时间指示所有参与者都已经到达屏障。因此,通过针对处理元件106监控各个计数器120,不同的处理元件106可以在不同的时间继续通过屏障,而不必等待来自另一个设备102的指示和/或其他潜在的延迟源。
38.在一个或更多个实施例中,屏障组可以参与一系列屏障。不是为每个屏障重置计数器120,每个屏障可以对应于相应的时期(epoch),相应的时期(epoch)具有对应的一个或更多个时期值(epoch value)用于确定每个参与者是否已经达到那个时期的屏障。在一个或更多个实施例中,时期值可以对应于屏障中参与者的数量的倍数。继续示例,其中至少4的值表示所有4个参与者都已达到屏障,随后的时期值可以是8,然后是12,然后是16,等等。当计数器120大于或等于对应的时期值时允许处理元件106继续通过给定的时期可以允许
其他处理元件106完成后续屏障的任务并发送相应的通知,即使在处理元件106尚未验证所有处理元件106已经达到前一个屏障的情况下也是如此。
39.在至少一个实施例中,参与屏障的每个设备102为作为结构屏障同步的目标的存储器110的每个区域维护计数器(例如,64位计数器)。每个设备102还可以在本地维护下一个时期值(可以是参与者数量的倍数)。使用64位计数器120可以允许软件有效地忽略计数器换行情况(counter wrap case)。然而,有许多不同的方法来处理计数器120的回绕(wraparound)。例如,可以在回绕发生之前执行较慢的软件屏障同步过程。此外,计数器120可能能够存储足够的时期,从而可以有效地忽略回绕。在一个或更多个实施例中,可以分析计数器120以进行限制检查。当计数器120超过某个值时,可以使用更慢的计数器,该计数器也清除计数器120(例如,在0处重新开始)。在至少一个实施例中,计数器120的最高位可以被保留为溢出。设备102可以检测该位何时被置位并采取一些措施。在一个或更多个实施例中,回绕处理可以结合到正在执行的原子操作中以递增计数器120。例如,原子操作可以执行递增并检测回绕条件以触发一个或更多个回绕处理操作(例如,将计数器120设置为不同的值)。当检测到回绕条件时可以提供响应以引起对不同值的轮询。
40.在至少一个实施例中,存储器管理器108可用于提供来自对应处理元件106的通知,其可包括存储器管理器108执行地址转换的一个或更多个部分。例如,每个存储器管理器108可以从其对应的处理元件106接收指示一个或更多个va的请求,并将对应于一个或更多个va的数据和/或请求提供给交换机104以进行进一步处理,这可以包括初始或进一步的地址转换。用于存储器访问操作的请求(存储器访问请求)的示例包括用于加载、存储和/或原子的请求,这些请求可以被发送到存储器系统,存储器系统可选地返回一个或更多个值作为响应。
41.在至少一个实施例中,每个进程的va可以被转换为pa和/或中间地址。此外,存储器管理器108可以执行至少一些地址转换。例如,每个存储器管理器108可以将va转换成中间地址(例如,不同处理节点或元件可以唯一地将本地物理存储器的一个或更多个范围映射到的全局虚拟地址空间的结构线性地址),这可以用于进一步转换成一个或更多个pa。例如,在各种实施例中,交换机104可以接收从va转换(例如,由提供一个或更多个pa的存储器管理器108转换)的一个或更多个pa(例如,在请求中),或者可以接收中间地址(例如,由提供中间地址的存储器管理器108转换),中间地址可以被转发到一个或更多个对应设备102以供进一步转换。在一个或更多个实施例中,诸如链接tlb之类的转换后备缓冲区(tlb)可用于将中间地址转换为pa。例如,交换机104可以使用设备102的对应tlb将中间地址提供给设备102中的一个或更多个以用于转换到对应pa。
42.现在参考图2,图2是示出根据本公开的一些实施例的在协作处理环境100中实现用于单播和多播的单独存储器空间的存储器系统的转换路径的示例的图。在至少一个实施例中,存储器管理器108可以将va转换为pa用于单播存储器访问(例如,使用va 216a),并且将va转换为中间地址用于多播存储器访问(例如,使用va 218)。虽然在一些示例中,交换机104不执行地址转换,但在其他示例中,交换机104可以执行至少一些地址转换。例如,交换机104可以接收va(例如,在请求中)并将该va转换为多个pa,或者可以接收中间地址(例如,来自存储器管理器108),并将该中间地址转换为多个pa。
43.如图2所示,在一个或更多个实施例中,处理元件106可以使用被转换成其自己的
pa或另一设备102的pa的va用于存储器访问。例如,图2示出了处理元件106a可以提供指示va 216a的请求,该va 216a指向处理元件106a的pa 220a。图2还示出了处理元件106a可以提供指示va 216b的请求,该va 216b指向处理元件106n的pa 220n。此外,处理元件106n可以提供指示va 216b的请求,该va 216b指向处理元件106n的pa 220n。因此,可以由任一设备102提供相同的va来访问相同的pa。例如,请求可以由运行在设备102a和102n(例如,其一个或更多个线程)上的一个或更多个进程提供,这些进程运行一个或更多个应用程序同时共享存储器空间。
44.va 216a和216b是是单播va的示例。在请求中接收单播va可以向存储器系统指示该请求是针对单播存储器操作的,其中va被转换为单个pa和相应的存储器访问。存储器系统还可以支持多播va。在请求中接收多播va(例如,对应于达到屏障的通知)可以向存储器系统指示该请求是针对多播存储器操作的,其中va被转换为多个pa和对应的存储器访问。例如,存储器管理器108可以被配置为使用va来确定是将va转换为pa还是中间地址,其中中间地址可以指示多播到交换机104并且pa可以指示单播到交换机104。例如,图2示出处理元件106a或处理元件106n可以提供指示va 218的请求,该va 118指向处理元件106a的pa 220a和处理元件106n的pa 220n。因此,可以由任一设备102提供相同的va来访问相同的pa。
45.因此,根据一个或更多个实施例,多播存储器访问和单播存储器访问可以映射到不同的va空间。在至少一个实施例中,进程可以执行至少一些映射。作为示例而非限制,进程可以使用分配指令(例如,api调用)为va 216a和216b分配存储器,例如以下形式:va 216a,va 216b=malloc(),当执行时可以为每个指定的va分配pa,这些va在存储器系统中被配置为单播va。
46.作为示例而非限制,为了将存储器系统中的一个或更多个va配置为多播va,进程可以使用映射指令(例如,api调用)为va 218(和/或其他va)分配存储器,例如格式为:va 218=createmulticastalias(va216a,va 216b)。该映射指令可以指定一个或更多个将被配置为多播va(例如,va 218)的va,以及将为其映射对应的pa到指定的va的一个或更多个va(例如,va 216a和va 216b)。在该示例中,可以在映射指令之前分配用于va 216a和va 216b的存储器。在其他示例中,执行映射指令可以为要映射到多播va的一个或更多个va和/或pa分配存储器。此外,在本示例中,映射到多播va的pa(例如,映射到pa 220a和220n的va218)也被映射到单播va(例如,va 216a和va 216b),在一些实施例中不必是这种情况。
47.由于va指示指令是作为多播存储器访问还是单播存储器访问被处理,所以多播存储器访问可以被合并到存储器系统中同时保持单播语法。附加地或替代地,可以提供不同的多播和单播指令(和/或同一指令的操作数或参数)以指示是要使用多播还是单播来处理指令。在这样的示例中,可能不需要单独的单播和多播va空间(但仍然可以使用)。例如,存储器管理器108和/或交换机104可以接收指令并且可以生成不同的地址(例如,pa或中间地址),和/或确定哪一个或更多个设备102提供对应于请求的数据,取决于它将指令识别为多播指令还是单播指令。
48.在一个或更多个实施例中,当执行多播操作时,来自存储器110的值可以被提供给交换机104和/或一个或更多个值可以被提供给多播组(可以对应于屏障组)中的一个或更多个设备102。例如,来自发起请求的设备102的值可以通过设备102的内部路径提供给对应的处理元件106a,而来自其他设备102的值可以通过交换机104提供。在至少一个实施例中,
诸如进程或应用程序之类的软件可以指定或指示是否应使用内部路径(例如,在请求或指令中)。在至少一个实施例中,设备102中的内部路径可以具有比离开设备102的链路更低的等待时间和带宽。因此来自设备102a的处理元件106a的请求可以比如果该请求发送到交换机104更快到达存储器110a,然后反射回设备102a。然而,对于一些软件协议,可能希望将请求反射回来,以便在处理请求时对所有设备102进行相同处理,如图1所示。虽然图1示出了将通知130反射回设备102,附加地或替代地,发出请求的设备102可以使用设备102的内部路径(其可能不通过交换机104)来处理通知130。
49.下面提供了在一个或更多个实施例中可用于通知的多播操作的非限制性示例。归约加载操作可以包括多播到多播组的一个或更多个节点,导致n个响应(例如,加载的值),执行n个响应的一个或更多个聚合以生成聚合数据,然后将聚合数据提供给多播组的至少一个节点。例如,可以将n个响应组合成一个值,该值可以提供给请求处理元件106和/或进程。可以使用各种方法来组合响应,例如求和、平均值、最小值、最大值、bitand、bitor或其他按位运算的结果等。在各种示例中,组合响应可以包括选择一个或更多个响应的子集和/或生成对应于至少一个响应的统计值。
50.在至少一个实施例中,交换机104可以接收n个响应并且通过执行组合的一个或更多个部分来生成聚合数据。然而,在一个或更多个实施例中,归约或组合可以至少部分地发生在一个或更多个设备102上,例如请求设备102和/或将接收对请求的响应的设备102。例如,假设请求设备102是图1中的设备102a。对包括设备102n在内的其余设备102的响应可以由交换机104接收和聚合。对设备102a的响应可以在不使用交换机104的情况下从存储器110a接收(例如,通过设备102a内部的路径)。设备102a可以接收聚合响应(例如,基于作为请求设备102和/或将接收响应的设备102)并且将其与内部接收的响应组合以生成一个或更多个值以包括在对请求的响应中。
51.播存储操作可以包括将一个或更多个值多播到多播组的一个或更多个节点以将一个或更多个值存储到每个节点。归约多播操作可以包括在多播组的每个pa上执行原子操作而不返回响应。
52.在至少一个实施例中,一个或更多个存储器访问操作可以相对于设备102、处理元件106和/或存储器110异步执行。因此,当使用多播将请求传播(例如,复制)以访问存储器110时,对各种pa的访问可以与任何响应的接收一起异步执行。例如,如果连续执行多个多播操作,由于不同的延迟,不同存储器110的存储和加载顺序可能会发生变化,从而导致不可预测的结果。对于存储器系统同时支持多播操作和单播操作的实施例,可能会出现类似的结果。作为示例,可以在va 218上执行多播存储,然后由处理元件106a对va 216a执行单播存储。由于va 216a到pa 220a的内部路径更短,因此到va 216a的单播存储可以在到va 218的多播存储之前完成,即使请求是稍后做出的。因此,发出请求的进程可能需要考虑这些可能性。例如,这些可能性可能由于存储器系统被配置为允许存储器访问操作和/或请求处理之间的弱排序而发生。
53.在至少一个实施例中,存储器系统可以配置有一个或更多个约束,使得一个或更多个进程不需要考虑这种不可预测性。因此,使用所公开的方法,是否正在执行多播可以完全对进程隐藏。例如,在一个或更多个实施例中,为仅支持单播操作的存储器系统编写的代码可以使用一个或更多个多播操作代替一个或更多个单播操作来执行。因此,在一些实施
例中,多播可以不必通过api显式地公开或请求,但仍可以执行。因此,编程模型可以与非多播系统保持不变。这样的实施例可以使用用于多播和单播的一个或更多个分离的va空间和/或用于多播和单播的共享va空间来实现(例如,两种方法都可以使用相同的存储器系统来实现)。附加地或替代地,进程和/或其他进程可以配置一个或更多个约束(例如,使用一个或更多个api调用),使得存储器系统以进程预期或期望的方式运行。
54.现在参考图3,图3是示出根据本公开的一些实施例的在协作处理环境300中使用约束来实现多播的存储器系统的转换路径的示例的图。协作处理环境300可以包括一个或更多个设备,例如设备302a、302b和302c,至设备302n(这里也称为“设备302”)。设备302可以与图1的设备102相似或不同。在各种实施例中,协作处理环境300(和存储器系统)可以与协作处理环境100相同或不同。因此,在各种实施例中,设备102中的一个或更多个可以与设备302相同或不同。此外,尽管未示出处理元件106、存储器管理器108和存储器110,但相同或相似的组件可以包括在设备302中。
55.在协作处理环境300中实现的约束可以根据协作处理环境300的各种组件的能力和配置而变化,例如但不限于存储器系统和编程模型。在各种示例中,可以使用存储器管理器108、交换机104、存储器110和/或其他组件(例如,页表、tlb、驱动程序等)的任何组合来实施一个或更多个约束。
56.约束的示例是关于一个或更多个设备302和/或处理元件106对一个或更多个特定va的访问许可。例如,一个或更多个设备302可以具有对一个或更多个特定va(例如va 216a)的写访问权,而一个或更多个其他设备302可以具有只读访问权。具有写访问权的设备302(或处理元件106)在本文中可以被称为生产者并且具有只读访问权的设备302在本文中可以被称为消费者。作为示例而非限制,在一个或更多个实施例中,只有设备302a可以是生产者,而其他设备302可以是消费者。在各种示例中,设备302可以是一些va而不是其他va的生产者或消费者。
57.涉及设置或以其他方式限制对一个或更多个特定va的访问许可的约束可用于避免对请求的不可预测的响应。在所公开的示例中,因为只有设备302a可以写入va 216a,所以可以避免来自其他设备302的其他写入的竞争条件,并且当读取发生时相同的值可以存在于所有pa 220中。
58.约束的另一个示例是在执行一个或更多个特定存储器访问和/或存储器访问或操作类型(例如,加载、存储、归约等)或以其他方式处理一个或更多个请求时用于处理元件106、设备302和/或一个或更多个特定va的访问路径。作为示例而非限制,设备302a和/或每个生产者可以具有将所有请求(或具有诸如访问类型的某些特征或在某些条件下的特定请求)转发到交换机104的约束。如果请求被提供给交换机104并且要在设备302a处被处理,则该请求可以被反射回设备302a。
59.涉及设置或以其他方式控制访问路径的约束也可用于避免对请求的不可预测的响应。在所公开的示例中,因为来自设备302a的涉及va 216a的所有请求都被反射回设备302a,所以可能不存在随后接收到的请求首先通过设备302a的较短内部路径进行处理的风险。类似地,设备302a和/或每个生产者可能具有所有负载(或其他访问类型)都通过交换机104反映的约束。其他设备302和/或每个消费者可能具有所有加载在本地执行的约束(例如,通过内部访问路径)或以其他方式使用比生产者更短的路径的约束,如图3所示。
60.作为涉及设置或以其他方式控制访问路径的约束的另一示例,约束的示例是一个或更多个设备302和/或处理元件具有转发到交换机104的请求。在至少一个实施例中,只有来自生产者和/或设备302a的请求(例如,当请求涉及一个或更多个特定va时)可以被转发到交换机104和/或使用交换机104进行处理。
61.约束的另一个示例是关于一个或更多个进程和/或其他软件是否已经提供了不会发生竞争条件的指示(例如,对于一个或更多个特定和/或指定的va)。该指示可以针对一个或更多个特定请求和/或va提供或与一个或更多个特定请求和/或va一起提供和/或可以包括或指示一段时间过去(例如,在该时间段之后可能不发生多播或可以使用本文描述的不同约束来执行多播)。
62.例如,一个或更多个设备302可以具有对一个或更多个特定va(例如va 216a)的写访问权,而一个或更多个其他设备302可以具有只读访问权。具有写访问权的设备302(或处理元件106)在本文中可以被称为生产者并且具有只读访问权的设备302在本文中可以被称为消费者。作为示例而非限制,在一个或更多个实施例中,只有设备302a可以是生产者,而其他设备302可以是消费者。在各种示例中,设备302可以是一些va而不是其他va的生产者或消费者。
63.在一个或更多个实施例中,可以施加约束,使得使用多播处理请求的结果(例如,返回值)与不使用多播处理请求的结果一致。取决于协作处理环境300的配置和能力,可以使用一个或更多个附加或替代约束。
64.在一个或更多个实施例中,多播可用于加速一个或更多个请求的处理,否则该请求可能已经使用单播处理。在一些实施例中,一个或更多个约束可用于确保跨每个潜在场景的一致结果。因此,使用多播还是单播对于编程模型可能是不透明的。
65.根据本公开的一个或更多个方面,可以执行一个或更多个多播操作以便加速存储器访问请求处理。在一个或更多个示例中,可以执行多播操作而不是一个或更多个单播操作。因此,可以减少数量或处理的请求。附加地或替代地,可以执行一个或更多个多播操作以加速一个或更多个未来存储器访问操作。
66.作为前述的示例,协作处理环境300可以检测到一组处理元件106将使用多个请求将相同的值存储到多个存储器110,并且使用一个或更多个多播操作来处理多个请求。附加地或替代地,协作处理环境300可以检测到一组处理元件106将使用多个请求从多个存储器110加载相同的值,并且使用一个或更多个多播操作预先将值复制到每个存储器110。因此,例如,可以从本地副本(例如,对于消费者)快速执行加载,而不是从进程可能已经通过较慢路径映射到va的同一pa执行加载。例如,如图3所示,可以从分别存储在pa 220b、220c和220n处的本地副本执行对设备302b、302c和302n的加载。这在各种场景中可能是有利的,例如在设备302之间实施同步屏障并且设备302等待最慢的加载完成的情况。
67.可以使用各种方法来确定、识别、预测和/或以其他方式预期前述场景的任何组合,以便加速协作处理环境300中的存储器访问。这可以使用存储器管理器108、交换机104、存储器110和/或其他组件(例如,页表、tlb、驱动程序等)的任何组合发生。
68.在一个或更多个实施例中,应用程序和/或进程可以提供协作处理环境300可以用来确定是否实现上述场景的任何组合的提示(例如,使用api调用和/或驱动程序级消息)。例如,应用程序可以分配单播存储器(例如,使用api调用),并带有指示或指定一个或更多
个va以使用多播复制(和/或复制到哪些设备102)的提示。作为示例而非限制,当在设备302a上发生分配时,可以执行集合,其中设备302a与要包括在多播组中的每个其他设备302上的驱动程序通信。因此,可能导致设备302a为所有副本分配后备存储器,包括创建映射,为va返回单个指针并传递给一个或更多个设备302,类似于单播指针。
69.另外或备选地,协作处理环境300可以增加计数器或以其他方式使用监控或模式识别技术来触发前述场景中的一个或更多个。例如,可以至少基于计数或以其他方式检测或识别诸如涉及频繁存储与那些或其他pa相同的值的va组的请求之类的模式,使用多播到pa来复制到va的存储(例如,基于将va映射到多个pa)。作为示例而非限制,当在设备302a上发生分配时,设备302a可以为单个副本而不是所有副本分配存储器,其中为va返回单个指针并将其传递给设备302中的一个或更多个。当识别出模式时,设备302的驱动程序可以确定应该复制va。作为响应,驱动程序可以开始处理故障、处理故障和/或以其他方式转变va以进行多播。
70.现在参考图4,方法400的每个框以及本文描述的其他方法包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。方法也可以体现为存储在计算机存储介质上的计算机可用指令。方法可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,关于图1描述了方法400。然而,这些方法可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的那些。
71.图4是示出根据本公开的一些实施例的交换机104可以用来实现同步屏障的方法400的流程图。
72.在框b402,方法400包括接收与pe到达同步屏障的通知相对应的数据。例如,交换机104a可以接收与参与同步屏障的pe 106的pe 106a到达同步屏障的通知130a相对应的数据。
73.在框b404,方法400包括将通知映射到托管pe的设备。例如,交换机104可以将通知130a映射到托管多个pe 106的至少一些设备102(例如,映射到每个设备102)。
74.在框b406,方法400包括将通知传播到设备以更新用于控制pe中的一个或更多个pe通过同步屏障的计数器。例如,交换机104可以将通知130a传播到设备102以更新计数器120。传播可以使每个设备102更新计数器120。如本文所述,每个计数器120可以跟踪pe 106到达同步屏障并且可以用于控制一个或更多个pe 106(例如,托管在包括计数器120的设备102上)通过同步屏障。
75.图5是示出根据本公开的一些实施例的存储器管理器108可以用来实现同步屏障的方法500的流程图。
76.在框b502,方法500包括接收指示同步屏障的多个参与者中的参与者到达同步屏障的通知。例如,存储器管理器108a可以接收指示pe 106a到达同步屏障的通知130a。
77.在框b504,方法500包括:响应于通知的接收,使通知传播到设备以更新用于控制参与者中的一个或更多个参与者通过同步屏障的计数器。例如,存储器管理器108a可以响应于通知130a的接收,将数据传输到交换机104,使得交换机104将通知130a传播到设备102以更新计数器120。传播可以导致每个设备102更新计数器120。如本文所述,每个计数器120可以跟踪pe 106到达同步屏障并且可以用于控制一个或更多个pe 106(例如,托管在包括
计数器120的设备102上)通过同步屏障。
78.现在参考图6,图6是示出了根据本公开的一些实施例的一个或更多个设备102和/或交换机104可以用来实现同步屏障的方法600的流程图。
79.在框b602,方法600包括接收指示同步屏障的多个参与者中的参与者到达同步屏障的通知的数据。例如,设备102和/或交换机104可以接收指示pe 106a到达同步屏障的通知130a的数据。
80.在框b604,方法600包括将通知传播到多个目标以控制参与者通过同步屏障。例如,设备102和/或交换机104可以将通知130a传播到多个目标(例如,pa、设备102等)以控制pe 106通过同步屏障。
81.示例计算设备
82.图7为适合用于实现本公开一些实施例的示例计算设备700的框图。计算设备700可以包括直接或间接耦合下列设备的互连系统702:存储器704,一个或更多个中央处理单元(cpu)706,一个或更多个图形处理单元(gpu)708,通信接口710,输入/输出(i/o)端口712,输入/输出组件714,电源716,一个或更多个呈现组件718(例如显示器)和一个或更多个逻辑单元720。在至少一个实施例中,计算设备700可以包括一个或更多个虚拟机(vm),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,一个或更多个gpu 708可以包括一个或更多个vgpu,一个或更多个cpu 706可以包括一个或更多个vcpu,和/或一个或更多个逻辑单元720可以包括一个或更多个虚拟逻辑单元。因此,计算设备700可以包括分立组件(例如,专用于计算设备700的完整gpu)、虚拟组件(例如,专用于计算设备700的gpu的一部分),或其组合。
83.尽管图7的各个框被示为经由具有线路的互连系统702连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件718可以被认为是i/o组件714(例如如果显示器为触摸屏)。作为另一个示例,cpu 706和/或gpu 708可以包括存储器(例如,存储器704可以表示除了gpu 708、cpu 706和/或其他组件的存储器以外的存储设备)。换言之,图7的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图7的计算设备的范围内。
84.互连系统702可以表示一条或更多条链路或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统702可以包括一种或更多种链路或总线类型,例如行业标准架构(isa)总线、扩展行业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连快速(pcie)总线,和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,cpu 706可以直接连接到存储器704。此外,cpu 706可以直接连接到gpu 708。在组件之间存在直接或点对点连接的情况下,互连系统702可以包括pcie链路来执行该连接。在这些示例中,计算设备700中不需要包括pci总线。
85.存储器704可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备700访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
86.计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器704可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或者其他存储技术、cd-rom、数字多功能盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备700访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
87.计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、rf、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
88.cpu 706可以被配置为执行计算机可读指令中的至少一些,以便控制计算设备700的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。cpu 706中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。cpu 706可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备700的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备700的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机制(arm)处理器或者使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备700还可以包括一个或更多个cpu 706。
89.除了或替代cpu 706,gpu 708还可以被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件执行一个或更多个本文所述的方法和/或过程。一个或更多个gpu 708可以是集成gpu(例如,具有一个或更多个cpu 706)和/或一个或更多个gpu 708可以是离散gpu。在实施例中,一个或更多个gpu 708可以是一个或更多个cpu 706的协处理器。计算设备700可以使用gpu 708来渲染图形(例如,3d图形)或执行通用计算。例如,gpu 708可用于gpu上的通用计算(gpgpu)。gpu 708可以包括能够同时处理数百或数千个软件线程的数百或数千个核。gpu 708可以响应于渲染命令(例如经由主机接口接收的来自cpu 706的渲染命令)而生成用于输出图像的像素数据。gpu 708可以包括诸如显示存储器之类的用于存储像素数据或任何其他合适的数据(例如gpgpu数据)的图形存储器。显示存储器可以作为存储器704的部分而被包括。gpu 708可以包括(例如经由链路)并行操作的两个或更多gpu。链路可以直接连接gpu(例如,使用nvlink),也可以通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每个gpu 708可以生成用于输出的不同部分或者用于不同输出的像素数据或gpgpu数据(例如,第一gpu用于第一图像,第二gpu用于第二图像)。每个gpu可以包括它自己的存储器,或者可以与其他gpu共享存储器。
90.除了或替代cpu 706和/或gpu 708,逻辑单元720可以被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件来执行本文描述的一种或更多种方法和/或过程。在实施例中,cpu 706、gpu 708和/或逻辑单元720可以离散地或联合地执行
方法、过程和/或其部分的任何组合。一个或更多个逻辑单元720可以是一个或更多个cpu 706和/或一个或更多个gpu 708的一部分和/或集成在其中和/或一个或更多个逻辑单元720可以是cpu 706和/或gpu 708的离散组件或以其他方式在其外部。在实施例中,一个或更多个逻辑单元720可以是一个或更多个cpu 706和/或一个或更多个gpu 708的处理器。
91.逻辑单元720的示例包括一个或更多个处理核心和/或其组件,例如数据处理单元(dpu)、张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理集群(gpc)、纹理处理集群(tpc)、流式多处理器(sm)、树遍历单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu))、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或外围组件互连快速(pcie)元件等。
92.通信接口710可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备700能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口710可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如wi-fi、z波、蓝牙、蓝牙le、zigbee等等)、有线网络(例如通过以太网或infiniband通信)、低功率广域网(例如lorawan、sigfox等等)和/或因特网。在一个或更多个实施例中,逻辑单元720和/或通信接口710可以包括一个或更多个数据处理单元(dpu)以将通过网络和/或通过互连系统702接收的数据直接传输到一个或更多个gpu 708(例如,一个或更多个gpu 708的存储器)。
93.i/o端口712可以使得计算设备700能够逻辑地耦合到包括i/o组件714、呈现组件718和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备700中。说明性i/o组件714包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、浏览仪、打印机、无线设备等等。i/o组件714可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(nui)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备700的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备700可以包括诸如立体相机系统之类的深度相机、红外相机系统、rgb相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备700可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(imu)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备700用来渲染沉浸式增强现实或者虚拟现实。
94.电源716可以包括硬接线电源、电池电源或者其组合。电源716可以向计算设备700供电以使得计算设备700的组件能够操作。
95.呈现组件718可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件718可以接收来自其他组件(例如gpu 708、cpu 706、dpu等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
96.示例数据中心
97.图8示出了示例数据中心800,其可用于本公开的至少一个实施例中。数据中心800可以包括数据中心基础设施层810、框架层820、软件层830和应用层840。
98.如图8所示,数据中心基础设施层810可以包括资源协调器812、分组计算资源814
和节点计算资源(“节点c.r.”)816(1)-816(n),其中“n”代表任何完整的正整数。在至少一个实施例中,节点c.r.816(1)-816(n)可以包括但不限于任何数量的中央处理单元(“cpu”)或其他处理器(包括dpu、加速器、现场可编程门阵列(fpga)、图形处理器或图形处理单元(gpu)等),存储器设备(例如动态只读存储器),存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“nw i/o”)设备,网络交换机,虚拟机(“vm”),电源模块和冷却模块等。在一些实施例中,节点c.r.816(1)-816(n)中的一个或更多个节点c.r.可以对应于具有一个或更多个上述计算资源的服务器。此外,在一些实施例中,节点c.r.816(1)-816(n)可以包括一个或更多个虚拟组件,例如vgpu、vcpu等,和/或节点c.r.816(1)-816(n)中的一个或更多个可以对应于虚拟机(vm)。
99.在至少一个实施例中,分组计算资源814可以包括容纳在一个或更多个机架内的节点c.r.816的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组计算资源814内的节点c.r.816的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、存储器或存储资源。在至少一个实施例中,可以将包括cpu、gpu、dpu和/或其他处理器的几个节点c.r.816分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。一个或更多个机架还可以包括以任意组合的任何数量的电源模块、冷却模块和/或网络交换机。
100.资源协调器812可以配置或以其他方式控制一个或更多个节点c.r.816(1)-816(n)和/或分组计算资源814。在至少一个实施例中,资源协调器812可以包括用于数据中心800的软件设计基础结构(“sdi”)管理实体。资源协调器812可以包括硬件、软件或其某种组合。
101.在至少一个实施例中,如图8所示,框架层820可以包括作业调度器832、配置管理器834、资源管理器836和分布式文件系统838。框架层820可以包括支持软件层830的软件832和/或应用层840的一个或更多个应用程序842的框架。软件832或应用程序842可以分别包括基于web的服务软件或应用程序,例如由amazon web services,google cloud和microsoft azure提供的服务软件或应用程序。框架层820可以是但不限于一种免费且开源的软件网络应用框架,例如可以利用分布式文件系统838来进行大规模数据处理(例如“大数据”)的apache spark
tm
(以下称为“spark”)。在至少一个实施例中,作业调度器832可以包括spark驱动器,用于促进对数据中心800的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器834可以能够配置不同的层,例如软件层830和包括spark和用于支持大规模数据处理的分布式文件系统738的框架层820。资源管理器836能够管理映射到或分配用于支持分布式文件系统838和作业调度器832的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层810处的分组计算资源814。资源管理器836可以与资源协调器812协调以管理这些映射的或分配的计算资源。
102.在至少一个实施例中,包括在软件层830中的软件832可以包括由节点c.r.816(1)-816(n)的至少部分,分组计算资源814和/或框架层820的分布式文件系统838使用的软件。一种或更多种类型的软件可以包括但不限于internet网页搜索软件、电子邮件病毒浏览软件、数据库软件和流视频内容软件。
103.在至少一个实施例中,应用层840中包括的一个或更多个应用程序842可以包括由节点c.r.816(1)-816(n)的至少部分、分组的计算资源814和/或框架层820的分布式文件系
统838使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如pytorch、tensorflow、caffe等)和/或其他与一个或更多个实施例结合使用的机器学习应用程序。
104.在至少一个实施例中,配置管理器834、资源管理器836和资源协调器812中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。自我修改动作可以减轻数据中心800的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或行差的部分。
105.数据中心800可以包括工具、服务、软件或其他资源,用于根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,可以通过使用上文关于数据中心800描述的软件和计算资源,根据神经网络架构计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心800所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息,例如但不限于本文所述的那些。
106.在至少一个实施例中,数据中心800可以使用cpu、专用集成电路(asic)、gpu、fpga和/或其他硬件(或与之对应的虚拟计算资源)来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
107.示例网络环境
108.适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图7的计算设备700的一个或更多个实例上实现—例如,每个设备可以包括计算设备700的类似组件、特征和/或功能。此外,在实现后端设备(例如,服务器、nas等)的情况下,后端设备可以是作为数据中心800的一部分而被包括的,其示例在此关于图8更详细地描述。
109.网络环境的组件可以通过网络彼此通信,网络可以是有线、无线或两者。网络可以包括多个网络,或者多个网络中的网络。举例来说,网络可以包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络(例如因特网和/或公共交换电话网(pstn))、和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点(以及其他组件)之类的组件可以提供无线连接。
110.兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下服务器可能不包括在网络环境中),以及一个或更多个客户端-服务器网络环境(在这种情况下一个或更多个服务器可以包含在网络环境中)。在对等网络环境中,本文描述的关于服务器的功能可以在任意数量的客户端设备上实现。
111.在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、它们的组合等。基于云的网络环境可以包括框架层、作业调度器、资源管理器,以及在一个或更多个服务器上实现的分布式文件系统,这些服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用层的
一个或更多个应用程序的框架。软件或应用程序可分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(api)访问服务软件和/或应用程序)。框架层可以是但不限于一种类型的免费且开源软件网络应用程序框架,例如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
112.基于云的网络环境可以提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能中的任何一个都可以分布在来自(例如,可以分布在州、地区、国家、全球等地的一个或更多个数据中心的)中央或核心服务器的多个位置。如果到用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,仅限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
113.客户端设备可以包括本文关于图7描述的示例计算设备700的至少一些组件、特征和功能。作为示例而非限制,客户端设备可以体现为个人计算机(pc)、膝上型计算机、移动设备、智能手机、平板计算机、智能手表、可穿戴计算机、个人数码助理(pda)、mp3播放器、虚拟现实头戴式显示器、全球定位系统(gps)或设备、视频播放器、摄像机、监视设备或系统、车辆、船只、飞行器、虚拟机器、无人机、机器人、手持通信设备、医院设备、游戏设备或系统、娱乐系统、车载计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些描述设备的任意组合或任何其他合适的设备。
114.本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
115.如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素a、元素b和/或元素c”可以包括仅仅元素a,仅仅元素b,仅仅元素c,元素a和元素b,元素a和元素c,元素b和元素c,或者元素a、b和c。此外,“元素a或元素b中的至少一个”可以包括元素a中的至少一个,元素b中的至少一个,或者元素a中的至少一个和元素b中的至少一个。进一步,“元素a和元素b中的至少一个”可以包括元素a中的至少一个,元素b中的至少一个,或者元素a中的至少一个和元素b中的至少一个。
116.这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。

技术特征:
1.一种计算机实现的方法,包括:接收与参与同步屏障的多个处理元件pe中的pe到达所述同步屏障的通知相对应的数据;将所述通知映射到托管多个所述pe的设备;以及将所述通知传播到所述设备以更新计数器,所述传播使所述设备中的每个设备更新所述计数器中的计数器,其中每个计数器跟踪所述pe到达所述同步屏障,并被用于控制所述pe中的一个或更多个pe通过所述同步屏障。2.根据权利要求1所述的方法,其中所述通知包括归约操作的存储器访问请求,并且将所述存储器访问请求传播到所述设备中的每一个。3.根据权利要求1所述的方法,其中所述数据的接收来自托管所述pe的设备,并且该设备被包括在所述通知被传播到的所述设备中。4.根据权利要求1所述的方法,其中所述设备中的每个设备分析所述计数器以使在所述设备上托管的所述pe中的对应pe能够继续通过所述同步屏障。5.根据权利要求1所述的方法,其中至少基于所述计数器大于或等于阈值,所述设备中的设备使在该设备上托管的所述pe中的对应pe能够继续通过所述同步屏障。6.根据权利要求1所述的方法,其中至少基于将所述计数器与使用所述计数器已被跟踪的与同步屏障的数量相对应的时期值进行比较,所述设备中的设备使在该设备上托管的所述pe中的对应pe能够继续通过所述同步屏障。7.根据权利要求1所述的方法,其中所述数据的所述接收、所述通知的所述映射以及所述通知的所述传播由所述设备外部的一个或更多个交换机执行。8.根据权利要求1所述的方法,其中至少基于与所述通知相关联的虚拟地址到至少与所述计数器中的第一计数器相对应的第一物理地址pa和与所述计数器中的第二计数器相对应的第二pa的地址转换来更新所述计数器。9.根据权利要求1所述的方法,其中所述pe是流式多处理器、单个指令、多数据单元、处理核心、多线程处理单元、线程或线程组。10.一种系统,包括:一个或更多个处理单元;以及一个或更多个存储器单元,其存储指令,所述指令在由一个或更多个处理单元执行时,使所述一个或更多个处理单元执行操作,所述操作包括:接收指示同步屏障的多个参与者中的参与者到达所述同步屏障的通知;以及响应于接收到所述通知,传输使所述通知传播到托管多个所述参与者的设备的数据以更新计数器,所述传播使所述设备中的每个设备更新所述计数器中的一个计数器,其中每个计数器跟踪所述参与者到达所述同步屏障,并且被用于控制所述参与者中的一个或更多个参与者通过所述同步屏障。11.根据权利要求10所述的系统,其中所述通知的所述接收和所述数据的所述传输由管理单元mmu响应于所述mmu从所述参与者接收到所述通知而执行。12.根据权利要求10所述的系统,其中所述通知包括归约操作的存储器访问请求,并且将所述存储器访问请求传播到所述设备中的每一个。13.根据权利要求10所述的系统,其中所述数据指示到一个或更多个交换机的所述通
知,并且所述一个或更多个交换机将所述通知映射到所述设备以执行所述传播。14.根据权利要求10所述的系统,其中所述设备中的每个设备分析所述计数器以使在该设备上托管的参与者中的对应参与者能够继续通过所述同步屏障。15.根据权利要求10所述的系统,其中所述操作还包括至少基于执行与所述通知相关联的虚拟地址到至少与所述计数器中的第一计数器相对应的第一物理地址pa和与所述计数器中的第二计数器相对应的第二pa的地址转换的至少一部分来生成所述数据。16.根据权利要求10所述的系统,其中所述操作还包括响应于接收到所述通知,轮询所述计数器中与所述参与者相对应的计数器以控制所述参与者是否能够继续通过所述同步屏障。17.一种或更多种设备,包括:一个或更多个硬件组件,用于接收指示同步屏障的多个参与者中的参与者到达所述同步屏障的通知的数据,并将所述通知传播到多个目标以控制所述参与者通过所述同步屏障。18.根据权利要求17所述的一种或更多种设备,其中所述一个或更多个硬件组件包括一个或更多个存储器管理单元和一个或更多个交换机。19.根据权利要求17所述的一种或更多种设备,其中所述目标中的每个目标与响应于所述通知而被更新的相应计数器相对应。20.根据权利要求17所述的一种或更多种设备,其中所述通知包括存储器访问请求,并且所述存储器访问请求被传播到多个设备以更新所述计数器。

技术总结
本公开涉及使用多播的高效多设备同步屏障。在各种示例中,处理元件(PE)已经达到同步屏障的单个通知(例如,存储器访问操作的请求)可以被传播到与多个处理元件相关联的多个物理地址(PA)和/或设备。因此,该通知可以允许处理元件已经达到同步屏障的指示在多个目标处被重新编码。每个通知可以访问屏障组的每个PE和/或设备的PA以更新对应的计数器。PE和/或设备可以轮询或以其他方式使用计数器来确定组中的每个PE何时已达到同步屏障。当对应的计数器指示同步屏障处的同步时,PE可以继续与一个或更多个其他PE异步地执行计算任务,直到可以达到后续同步屏障。达到后续同步屏障。达到后续同步屏障。


技术研发人员:G
受保护的技术使用者:辉达公司
技术研发日:2022.08.24
技术公布日:2023/7/31
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐