CN112037117A - 用于运行高性能gpu应用的方法、装置及计算机存储介质 - Google Patents
用于运行高性能gpu应用的方法、装置及计算机存储介质 Download PDFInfo
- Publication number
- CN112037117A CN112037117A CN202010925628.8A CN202010925628A CN112037117A CN 112037117 A CN112037117 A CN 112037117A CN 202010925628 A CN202010925628 A CN 202010925628A CN 112037117 A CN112037117 A CN 112037117A
- Authority
- CN
- China
- Prior art keywords
- gpu
- rendering
- vertex
- macro
- cpu
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000009877 rendering Methods 0.000 claims abstract description 117
- 238000013507 mapping Methods 0.000 claims abstract description 24
- 238000004040 coloring Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 8
- 230000000694 effects Effects 0.000 abstract description 2
- 239000012634 fragment Substances 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 238000002156 mixing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 229920000433 Lyocell Polymers 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明实施例属于GPU技术领域,公开了用于运行高性能GPU应用的方法、装置及计算机存储介质;该方法可以包括:基于高端GPU应用程序的渲染复杂度为待渲染帧划分至少一个宏分块;建立宏分块与GPU阵列中各GPU之间的映射关系;将所述待渲染帧的渲染任务划分为各宏分块对应的渲染子任务;根据所述映射关系将各宏分块对应的渲染子任务分配至各宏分块所映射的GPU以执行。通过上述方法能够将高端GPU应用部署至低端GPU执行,以实现通过低端GPU运行高端GPU应用的效果。
Description
技术领域
本发明实施例涉及图像处理器(GPU,Graphics Processing Unit)技术领域,尤其涉及用于运行高性能GPU应用的方法、装置及计算机存储介质。
背景技术
随着GPU通用技术的发展,GPU所能适用的应用场景愈加丰富,通常可以将GPU应用程序依照其所适用的GPU的性能,划分为适用于低端GPU运行的低端GPU应用、适用于中、高端GPU运行的中、高端GPU应用。
目前来说,依照GPU的每秒浮点运算次数(FLOPS,FLoating-point Operation PerSecond)性能指标将GPU划分为低端GPU(低于192G FLOPS的GPU)、中端GPU(192G至1024GFLOPS的GPU)以及高端GPU(高于1024G FLOPS的GPU),可以理解地,高、中、低端GPU是相对而言的,上述指标阈值随着GPU的发展也会随之进行更新,本发明实施例不做具体限定。
通常来说,高端GPU应用是指对性能需求较高的图形应用程序,这类应用程序对渲染需求非常高,例如最典型的应用是3A(A lot of money、A lot of resources以及A lotof time)游戏;而低端GPU应用是指对GPU性能要求低的图形应用程序,这类应用对渲染需求低,最为典型的例子则是一些纸牌类游戏。
在目前各类的图形应用程序中,若要实现或运行高端GPU应用,则需要使用高性能的高端GPU来满足相应的应用需求,因此,低端GPU则无法满足高端GPU应用对性能的需求。而在一些数据应用平台中,其所搭载的GPU并非高端GPU,而是以中低端GPU为核心,在这种情况下,高端GPU应用就难以在这些应用平台中运行,由此一来,数据应用平台的应用场景就局限于中低端GPU应用领域。无法实现或运行高端GPU应用。
发明内容
有鉴于此,本发明实施例期望提供用于运行高性能GPU应用的方法、装置及计算机存储介质;能够将高端GPU应用部署至低端GPU执行,以实现通过低端GPU运行高端GPU应用的效果。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了一种用于运行高性能GPU应用的方法,所述方法应用于CPU,所述方法包括:
基于高端GPU应用程序的渲染复杂度为待渲染帧划分至少一个宏分块;
建立宏分块与GPU阵列中各GPU之间的映射关系;
将所述待渲染帧的渲染任务划分为各宏分块对应的渲染子任务;
根据所述映射关系将各宏分块对应的渲染子任务分配至各宏分块所映射的GPU以执行。
第二方面,本发明实施例提供了一种用于运行高性能GPU应用的方法,所述方法应用于GPU阵列中的GPU,所述方法包括:
接收CPU根据宏分块与GPU的映射关系所分配的渲染子任务;
执行所述渲染子任务,并将执行结果写入对应的显存中。
第三方面,本发明实施例提供了一种计算装置,所述计算装置包括:CPU、GPU阵列以及存储器;其中,所述GPU阵列包括多个用于执行图形应用程序的GPU;所述CPU耦接于所述GPU阵列中的GPU;
所述存储器,耦接至所述CPU以及所述GPU阵列中的GPU,并且存储有可供所述CPU以及所述GPU阵列中各GPU执行的指令或程序;当所述指令或程序由所述CPU执行时,使所述CPU执行第一方面所述用于运行高性能GPU应用的方法的步骤;
当所述指令或程序由所述GPU阵列中各GPU执行时,使所述GPU执行第二方面所述用于运行高性能GPU应用的方法的步骤。
第四方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有用于运行高性能GPU应用的程序,所述用于运行高性能GPU应用的程序被至少一个处理器执行时实现第一方面所述的用于运行高性能GPU应用的方法的步骤;或者第二方面所述的用于运行高性能GPU应用的的方法的步骤
本发明实施例提供了一种用于运行高性能GPU应用的方法、装置及计算机存储介质;在执行高端GPU应用的过程中,将GPU阵列中的每个GPU均映射到固定的macro-tile,并且依照该映射将高端GPU应用中的渲染任务划分为与macro-tile对应的渲染子任务,随后将渲染子任务分配至与macro-tile具有映射关系的GPU执行渲染操作,最终CPU将所有GPU的执行结果进行整合,以获得高端GPU应用所需的渲染完成图像。也就是说,即使GPU 阵列中的单个GPU属于低端GPU,无法单独执行或运行高端GPU应用,但是,通过合理的任务划分,就可以将一个复杂庞大的高端GPU应用拆分为多个计算量相对较小的低端GPU应用,利用低端GPU来实现高端GPU所能支持的性能,充分地将低端GPU的性能发挥出来,从而实现低端GPU完成高端GPU应用的场景需求。由此一来,对于GPU应用而言,无需再将精力花费在评判当前数据中心硬件资源配置是否能够满足当前GPU应用对GPU算力的需求。
附图说明
图1为本发明实施例提供的一种计算机系统的组成示意框图。
图2为本发明实施例提供的另一种计算机系统的组成示意框图。
图3为本发明实施例提供的一种图形渲染管线的逻辑结构框图。
图4为本发明实施例提供的一种用于运行高性能GPU应用的方法流程示意图。
图5为本发明实施例提供的宏分块与GPU的映射关系示意图。
图6为本发明实施例提供的GPU阵列的工作范围示意图。
图7为本发明实施例提供的覆盖多个宏分块的图元示意图。
图8为本发明实施例提供的另一种用于运行高性能GPU应用的方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
对于高端GPU应用来说,对性能要求相对较高,因此,通常需要高端GPU来运行或执行。但随着技术的不断发展,高端GPU会逐渐地由于技术迭代更新而成为低端GPU,从而无法持续地保持运行后续出现的高端GPU应用的能力。举例来说,如今现有的数据应用平台或数据计算平台,其所搭载的GPU可能会随着技术发展以及性能指标的提升而被评价为低端GPU,从而无法运行当前藉由技术发展所产生的高端GPU应用。为了能够充分地将低端GPU的性能发挥出来,从而能够完成当前高端GPU所能够完成的应用需求(也就是当前高端GPU应用的运行需求),本发明实施例期望通过将高端GPU应用进行合理的任务拆分,并且将拆分后的任务部署到低端GPU中,利用低端GPU来实现高端GPU所能支持的性能,从而实现低端GPU完成高端GPU应用的场景需求。
图1为本发明实施例提供的一种计算机系统100,该系统100提供了能够执行本发明实施例所阐述的技术方案的计算平台,如图1所示,该系统100可以包括CPU 101和系统存储器102,图形子系统110经由总线115和桥120连接到CPU 101和系统存储器102。在该系统100的一些示例中,系统存储器102可以存储用于CPU 101以及图形子系统110两者的指令和数据,此外,该系统100还可以包括显存160,用于存储经图形子系统110渲染或待图形子系统110渲染的图像数据,例如像素数据,以及任何其它合适的数据。图形子系统110也同样经由总线115和桥120连接到显存160,通常来说,显存160可作为系统存储器102的组成部分,或者独立地与系统存储器102分离。需要值得注意的是,上述计算机系统100具体可以为任意类型的计算装置,包括且不限于台式计算机、服务器、工作站、膝上计算机、基于计算机的仿真器、无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器,等。
具体来说,系统存储器102可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器 (Programmable ROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器 (Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。
需要说明的是,为清楚起见,计算机系统100还可包含图1中未图示的额外模块或单元。举例来说,计算机系统100可在其为移动无线电话或的实例中包含扬声器和麦克风(两者均未在图1中示出)来实现电话通信,或在计算机系统100为媒体播放器的情况下包含扬声器。计算机系统100还可包含摄像机。此外,计算机系统100中所示的各种模块和单元可能不是在计算机系统100的每个实例中都是必需的。
具体来说,图2为进一步阐述图1中图形子系统110的实例实施方案的框图。如图2所示,图形子系统110可以包括多个用于执行图形应用程序的GPU,如图2中GPU 1 1101、GPU2 1102、GPU 3 1103以及GPU 4 1104所示。其中GPU 1到GPU 4的每一个均能够通过各自总线链路(如图1中总线链接1151至1154所示)连接到桥120,并通过桥120耦接至CPU 101、系统存储器102以及显存160。从图2中可以看出,图形子系统110在某些场合或场景下可以被称之为GPU阵列,在GPU阵列所包括的GPU数量由具体场景及适用情况所确定,图2中关于GPU的数量4仅为示例性说明,并非具体限定。如上所述,本发明实施例的技术方案中的某些处理或步骤,在一些示例中,被实现为驻留在计算机系统(比如上述计算机系统100)的计算机可读存储器(比如上述系统存储器102)中,且由系统100中的CPU 101以及图形子系统110执行的一系列指令。该指令被执行以使得计算机系统100实现本发明实施例所描述的技术方案。举例来说,系统存储器102中可包括设备驱动程序103,在处理图形渲染指令过程中,CPU101可以通过调用系统存储器102中的设备驱动程序103向图形子系统110所搭载的各GPU(比如GPU 1到GPU 4)分别发出一或多个命令,以使得各GPU对应地执行该命令所指示的渲染操作。
具体来说,在实现或运行GPU应用的过程中,需要借助于图形渲染管线以实现对图形的渲染操作,而图形渲染管线属于一种通过级联形成的逻辑结构,各级也可称为各渲染阶段,在一些示例中,可以通过GPU中的通用渲染核以及多个固定功能渲染核通过级联实现该逻辑结构,具体来说,参见图3所示,图形渲染管线30这一逻辑结构中所包括的各级或各渲染阶段依次为:
顶点获取阶段301,通常负责从显存中抓取图形数据(三角形、线和点)并供应到图形渲染管线30。举例来说,顶点获取阶段301可从显存160中收集高阶表面、图元等的顶点数据,且将顶点数据和属性输出到顶点着色阶段302。
顶点着色阶段302,负责处理所接收顶点数据和属性,并通过每次针对每个顶点实施一组操作来处理顶点数据。
图元装配阶段303,负责收集顶点并将所述顶点组成几何图元。例如,图元装配阶段303可以配置为将每三个连续的顶点组成为几何图元(即三角形)。在一些实施例中,特定的顶点可以被重复用于连续的几何图元(例如,三角形带中的两个连续的三角形可以共享两个顶点)。
几何着色阶段304,负责接收顶点着色阶段302的输出作为输入,通过高效的几何运算来增删顶点,并输出顶点数据。
剪切阶段305,负责保留处于视景体内的图元同时剔除处于视景体外的图元,以减轻后续各阶段的计算负担。
光栅化阶段306,负责准备片段着色阶段307的图元。举例来说,光栅化阶段306可产生若干碎片以供片段着色阶段307进行阴影处理。
片段着色阶段307,负责由光栅化阶段306接收碎片且产生例如颜色等每像素数据。此外,片段着色阶段307还可执行例如纹理混合和照明模型计算等每像素处理。
混合测试阶段308,通常负责对像素数据实施多种操作,例如实施透明测试(Alphatest)、模板测试(stencil test)、以及将像素数据与对应于与该像素相关的其他片段的其他像素数据混合等操作。当混合测试阶段308已经完成处理像素数据(即输出数据)时,可以将处理完成的以图像为例的像素数据写入到以显存160为例的渲染目标,以产生最终结果。
通过图3所示的图形渲染管线30可以看出,该逻辑结构中的各阶段均有专属的操作任务,并且对于在本发明实施例中,顶点着色阶段302、图元装配阶段303、几何着色阶段304、以及剪切阶段305所执行操作任务是针对顶点或者以顶点为基础的渲染操作,因此,在本发明实施例中,可以将顶点着色阶段302、图元装配阶段303、几何着色阶段304、以及剪切阶段305统称为顶点渲染过程;而光栅化阶段306、片段着色阶段307以及混合测试阶段308所需执行操作任务是针对图元或以图元为基础的渲染操作,所以将光栅化阶段306、片段着色阶段307以及混合测试阶段308统称为图元渲染过程。
基于前述图1或图2所示的计算机系统100,其图形子系统110所搭载的各GPU(比如GPU 1到GPU 4)当前被评价为低端GPU的情况下,由于不具备实现当前高端GPU应用的性能,导致计算机系统100无法运行或实现当前高端GPU应用。在本发明实施例的技术方案中,考虑到在GPU应用运行过程中,顶点的渲染过程都是相对独立的,由此可以将高端GPU应用中关于顶点的渲染过程分配至图形子系统110的各GPU完成;此外,在图形渲染管线关于顶点的渲染过程后续的图元渲染过程,同样可以通过拆分到图形子系统110的各GPU以实现高端GPU应用,从而实现低端GPU完成高端GPU应用的场景需求。基于以上阐述,参见图4,其示出了本发明实施例提供的一种用于运行高性能GPU应用的方法,该方法可以应用于前述计算机系统100中的CPU 101,该方法可以包括:
S401:基于高端GPU应用程序的渲染复杂度为待渲染帧划分至少一个宏分块macro-tile;
S402:建立宏分块与GPU阵列中各GPU之间的映射关系;
S403:将所述待渲染帧的渲染任务划分为各宏分块对应的渲染子任务;
S404:根据所述映射关系将各宏分块对应的渲染子任务分配至各宏分块所映射的GPU以执行。
对于图4所示的技术方案,需要说明的是,宏分块macro-tile是由CPU 101根据高端GPU应用程序对于场景的渲染复杂度进行自定义的尺寸进行划分获得,并非由GPU内部控制处理。GPU仅根据CPU 101通过设备驱动程序103所分配的渲染子任务进行执行渲染操作,也就是说,CPU 101所划分的宏分块macro-tile对GPU是不可见的,从而保证了CPU 101对于任务调度的控制力。在本发明实施例中,macro-tile的尺寸最小为,px表示像素。
对于图4所示的技术方案,所述待渲染帧的渲染任务具体可以包括前述图3所示图形渲染管线30中的图元渲染过程所包含的各阶段所执行的操作任务,相应来说,渲染子任务则是针对其对应的宏分块macro-tile所执行的图元渲染过程中所包含的各阶段所需执行的操作任务。在一些示例中,当CPU 101完成宏分块划分之后,就可以建立各宏分块与GPU阵列中各GPU之间的映射关系,如图5所示,设定CPU将待渲染帧划分为个macro-tile,并且GPU阵列包括个GPU。此时,CPU就可以按照每个GPU均需要对应至少一个macro-tile,并且同一个macro-tile仅对应一个GPU的策略建立各宏分块与GPU阵列中各GPU之间的映射关系,如图5所示,m-tile为macro-tile的简写,m-tile00以及m-tile 01与GPU阵列中的GPU 00具有映射关系,如图中斜交叉线填充以及虚线箭头所示;而m-tile 02以及m-tile 03与GPU阵列中的GPU M0具有映射关系,如图中正交叉线填充以及实线箭头所示。根据图5所示的映射关系示例,GPU阵列中的每个GPU都有对应的macro-tile,从而能够执行其对应的macro-tile所对应的渲染子任务,例如光栅化阶段306、片段着色阶段307以及混合测试阶段308所需执行的渲染操作。
对于图4所示的技术方案,在一些示例中,所述将所述待渲染帧的渲染任务划分为各宏分块对应的渲染子任务,可以包括:
将所述渲染任务中属于同一宏分块的顶点划分为同属宏分块对应的渲染子任务。
由前所述,渲染任务是指对图元进行光栅化阶段306、片段着色阶段307以及混合测试阶段308的渲染操作,而图元是由顶点组成或形成的,顶点同样也是执行光栅化阶段306、片段着色阶段307以及混合测试阶段308等渲染操作的基础,因此,CPU 101可以根据顶点坐标以及划分的macro-tile所包含的坐标范围对待渲染帧的顶点进行划分,从而相应地完成了将待渲染帧的渲染任务划分为各macro-tile对应的渲染子任务。结合步骤S404,各GPU可以依据其映射的macro-tile被CPU 101分配渲染子任务,使得各GPU可以通过执行其对应的渲染子任务以完成整个渲染任务的一部分,从而当GPU阵列中的所有GPU均完成自身对应的渲染子任务之后,CPU 101就可以将各GPU完成的渲染子任务进行整合,从而完成待渲染帧的完整的渲染任务。具体来说,渲染子任务分配至各宏分块所映射的GPU以执行完成之后,各GPU可以将自身对应的执行结果(比如完成对应macro-tile的渲染操作所形成的像素数据)写入对应的显存160中,等待CPU 101对所有GPU的执行结果进行整合,在一些示例中,图4所示的技术方案还可以包括:
读取各GPU对应的显存中由各GPU执行完成对应的渲染子任务之后所写入的执行结果;
根据所述宏分块与GPU阵列中各GPU之间的映射关系,将所有GPU的执行结果进行整合,获得待渲染帧对应的渲染完成图像。
通过上述示例,在执行高端GPU应用的过程中,将GPU阵列中的每个GPU均映射到固定的macro-tile,并且依照该映射将高端GPU应用中的渲染任务划分为与macro-tile对应的渲染子任务,随后将渲染子任务分配至与macro-tile具有映射关系的GPU执行渲染操作,最终CPU 101将所有GPU的执行结果进行整合,以获得高端GPU应用所需的渲染完成图像。也就是说,即使GPU 阵列中的单个GPU属于低端GPU,无法单独执行或运行高端GPU应用,但是,通过合理的任务划分,就可以将一个复杂庞大的高端GPU应用拆分为多个计算量相对较小的低端GPU应用,利用低端GPU来实现高端GPU所能支持的性能,充分地将低端GPU的性能发挥出来,从而实现低端GPU完成高端GPU应用的场景需求。由此一来,对于GPU应用而言,无需再将精力花费在评判当前数据中心硬件资源配置是否能够满足当前GPU应用对GPU算力的需求。如图6所示,通过本发明实施例,GPU阵列的工作范围601能够远大于标称的单个GPU的工作范围602。
对于图4所示的技术方案,在一些示例中,各GPU在执行各自的渲染子任务的过程中需要其他GPU的顶点数据,因此,基于该情况,除了根据所述映射关系将各宏分块对应的渲染子任务分配至各宏分块所映射的GPU以执行之外,图4所示的技术方案还可以包括:
将各GPU执行各自渲染子任务以外所需的由其他GPU映射的macro-tile中的顶点数据发送至相应的GPU。需要说明的是,本示例也可被称之为顶点数据迁移过程,从而使得各GPU能够完整地执行各自的渲染子任务。
此外,对于图4所示的技术方案,在一些示例中,待渲染帧中的某些图元会覆盖多个macro-tile,对于这种覆盖多个macro-tile的图元,其图元信息最终会被分配到所覆盖的macro-tile所对应的每个GPU上,由此会出现每个GPU中所需处理的图元信息中会包含不属于该GPU自身处理的内容,因此,渲染子任务分配至各宏分块所映射的GPU以执行之后,GPU检测到渲染子任务中包括没有覆盖自身映射的macro-tile的图元信息部分之后,就会对其进行删除,从而仅根据覆盖自身映射的macro-tile的图元信息部分进行光栅化处理等后续渲染操作流程。具体来说,以图7所示为例,灰色填充的三角形图元覆盖了m-tile01、m-tile02、m-tile11以及m-tile12,并且设定macro-tile01和macro-tile11由1号GPU(标记为GPU1)完成渲染;macro-tile02和macro-tile12由2号GPU(GPU2)完成渲染。那么CPU 101在向GPU 1以及GPU 2分配针对该三角形图元进行渲染的渲染子任务时,会将该三角形图元的所有顶点数据以及图元信息均发送至GPU 1以及GPU 2。而由于各GPU均严格执行自身对应的macro-tile所对应的渲染子任务,所以,对于GPU 1来说,会在执行渲染子任务的过程中删除覆盖了macro-tile02和macro-tile12的图元信息部分(也就是应当由GPU 2执行渲染子任务的部分);相应来说,对于GPU 2,则会在执行渲染子任务的过程中删除覆盖了macro-tile01和macro-tile11的图元信息部分(也就是应当由GPU 1执行渲染子任务的部分);最终灰色填充的三角形图元由GPU 1以及GPU 2完成渲染,也就是说,对于覆盖多个macro-tile的图元而言,最终其光栅化是由多个macro-tile对应的多个GPU协同完成的。
对于上述图4所示的技术方案来说,均针对图元渲染过程进行了阐述,需要说明的是,在各种级别的GPU应用中,顶点的渲染是相对独立的,因此,对于大型的高端GPU应用来说,关于顶点渲染过程,在一些示例中,本发明实施例的技术方案还可以包括:
计算待渲染帧中各顶点的顶点平面坐标;
根据各顶点的顶点平面坐标完成待渲染帧的图元装配,并确定所述顶点所属的macro-tile。
上述示例可以看出,CPU可以根据自身的性能指标完成顶点渲染过程。而由于顶点的渲染是相对独立的,那么同样也可以将顶点渲染过程灵活地分配给不同的GPU完成,也就是说,在另一些示例中,本发明实施例的技术方案还可以包括:
将待渲染帧的所有顶点平均分配至所述GPU阵列中各GPU,以使得各GPU完成各自所分配顶点的顶点着色操作以及平面坐标计算;需要说明的是,GPU在完成自身的顶点着色操作以及平面坐标计算后,会将结果存储至对应的显存中以供CPU 101读取;
从显存中读取已完成顶点着色操作的顶点的平面坐标,并按照当前图元类型对所述顶点进行图元装配,并确定所述顶点所属的macro-tile。
基于前述技术方案相同的发明构思,在一些示例中,相应于GPU阵列中的GPU,参见图8,本发明实施例同样提供了一种用于运行高性能GPU应用的方法,该方法应用于GPU阵列中的GPU,所述方法包括:
S801:接收CPU根据宏分块与GPU的映射关系所分配的渲染子任务;
S802:执行所述渲染子任务,并将执行结果写入对应的显存中。
在上述示例中,优选地,所述方法还包括:
接收由CPU发送的非自身映射的宏分块中的顶点数据。
在上述示例中,优选地,所述方法还包括:
相应于检测到所述渲染子任务中包括没有覆盖自身映射的宏分块的图元信息部分,将所述图元信息部分删除。
在上述示例中,优选地,所述方法还包括:
接收CPU发送的待渲染帧的顶点;
对接收到的顶点完成顶点着色操作以及平面坐标计算,并将结果写入对应的显存。
可以理解地,本示例及其优选示例,其具体实现内容以及阐述与前述技术方案中的相应内容一致,本发明实施例在此不作赘述。
需要说明的是,本发明实施例的所有技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM, Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机存储介质,所述计算机存储介质存储有用于运行高性能GPU应用的程序,所述用于运行高性能GPU应用的程序被至少一个处理器执行时实现前述技术方案中所述的用于运行高性能GPU应用的的方法的步骤。
需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种用于运行高性能GPU应用的方法,其特征在于,所述方法应用于CPU,所述方法包括:
基于高端GPU应用程序的渲染复杂度为待渲染帧划分至少一个宏分块;
建立宏分块与GPU阵列中各GPU之间的映射关系;
将所述待渲染帧的渲染任务划分为各宏分块对应的渲染子任务;
根据所述映射关系将各宏分块对应的渲染子任务分配至各宏分块所映射的GPU以执行。
2.根据权利要求1所述的方法,其特征在于,所述将所述待渲染帧的渲染任务划分为各宏分块对应的渲染子任务,包括:
将所述渲染任务中属于同一宏分块的顶点划分为同属宏分块对应的渲染子任务。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
读取各GPU对应的显存中由各GPU执行完成对应的渲染子任务之后所写入的执行结果;
根据所述宏分块与GPU阵列中各GPU之间的映射关系,将所有GPU的执行结果进行整合,获得待渲染帧对应的渲染完成图像。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将各GPU执行各自渲染子任务以外所需的由其他GPU映射的宏分块中的顶点数据发送至相应的GPU。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
计算所述待渲染帧中各顶点的顶点平面坐标;
根据各顶点的顶点平面坐标完成所述待渲染帧的图元装配,并确定所述顶点所属的宏分块。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将待渲染帧的所有顶点平均分配至所述GPU阵列中各GPU,以使得各GPU完成各自所分配顶点的顶点着色操作以及平面坐标计算;
读取已完成顶点着色操作的顶点的平面坐标,并按照当前图元类型对所述顶点进行图元装配,并确定所述顶点所属的宏分块。
7.一种用于运行高性能GPU应用的方法,其特征在于,所述方法应用于GPU阵列中的GPU,所述方法包括:
接收CPU根据宏分块与GPU的映射关系所分配的渲染子任务;
执行所述渲染子任务,并将执行结果写入对应的显存中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
接收由CPU发送的非自身映射的宏分块中的顶点数据。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
相应于检测到所述渲染子任务中包括没有覆盖自身映射的宏分块的图元信息部分,将所述图元信息部分删除。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:
接收CPU发送的待渲染帧的顶点;
对接收到的顶点完成顶点着色操作以及平面坐标计算,并将结果写入对应的显存。
11.一种计算装置,其特征在于,所述计算装置包括:CPU、GPU阵列以及存储器;其中,所述GPU阵列包括多个用于执行图形应用程序的GPU;所述CPU耦接于所述GPU阵列中的GPU;
所述存储器,耦接至所述CPU以及所述GPU阵列中的GPU,并且存储有可供所述CPU以及所述GPU阵列中各GPU执行的指令或程序;当所述指令或程序由所述CPU执行时,使所述CPU执行权利要求1至6任一项所述用于运行高性能GPU应用的方法的步骤;
当所述指令或程序由所述GPU阵列中各GPU执行时,使所述GPU执行权利要求7至10任一项所述用于运行高性能GPU应用的方法的步骤。
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有用于运行高性能GPU应用的程序,所述用于运行高性能GPU应用的程序被至少一个处理器执行时实现权利要求1至6任一项所述的用于运行高性能GPU应用的方法的步骤;或者权利要求7至10任一项所述的用于运行高性能GPU应用的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010925628.8A CN112037117A (zh) | 2020-09-07 | 2020-09-07 | 用于运行高性能gpu应用的方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010925628.8A CN112037117A (zh) | 2020-09-07 | 2020-09-07 | 用于运行高性能gpu应用的方法、装置及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112037117A true CN112037117A (zh) | 2020-12-04 |
Family
ID=73590714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010925628.8A Pending CN112037117A (zh) | 2020-09-07 | 2020-09-07 | 用于运行高性能gpu应用的方法、装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112037117A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112698958A (zh) * | 2021-03-25 | 2021-04-23 | 异现实科技(成都)有限公司 | 基于像素流的离屏分布式集群云渲染系统及方法 |
CN112991505A (zh) * | 2021-04-16 | 2021-06-18 | 辽宁向日葵教育科技有限公司 | 一种线上3d渲染方法 |
CN113393585A (zh) * | 2021-08-18 | 2021-09-14 | 西安芯瞳半导体技术有限公司 | 一种渲染问题定位方法、装置、定位设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890660A (zh) * | 2003-11-19 | 2007-01-03 | 路西德信息技术有限公司 | Pc总线上的多重三维图形管线的方法及系统 |
CN103049927A (zh) * | 2013-01-17 | 2013-04-17 | 浙江大学 | 基于gpu集群的实时光线跟踪渲染方法 |
CN109978751A (zh) * | 2017-12-28 | 2019-07-05 | 辉达公司 | 多gpu帧渲染 |
-
2020
- 2020-09-07 CN CN202010925628.8A patent/CN112037117A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890660A (zh) * | 2003-11-19 | 2007-01-03 | 路西德信息技术有限公司 | Pc总线上的多重三维图形管线的方法及系统 |
CN103049927A (zh) * | 2013-01-17 | 2013-04-17 | 浙江大学 | 基于gpu集群的实时光线跟踪渲染方法 |
CN109978751A (zh) * | 2017-12-28 | 2019-07-05 | 辉达公司 | 多gpu帧渲染 |
Non-Patent Citations (1)
Title |
---|
占伟伟 等: "自主可控环境下三维海量态势显示优化方法", 指挥信息系统与技术, vol. 10, no. 02, 22 May 2019 (2019-05-22), pages 80 - 84 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112698958A (zh) * | 2021-03-25 | 2021-04-23 | 异现实科技(成都)有限公司 | 基于像素流的离屏分布式集群云渲染系统及方法 |
CN112991505A (zh) * | 2021-04-16 | 2021-06-18 | 辽宁向日葵教育科技有限公司 | 一种线上3d渲染方法 |
CN113393585A (zh) * | 2021-08-18 | 2021-09-14 | 西安芯瞳半导体技术有限公司 | 一种渲染问题定位方法、装置、定位设备及存储介质 |
CN113393585B (zh) * | 2021-08-18 | 2021-11-19 | 西安芯瞳半导体技术有限公司 | 一种渲染问题定位方法、装置、定位设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4198909A1 (en) | Image rendering method and apparatus, and computer device and storage medium | |
CN112037117A (zh) | 用于运行高性能gpu应用的方法、装置及计算机存储介质 | |
CN111062858B (zh) | 高效的提前渲染方法、装置及计算机存储介质 | |
US9293109B2 (en) | Technique for storing shared vertices | |
US8237710B1 (en) | Methods and apparatus for fill rule evaluation over a tessellation | |
CN112529995B (zh) | 图像渲染计算方法、装置、存储介质以及终端 | |
US9418616B2 (en) | Technique for storing shared vertices | |
CN109242967B (zh) | 一种三维地形渲染方法及装置 | |
US7768516B1 (en) | Image splitting to use multiple execution channels of a graphics processor to perform an operation on single-channel input | |
US7605825B1 (en) | Fast zoom-adaptable anti-aliasing of lines using a graphics processing unit | |
CN114972607B (zh) | 加速图像显示的数据传输方法、装置及介质 | |
US8907979B2 (en) | Fast rendering of knockout groups using a depth buffer of a graphics processing unit | |
CN110223216B (zh) | 一种基于并行plb的数据处理方法、装置及计算机存储介质 | |
CN117501312A (zh) | 图形渲染的方法及装置 | |
US20210150658A1 (en) | Reduced bandwidth tessellation factors | |
CN112189215A (zh) | 用于在图形流水线中实现存储器使用减少的编译器辅助技术 | |
CN117785480B (zh) | 处理器、归约计算方法及电子设备 | |
CN111448546A (zh) | 处理单元中的工作负载的精确挂起和恢复 | |
WO2023197762A1 (zh) | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN112991143A (zh) | 一种图元装配的方法、装置及计算机存储介质 | |
CN113409411A (zh) | 图形界面的渲染方法、装置、电子设备及存储介质 | |
CN108010113B (zh) | 一种基于像素着色器的深度学习模型执行方法 | |
CN116261740A (zh) | 基于每个信道压缩纹理数据 | |
CN113467959A (zh) | 应用于gpu的确定任务复杂度的方法、装置及介质 | |
JP2023525725A (ja) | データ圧縮の方法及び装置 |
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 |