一种在具有中央处理单元(CPU)和图形处理单元(GPU)的计算系统中使用的方法,该方法包括:将第一存储器部分和第二存储器部分指派给:工作窃取调度器的工作者线程以及作为GPU一部分的执行单元;从与工作者线程相关联的队列取回任务;由工作者线程检测是否满足任务的截止条件;当不满足截止条件时,将任务划分成两个或更多个附加任务,并将两个或更多个附加任务添加到队列;当满足截止条件时,将与任务相对应的第一数据存储在第二存储器部分中,发出存储器栅栏获取指令;以及将第一值存储在第一存储器部分中。一存储器部分中。一存储器部分中。
【技术实现步骤摘要】
【国外来华专利技术】协作式工作窃取调度器
技术介绍
[0001]GPU设备针对计算吞吐量而不是响应时间(即,延时)进行了优化。GPU架构和相关联软件中的传统设计选择面向高持续吞吐量的算术运算。特别是,GPU具有相对较小且简单的高速缓存和软件管理的暂存存储器,其最大化了大量算术逻辑单元(ALU)的芯片空间,以用于并行处理海量数据集。但是,当前GPU的批量同步编程模型限制了它们在托管需要一定级别任务调度的灵活应用方面的适用性。已知的GPU调度策略是在硬件中定义的,并且不允许在GPU多处理器上的手动算法放置。例如,在相同的多处理器上运行需要多处理器同步的应用(例如,生产者
‑
消费者模式)可能会导致死锁。在传统系统中,也很难为处理任务提供这样的环境:其中,类似的任务可以在同一多处理器上共同调度以从局部性中受益,例如更好地利用本地GPU高速缓存。
[0002]来自NVIDIA公司的计算统一设备架构(Compute Unified Device Architecture,CUDA)框架提供了在GPU上启动协作线程网格的能力,其可以通过GPU本身上的全局屏障进行同步(不必与CPU上的屏障同步)。此功能允许用户将内核流水线(即,GPU程序)调度到GPU。然而,现成的GPU调度器仍然以未定义的方式在整个GPU设备上调度线程块,这阻止了在GPU多处理器上手动放置线程块。此限制可能未充分利用GPU资源。
技术实现思路
[0003]在一个实施例中,提供了一种在具有中央处理单元(CPU)和图形处理单元(GPU)的计算系统中使用的方法,该方法包括:将第一存储器部分和第二存储器部分指派给:(i)在所述CPU上执行的工作窃取调度器的工作者线程和(ii)作为所述GPU的部分的执行单元;从与所述工作者线程相关联的队列取回任务;由所述工作者线程检测是否满足所述任务的截止条件(cutoff condition);当不满足所述截止条件时,将任务划分成两个或更多个附加任务,并将两个或更多个附加任务添加到所述队列中。
[0004]在一个实施例中,第一存储器部分包括门铃寄存器,并且第二存储器部分包括任务寄存器。
[0005]在一个实施例中,执行单元包括多个GPU核心和在多个GPU核心之间共享的同步机制。
[0006]在一个实施例中,第一数据包括与所述任务相对应的操作码和用于执行所述任务的实参(argument)中的一个或多个。
[0007]在一个实施例中,该方法还包括:当由执行单元将第二值存储在所述第一存储器部分中时,检测到所述任务已完成,所述检测由所述工作者线程执行。
[0008]在一个实施例中,该方法还包括:从所述第二存储器部分取回由所述执行单元作为执行所述任务的结果而生成的第二数据,所述第二数据由所述工作者线程响应于检测到第二值已被所述执行单元存储在所述第一存储器部分中而被取回。
[0009]在一个实施例中,该方法还包括:从所述第二存储器部分取回所述第一数据,所述第一数据由所述执行单元响应于检测到所述第一值已被所述工作者线程存储在所述第一
存储器部分中而由执行单元取回;以及执行所述任务,所述任务由所述执行单元基于所述第一数据而执行。
[0010]在一个实施例中,该方法还包括:在所述第二存储器部分中存储由所述执行单元作为执行任务的结果而生成的第二数据;在所述第二数据存储在所述第二存储器部分后发出存储器栅栏释放指令(memory fence release instruction);以及在所述第一存储器部分中存储指示所述任务完成的第二值,所述第二值由所述执行单元在所述存储器栅栏释放指令被发出后存储。
[0011]在一个实施例中,提供了一种系统,包括:具有执行单元的图形处理单元(GPU);具有第一存储器部分和第二存储器部分的随机存取存储器;中央处理单元(CPU),被配置为执行工作窃取调度器,所述工作窃取调度器具有被配置为执行以下操作的工作者线程:从与所述工作者线程相关联的队列取回任务;检测是否满足所述任务的截止条件;当不满足所述截止条件时,将所述任务划分成两个或更多个附加任务,并将两个或更多个附加任务添加到所述队列中。
[0012]在一个实施例中,第一存储器部分包括门铃寄存器,并且第二存储器部分包括任务寄存器。
[0013]在一个实施例中,执行单元包括多个GPU核心和在多个GPU核心之间共享的同步机制。
[0014]在一个实施例中,第一数据包括与所述任务相对应的操作码和用于执行所述任务的实参中的一个或多个。
[0015]在一个实施例中,工作者线程还被配置为在由所述执行单元将第二值存储在所述第一存储器部分中时执行检测所述任务完成的操作。
[0016]在一个实施例中,工作者线程还被配置为执行从所述第二存储器部分取回作为执行任务的结果而生成的第二数据的操作,第二数据响应于检测到执行单元已将第二值存储在第一存储器部分中而被取回。
[0017]在一个实施例中,执行单元被配置为执行以下操作:从所述第二存储器部分取回所述第一数据,所述第一数据响应于由工作者线程检测到所述第一值已存储在所述第一存储器部分中而被取回;以及基于所述第一数据执行所述任务。
[0018]在一个实施例中,执行单元还被配置为执行以下操作:在所述第二存储器部分中存储由执行单元作为执行任务的结果而生成的第二数据;在所述第二数据存储在所述第二存储器部分后发出存储器栅栏释放指令;以及将指示所述任务完成的第二值存储在所述第一存储器部分中,在发出所述释放存储器栅栏指令之后所述第二值被存储。
[0019]根据本公开的方面,提供了一种非暂时性计算机可读介质,被配置为存储一个或多个处理器可执行指令,一个或多个处理器可执行指令在由至少一个处理器处理时,使处理器执行具有工作者线程的工作窃取调度器,所述工作者线程被布置成与作为图形处理单元(GPU)的一部分的执行单元共享第一存储器部分和第二存储器部分,所述工作者线程被布置成执行以下操作:从与所述工作者线程相关联的队列取回任务;检测是否满足所述任务的截止条件。
[0020]在一个实施例中,第一存储器部分包括门铃寄存器,并且第二存储器部分包括任务寄存器。
[0021]在一个实施例中,执行单元包括多个GPU核心和在所述多个GPU核心之间共享的同步机制。
[0022]在一个实施例中,第一数据包括与任务相对应的操作码和用于执行所述任务的实参中的一个或多个。
附图说明
[0023]从以下附图的描述中可以更充分地理解上述特征,其中:
[0024]图1是根据本公开的方面的计算系统的示例的图;
[0025]图2A是根据本公开的方面的工作窃取调度器的示例的图;
[0026]图2B是由根据本公开的方面的图2A的工作窃取调度器使用的队列的示例的图;
[0027]图3A是根据本公开的方面的图形处理单元(GPU)的示例的图;
[0028]图3B是根据本公开的方面的作为图3A的GPU的一部分的执行单元的示例的图;
[0029]图本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种用于在具有中央处理单元(CPU)和图形处理单元(GPU)的计算系统中使用的方法,所述方法包括:将第一存储器部分和第二存储器部分指派给:(i)在所述CPU上被执行的工作窃取调度器的工作者线程,以及(ii)作为所述GPU的部分的执行单元;从与所述工作者线程相关联的队列取回任务;由所述工作者线程检测是否满足用于所述任务的截止条件;当不满足所述截止条件时,将所述任务划分成两个或更多个附加任务,并且将所述两个或更多个附加任务添加到所述队列;当满足所述截止条件时,将与所述任务相对应的第一数据存储在所述第二存储器部分中,所述第一数据由所述工作者线程存储在所述第二存储器部分中;在所述第一数据被存储在所述第二存储器部分中之后,发出存储器栅栏获取指令;以及将第一值存储在所述第一存储器部分中,所述第一值在所述存储器栅栏获取指令被发出之后由所述工作者线程存储,其中,将所述第一值存储在所述第一存储器部分中使所述执行单元从第二存储器部分取回所述第一数据并且基于所述第一数据来执行所述任务。2.根据权利要求1所述的方法,其中,所述第一存储器部分包括门铃寄存器,并且所述第二存储器部分包括任务寄存器。3.根据权利要求1所述的方法,其中,所述执行单元包括多个GPU核心和在所述多个GPU核心之间共享的同步机制。4.根据权利要求1所述的方法,其中,所述第一数据包括以下各项中的一项或多项:与所述任务相对应的操作码和用于执行所述任务的实参。5.根据权利要求1所述的方法,还包括:当第二值由所述执行单元存储在所述第一存储器部分中时,检测到所述任务完成,所述检测由所述工作者线程执行。6.根据权利要求1所述的方法,还包括:从所述第二存储器部分取回作为执行所述任务的结果而由所述执行单元生成的第二数据,所述第二数据是响应于检测到第二值已由所述执行单元存储在所述第一存储器部分中,而由所述工作者线程取回的。7.根据权利要求1所述的方法,还包括:从所述第二存储器部分取回所述第一数据,所述第一数据是响应于检测到所述第一值已由所述工作者线程存储在所述第一存储器部分中,而由所述执行单元取回的;以及执行所述任务,所述任务由所述执行单元基于所述第一数据来执行。8.根据权利要求7所述的方法,还包括:将作为执行所述任务的结果而由所述执行单元生成的第二数据存储在所述第二存储器部分中;在所述第二数据被存储在所述第二存储器部分中之后,发出存储器栅栏释放指令;以及将指示所述任务完成的第二值存储在所述第一存储器部分中,在所述存储器栅栏释放指令被发出之后所述第二值由所述执行单元存储。9.一种系统,包括:
具有执行单元的图形处理单元(GPU);具有第一存储器部分和第二存储器部分的随机存取存储器;中央处理单元(CPU),其被配置为执行工作窃取调度器,所述工作窃取调度器具有被配置为执行以下操作的工作者线程:从与所述工作者线程相关联的队列取回任务;检测是否满足用于所述任务的截止条件;当不满足所述截止条件时,将所述任务划分成两个或更多个附加任务,并且将所述两个或更多个附加任务添加到所述队列;当满足所述截止条件时,将与所述任务相对应的第一数据存储在所述第二存储器部分中;在所述第一数据被存储在所述第二存储器部分中之后,发出存储器栅栏获取指令;以及在所述存储器栅栏获取指令被发出...
【专利技术属性】
技术研发人员:M,
申请(专利权)人:雷声公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。