当前位置: 首页 > 专利查询>辉达公司专利>正文

用于协调计算机系统上的操作的高性能同步机制技术方案

技术编号:28320460 阅读:22 留言:0更新日期:2021-05-04 13:00
公开了用于协调计算机系统上的操作的高性能同步机制。公开了一种新型同步屏障,用于计算系统的同步操作。在一个实施例中,所公开的同步屏障提供了某些同步机制,诸如,例如“到达(Arrive)”和“等待(Wait)”被拆分以允许在协调同步中更高的灵活性和效率性。在另一实施例中,所公开的同步屏障允许诸如例如专用复制或直接存储器访问(DMA)引擎的硬件组件与基于软件的线程同步。

【技术实现步骤摘要】
用于协调计算机系统上的操作的高性能同步机制相关申请的交叉引用本申请要求2019年10月29日提交的第62/927417号临时申请和2019年10月29日提交的第62/927511号临时申请的权益,它们中每一个通过引用并入本文。本申请涉及2019年12月12日提交的共同分配共同未决的申请号为16/712083的美国专利申请,通过引用并入本文。关于联邦政府赞助的研究或开发的声明无
技术介绍
大规模并行的高性能多线程多核处理系统-包含许多并行运行的处理核的系统-处理数据的速度比过去更快。这些处理系统将复杂的计算分解为较小的任务,这些任务由并行处理核心同时执行。与只有一个或几个处理器按顺序执行相同计算时所需要的时间相比,这种“分而治之”的方法可以在很短的时间内执行复杂的计算。但是这种并行处理也产生需要在并行执行线程或块之间进行通信和协调的需求。不同执行过程相互协调其状态的一种方法是使用屏障同步。屏障同步通常涉及并行执行进程集合中的每个进程在屏障处等待,直到集合中的所有其他进程都赶上。除非所有进程都达到屏障,否则任何进程都无法超越屏障。图1A-图1H一起是说明这种屏障同步的示例的配套挂图动画。图1A示出了线程或其他执行进程T1、T2、...、TK。示出了三个线程,但可能有成百上千个线程。线程从一个共同点开始(例如,初始化点,先前的屏障等-在这里出于说明目的指定为“起点线”)。一个线程TK是“野兔”,它的执行速度比其他线程快,并且朝屏障前进的速度更快(此处通过铁路道口和图形“到达-等待点”表示,其含义将在下面说明)。另一个线程T1是“乌龟”-它的执行速度比其他线程慢,并且朝屏障前进的速度也更慢。图1B、1C、1D示出了以不同的速度朝向屏障前进的各种线程。图1D示出了“野兔”线程TK在“乌龟”线程T1之前到达屏障。由于“野兔”线程TK在“乌龟”线程T1也到达屏障之前不能越过屏障,所以“野兔”线程将在屏障处等待(在现有技术中-但请参见下文中的“拆分”到达-等待功能)。这可能会涉及许多延迟周期–例如,如果“乌龟”线程T1缓慢,因为它正在等待来自主存储器的服务,那么在“乌龟”线程最终赶上并达到屏障之前,“野兔”线程TK可能不得不等待很长时间(图1E)。一旦最后一个松散的“乌龟”线程T1到达屏障(图1F),该屏障便会解除阻塞(在图1G中通过铁路道口打开示出),并且所有线程都可以越过屏障。受益于同步屏障的有用的应用示例是“异步计算”。利用异步计算,通过以无序而不是严格的顺序调度任务来提高GPU利用率,以便“较晚”(按顺序)计算可以与“较早”(按顺序)计算同时执行。作为一个示例,当渲染图形时,异步计算允许着色执行与其他工作同时执行,而不是与其他工作负载顺序运行着色器。尽管可以将GPUAPI设计为假定大多数或所有调用是独立的,但开发人员还可以控制任务的计划方式,并实现屏障以确保正确性,例如在一项操作取决于另一项结果时。参见例如专利号为9117284和10217183的美国专利。基于硬件的同步机制已经包括在GPU中,以支持此类同步屏障功能。参见例如Xiao等,“经由快速屏障同步的块间GPU通信(Inter-BlockGPUCommunicationviaFastBarrierSynchronization)”,2010年IEEE并行与分布式处理(IPDPS)国际研讨会(2010年4月19日至23日)。具有此类基于硬件的同步功能的具有计算能力的GPU通常以批量同步的方式进行编程——内部具有屏障同步并且之间具有派生/联接的范围广泛的并行任务。参见例如公开号为2015020558的美国专利。在现代GPU架构中,许多执行线程并发执行,并且每个包含许多线程的线程束也并发执行。当线程束中的线程需要执行更复杂的通信或集体操作时,开发人员可以使用NVIDIA的CUDA“同步线程束(_syncwarp)”基元来同步线程。_syncwarp基元初始化硬件机制,所述硬件机制使执行线程在恢复执行之前等待,直到在掩码指定的所有线程都调用了具有相同掩码的基元为止。有关更多细节,请参见例如专利号为8381203、9158595、9442755、9448803、10002031和10013290的美国专利;也可以参见https://devblogs.nvidia.com/using-cuda-warp-level-primitives/和https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#memory-fence-functions。虽然已经证明硬件实现的屏障是有用的,但有时对于一个程序在同一时间使用不止一个屏障是有帮助的。例如,程序可能潜在地使用第一同步屏障来阻塞第一组线程,并使用第二个不同的同步屏障来阻塞另一组线程(或者有时,相同的同步屏障被再次使用以随着同一组线程执行路径的前进而反复阻止它们。过去,要执行多个屏障操作,软件开发人员通常需要事先向编译器指示需要多少屏障。在其中硬件实现了同步屏障的系统中,可用的同步屏障数量有限。与硬件中由硬件平台所支持的程序相比,某些程序需要或可能使用更多的同步屏障。由于同步屏障的其他用途和需求,需要改进同步屏障的分配。特别是,某些过去的硬件加速屏障实现方式和方法存在重大缺陷:1.需要多于一个物理硬件屏障的程序很难分配它们。2.具有经典“arrive-and-wait(到达并等待)”接口的屏障不能很好地隐藏同步延迟(请参考图1A-1H的配套挂图动画,“兔子”线程可能必须等待一段时间,并且什么也没有做,直到“乌龟”线程赶上)。3.复制引擎(例如直接存储器访问(DMA)单元)通常不能直接参与基于硬件的同步,因为它们不是软件线程。长期以来,以软件实现同步屏障是可能的,但是软件实现的屏障不一定提供与硬件实现的屏障相同的性能水平。例如,过去一些开发人员使用硬件来实现平台硬件所支持的屏障,如果需要更多(或不同种类)屏障,则以软件实现其他屏障。以软件实现同步屏障的开发人员通常会遭受性能损失。特别是,过度分配屏障可能意味着更少的执行路径和相应降低的性能。对于开发人员而言,确定是否通过使用更多的屏障和更少的任务来提高性能并不总是容易权衡的。需要以提供软件分配的灵活性但不会不利地影响性能的方式来改进对硬件加速和/或支持同步屏障的分配。附图说明图1A-1H一起提供了图像的时间序列,其中包括一个挂图动画,该动画演示了同步屏障的使用(要查看动画,请从该专利的电子副本的图1A开始并反复按“向下翻页”键);图2示出了示例性非限制性指令流;图2A和2B是采用本专利技术的同步屏障技术的示例性非限制性系统的框图;图3是示例非限制性存储器支持的同步屏障基元的框图;图4是可用于管理图3的屏障的硬件和软件功能的示例非限制性组合的框图。图5A-5F示出了与屏障函数相关联的操作的示例流程图;图6和7显示了说明性的两线程屏障示例;图8示出了三阶段本文档来自技高网...

【技术保护点】
1.一种同步屏障,包括:/n存储在存储器中的数据结构,所述数据结构包括计数器;/n所述计数器通过由执行线程或者硬件操作符执行的操作修改。/n

【技术特征摘要】
20191029 US 62/927,511;20191212 US 16/712,2361.一种同步屏障,包括:
存储在存储器中的数据结构,所述数据结构包括计数器;
所述计数器通过由执行线程或者硬件操作符执行的操作修改。


2.根据权利要求1所述的同步屏障,其中存储在存储器中的所述数据结构包括阶段标志、到达计数器和用于根据所述屏障的重置对所述到达计数器进行重新初始化的进一步的值。


3.根据权利要求1所述的同步屏障,其中所述硬件操作符包括执行复制的硬件。


4.根据权利要求1所述的同步屏障,其中所述操作包括与等待(WAIT)不同的到达(ARRIVE)和/或与到达(ARRIVE)不同的等待(WAIT)。


5.根据权利要求1所述的同步屏障,其中所述数据结构被构成为响应于融合加载/存储原子而重置,所述融合加载/存储原子能够由硬件引擎或者软件线程初始化。


6.一种计算机系统,包括:
存储在存储器中的同步屏障基元,所述基元包括计数器和阶段指示器;以及
存储器访问电路,所述存储器访问电路响应于下述两者之一而重置所述计数器并改变所述阶段指示器:
(a)由软件线程执行指令;以及
(b)当所述计数器指示线程集合中的所有线程和至少一个复制操作已经到达同步点并且在所述集合中的所有操作已经完成。


7.根据权利要求6所述的系统,其中所述计数器计数复制操作完成的数量和执行线程到达调用的数量的总计。


8.根据权利要求6所述的系统,其中所述指令包含不包括等待(WAIT)的到达(ARRIVE)操作或者不包括到达(ARRIVE)操作的等待(WAIT)操作。


9.根据权利要求6所述的系统,其中存储在存储器中的基元进一步包括预定值,以及当所述计数器指示在线程集合中的所有线程和复制操作已经到达同步点并且在所述集合中的所述复制操作已经完成时,硬件通过加载所述预定值重置所述计数器。


10.根据权利要求9所述的系统,其中所述系统被构成为允许线程动态改变所述预定值。


11.根据权利要求6所述的系统,其中所述同步屏障基元存储在GPU的共享存储器中。


12.根据权利要求6所述的系统,其中所述同步屏障基元存储在确定由线程访问所述基元的分级存储体系中。


13.根据权利要求6所述的系统,进一步包括比较器,所述比较器比较所述计数器的所述计数与预定值,并且根据所述比较的结果重置所述基元。


14.根据权利要求6所述的系统,其中所述基元的阶段指示器被构成为先通过到达(ARRIVE)命令读取再通过等待(W...

【专利技术属性】
技术研发人员:O·吉鲁J·肖凯特R·克拉辛斯基S·海因里希小刚·邱S·加德雷
申请(专利权)人:辉达公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1