通过基于区域的依赖进行内核的高效多GPU执行的系统和方法技术方案

技术编号:36519273 阅读:16 留言:0更新日期:2023-02-01 15:53
提供了用于图形处理的方法。一个示例方法包括:使用多个图形处理单元(GPU)来执行多个内核,其中执行对应的内核的责任被划分为一个或多个部分,每个部分被分配给对应的GPU。所述方法包括:在第一内核的第一多个部分中的每一个完成处理时,在第一内核处生成多个依赖数据。所述方法包括:在执行第二内核的一部分之前,检查来自第一内核的一个或多个部分的依赖数据。所述方法包括:只要没有满足第一内核的对应依赖数据,就延迟执行第二内核的所述部分。分。分。

【技术实现步骤摘要】
【国外来华专利技术】通过基于区域的依赖进行内核的高效多GPU执行的系统和方法


[0001]本公开涉及图形处理,并且更具体地涉及图形处理单元(GPU)上的内核计算。

技术介绍

[0002]近年来,在线服务不断推动,允许在云游戏服务器和通过网络连接的客户端之间以流式传输格式进行在线游戏或云游戏。由于按需提供游戏名称、执行更复杂游戏的能力、玩家之间联网以进行多玩家游戏的能力、玩家之间的资产共享、玩家和/或观众之间的即时体验共享、允许朋友观看朋友玩视频游戏、让朋友加入朋友正在进行的游戏进行等,流式传输格式越来越受欢迎。
[0003]云游戏服务器可以被配置为向一个或多个客户端和/或应用提供资源。也就是说,云游戏服务器可以配置有具有高吞吐量能力的资源。例如,单个图形处理单元(GPU)可以达到的性能是有限的,例如从对GPU可以有多大的限制中得出。为了在生成场景时渲染更复杂的场景或使用更复杂的算法(例如材质、照明等),可能需要使用多个GPU来渲染单个图像。
[0004]然而,这些GPU的同等使用是难以实现的。例如,在GPU之间均匀分配工作负载很困难,这会导致一些GPU在特定处理周期内比其他GPU更快地完成其工作负载。执行速度更快的GPU将等待(例如闲置)其他GPU完成处理它们各自的工作负载并将其结果复制到其他GPU,因为一个GPU生成的数据可能在下一个处理周期中被另一个GPU使用。此外,与经由高速总线与共享存储器连接的GPU相比,经由较低速总线连接的GPU具有明显的劣势。随着图像或缓冲区变大,副本的大小增加并成为瓶颈。由于这种低效率(例如等待来自其他GPU的副本、同步期间的空闲时间、增加的等待时间等),使用传统技术很难处理四倍的数据,即使可能有四倍该数量的GPU可用。例如,过去即使有多个GPU为应用处理图像,也无法支持对应增加的屏幕像素计数和几何图形密度(例如,四个GPU不能写入四倍的像素和/或处理图像的四倍顶点或图元)。
[0005]正是在这种背景下,出现了本公开的实施方案。

技术实现思路

[0006]本公开的实施方案涉及使用多个GPU协作来处理数据或图像。
[0007]本公开的实施方案公开了一种用于图形处理的方法。所述方法包括:使用多个图形处理单元(GPU)来执行多个内核,其中执行对应的内核的责任被划分为一个或多个部分,每个部分被分配给对应的GPU。所述方法包括:在第一内核的第一多个部分中的每一个完成处理时,在第一内核处生成多个依赖数据。所述方法包括:在执行第二内核的一部分之前,检查来自第一内核的一个或多个部分的依赖数据。所述方法包括:只要没有满足第一内核的对应依赖数据,就延迟执行第二内核的所述部分。
[0008]本公开的其他实施方案公开了一种用于执行方法的非暂时性计算机可读介质。所述计算机可读介质包括:用于使用多个图形处理单元(GPU)来执行多个内核的程序指令,其
中执行对应的内核的责任被划分为一个或多个部分,每个部分被分配给对应的GPU。所述计算机可读介质包括:用于在第一内核的第一多个部分中的每一个完成处理时在第一内核处生成多个依赖数据的程序指令。所述计算机可读介质包括:用于在执行第二内核的一部分之前检查来自第一内核的一个或多个部分的依赖数据的程序指令。所述计算机可读介质包括:用于只要没有满足第一内核的对应依赖数据,就延迟执行第二内核的所述部分的程序指令。
[0009]本公开的另外的其他实施方案公开了一种计算机系统,其包括处理器和存储器,所述存储器耦合到处理器并且其中存储有指令,所述指令如果由计算机系统执行,则致使计算机系统执行方法。所述方法包括:使用多个图形处理单元(GPU)来执行多个内核,其中执行对应的内核的责任被划分为一个或多个部分,每个部分被分配给对应的GPU。所述方法包括:在第一内核的第一多个部分中的每一个完成处理时,在第一内核处生成多个依赖数据。所述方法包括:在执行第二内核的一部分之前,检查来自第一内核的一个或多个部分的依赖数据。所述方法包括:只要没有满足第一内核的对应依赖数据,就延迟执行第二内核的所述部分。
[0010]根据以下结合附图理解的具体实施方式,本公开的其他方面将变得显而易见,所述附图以示例的方式示出了本公开的原理。
附图说明
[0011]通过参考结合附图的以下描述,可以最好地理解本公开,在附图中:
[0012]图1是用于经网络在一个或多个云游戏服务器之间提供游戏的系统的示意图,所述一个或多个云游戏服务器被配置为实现多个GPU协作以渲染单个图像。
[0013]图2是根据本公开的一个实施方案的其中多个GPU协作以处理数据或图像的多GPU架构的示意图。
[0014]图3至图5图示了示出在不使用数据依赖时内核依赖和内核完成处理后的数据复制以及GPU低效的时间线。
[0015]图6图示了根据本公开的一个实施方案的N维中的内核调用,所述内核调用被划分为被分配给多个GPU以供执行的多个部分。
[0016]图7A图示了根据本公开的一个实施方案的分割成区域的图像资源。
[0017]图7B图示了根据本公开的一个实施方案的分割成区域的缓存区资源。
[0018]图8是图示根据本公开的一个实施方案的用于图形处理的方法中的步骤的流程图,所述方法包括使用多个GPU来处理内核。
[0019]图9图示了根据本公开的一个实施方案的用于跨多个GPU均匀地分布内核的部分的固定或静态分配方案。
[0020]图10是图示根据本公开的一个实施方案的用于图形处理的方法中的步骤的流程图,所述方法包括使用多个GPU来处理内核,其中进行每内核部分的依赖跟踪以允许对后续内核的依赖性部分进行早期处理。
[0021]图11A图示了根据本公开的一个实施方案的基于内核的一部分的依赖数据。
[0022]图11B图示了根据本公开的一个实施方案的基于内核的区域和部分的依赖数据。
[0023]图12A至图12D图示了根据本公开的实施方案由内核的一部分检查依赖数据,其为
所述部分的索引范围的函数。
[0024]图13A至图13C图示了根据本公开的实施方案的当内核的一部分的索引范围的函数在所定义的索引空间之外时用于寻址的各种策略。
[0025]图14A图示了根据本公开的一个实施方案的动态分配方案,其中当将内核的部分分配给GPU以供执行时,不同的GPU遵循不同的空间填充曲线。
[0026]图14B图示了根据本公开的一个实施方案的按照在定义在图14A中的GPU空间填充曲线中概述的分配次序来分配内核的部分。
[0027]图15是图示根据本公开的一个实施方案的用于图形处理的方法中的步骤的流程图,所述方法包括为应用进行图像的多GPU渲染,其中依赖数据可以基于内核处理和/或绘制调用执行。
[0028]图16图示了可用于执行本公开的各种实施方案的各个方面的示例性装置的部件。
具体实施方式
[0029]虽然出于说明目的,以下详细说明包含许多具体细节,但是本领域的普通技术人员将会了解,以下细本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种用于图形处理的方法,其包括:使用多个图形处理单元(GPU)来执行多个内核,其中执行对应的内核的责任被划分为一个或多个部分,每个部分被分配给对应的GPU;在第一内核的第一多个部分中的每一个完成处理时,在所述第一内核处生成多个依赖数据;在执行第二内核的一部分之前,检查来自所述第一内核的一个或多个部分的依赖数据;以及只要没有满足所述第一内核的对应的依赖数据,就延迟执行所述第二内核的所述部分。2.如权利要求1所述的方法,其中由所述第一内核的一部分生成的依赖数据指示完成向资源的一个或多个区域的一次或多次写入。3.如权利要求2所述的方法,其中区域对应于所述资源的子集,其中所述子集包括图像的图块或缓冲区范围。4.如权利要求1所述的方法,其中所述依赖数据指示完成向资源的区域的写入。5.如权利要求4所述的方法,其中依赖数据每部分存储,或者其中依赖数据每个区域每部分存储。6.如权利要求1所述的方法,其中所述第一内核的一部分对应于由一个或多个维定义的索引空间的索引范围,其中所述索引范围可以跨越整个索引空间或由所述第一内核使用的每个维中的所述索引空间的子集。7.如权利要求6所述的方法,其中所述第一内核的所述一个或多个部分的依赖数据在执行所述第二内核的所述部分之前被检查的所述第一内核的所述一个或多个部分基于与所述第二内核的所述部分相对应的针对每个维的索引范围,所述方法包括:检查由通过与所述第二内核的所述部分相对应的针对各维的所述索引范围或其定义偏移索引范围的偏移定义的所述第一内核的一部分生成的所述依赖数据,或者检查由所述第一内核的多个部分生成的依赖数据,所述第一内核的所述多个部分由针对各维的索引范围定义,所述索引范围合在一起是与所述第二内核的所述部分相对应的针对各维的所述索引范围的超集;或者检查由所述第一内核的一个或多个部分生成的依赖数据,所述第一内核的所述一个或多个部分由针对各维的索引范围定义,所述索引范围导出自使用与所述第二内核的所述部分相对应的针对各维的索引范围来计算的函数。8.如权利要求7所述的方法,其中若指向所述第一内核的被检查的所述部分的所述偏移索引范围、所述索引范围的所述超集或从所述函数导出的计算的索引范围在所述索引空间之外,则:忽略在执行所述第二内核之前检查并由所述第一内核生成的所述依赖数据,或者针对所述内核的与索引范围相对应的一部分,检查在执行所述第二内核之前检查并由
所述第一内核生成的所述依赖数据,所述索引范围被箝位使得它位于所述索引空间内;或者针对所述内核的与索引范围相对应的一部分,检查在执行所述第二内核之前检查并由所述第一内核生成的所述依赖数据,所述索引范围被卷绕在所述索引空间中。9.如权利要求1所述的方法,其还包括:在第一GPU上执行所述第一内核的一部分;以及在所述第一GPU完成对所述第一内核的所述部分的处理后,将由所述第一内核生成的数据发送到所述第二GPU的本地存储器。10.如权利要求1所述的方法,其还包括:在第一GPU上执行所述第一内核的一部分;以及在所述第二GPU执行所述第二内核的所述部分之前,将由所述第一内核的所述部分生成的数据提取到所述第二GPU的本地存储器中。11.如权利要求1所述的方法,其还包括:经由直接存储器访问(DMA)将由在第一GPU上执行的所述第一内核的一部分生成的并写入到所述第一GPU的本地存储器中的数据提取到执行所述第二内核的所述部分的第二GPU的本地存储器中。12.如权利要求11所述的方法,其还包括:在完成所述DMA之前,在所述第二GPU处,通过正常的读取操作直接从所述第一GPU的所述本地存储器访问由所述第一GPU生成的所述数据;或者在完成所述DMA之后,在所述第二GPU处,从所述第二GPU的所述本地存储器访问由所述第一GPU生成的所述数据。13...

【专利技术属性】
技术研发人员:FA施特劳斯ME塞尔尼
申请(专利权)人:索尼互动娱乐有限责任公司
类型:发明
国别省市:

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

1