Pc总线上的多重三维图形管线的方法及系统的制作方法

文档序号:6500552阅读:240来源:国知局
专利名称:Pc总线上的多重三维图形管线的方法及系统的制作方法
技术领域
本发明涉及一种三维的(three-dimensional)多重图形处理方法及系统。特别涉及一种基于时间分割、图像分割和对象分割三种并行方法的统一框架,通过图形处理单元(GPU)改善图像处理并行性的方法及系统。
定义、首字母缩拼词和缩写词本说明书通篇采用下列定义GPUGPU(Graphic Processing Units)与CPU(Central ProcessingUnit)相类似,GPU是主要用于处理三维功能的单芯片处理器。其可执行的任务包括,光照效果,对象转换以及三维动作。这些都是计算密集的任务,会给CPU造成很重的负荷,而由于专门的GPU可以处理大多数三维计算,它可以协助计算机更有效并且当然能更快地执行这些任务。
多边形三维图形中的多边形是二维的图元(two-dimensionalprimitives),其可以生成并显示三维的复杂图形物体。该多边形是该物体的各个面并且由N个顶点组成。实际上,多边形是由三条或更多的线段围成的封闭的平面图形。
帧缓冲区帧缓冲区(FB)是以象素形式存储图像内容的缓冲区。通常,内存部分是留作保存送到监视器显示的完整位像之用的。特别地,帧缓冲区是存储在视频适配器的内存芯片里的。然而,在某些情况下,视频芯片组集成在主板设计中,并且帧缓冲区存储在通用主内存中。
对象合成单元用于将多个三维光栅再次合成为最终图像。基于象素的深度值,该经合并的数据根据与三维空间中的观察器距离最近的象素而分解。所述的新方法基于自主联合决策,允许运用对于任何帧复杂性的多重GPU。
显示列表显示列表是通过例如多边形和属性的图形图元的列表对三维场景的描述。该显示列表为快速图像检索提供了中间图像存储。
顶点数组顶点数组是描绘三维场景的顶点的数组。顶点数组为快速图像检索提供了中间图像存储。
阿尔法融合阿尔法融合控制了图形信息以诸如透明度或者不透明度等级显示的方式。
背景技术
三维图形管线结构分为CPU阶段,总线阶段,GPU顶点处理阶段,GPU碎片(象素)处理阶段。给定的管线仅与上述阶段之一的最薄弱的环节一样强壮,因此该主要瓶颈决定了总的处理能力。要提高性能就必须减少或者消除这些瓶颈。主要的瓶颈很大程度上依赖于应用程序。极端的两个例子,一个是类似CAD(Computer Aided Design)的应用程序,其特征为大量的多边形(顶点),另一个是视频游戏应用程序,其具有少量的多边形但具有密集的碎片活动性(例如纹理)。第一类遭遇到顶点处理的瓶颈,而第二类遭遇到碎片的瓶颈。两者经常在PC总线上发生堵塞。许多应用程序具有混合的特征,在单帧基础上,其瓶颈任意地在两个极端之间改变。
改善GPU性能的唯一方法是根据瓶颈解决方法的其中之一使多重GPU能并行处理。有两种主要的使用GPU再现(rendering)图形数据的方法。这些方法包括时间分割(时域合成)法,其中每个GPU再现后继帧,以及图像分割(屏幕空间合成)法,其中每个GPU再现各帧的子象素集。第三种不常用的方法是对象分割(多边形分解)法。
在时间分割法中每个GPU再现后继帧。其缺点在于每个GPU都得再现一幅完整的帧。因此,各帧再现的速度就受限于单个GPU再现帧的速度。虽然多重GPU具有较高的帧频,但是对于用户的输入在系统的响应时间(反应时间)里会产生延迟。这个延迟的发生是因为,虽然在任何给定的时间,只有一个GPU参与显示一幅已再现的帧,但是每个GPU都处于顺次再现一系列帧的其中之一的处理过程中。为了保持高的帧频,系统延迟了用户的输入,直至首先接收到序列中循环信号的特定GPU再次参与其再现帧的显示。在实际应用中,这种情况限制了系统中使用GPU的数量。如果有大数据集,由于每个GPU都必须能够访问所有的数据,这里出现另一个瓶颈。这就要求或者是维持多重的大数据集的拷贝操作,或者在进行单独拷贝操作中产生可能的冲突。
图像分割法将屏幕分割给了N个GPU,因而每个GPU显示图像的1/N。整个多边形集被转移到各个GPU进行处理,但是,像素处理被显著减少为窗口尺寸。图像分割没有等待时间的问题,但是它有与大数据集相类似的瓶颈,因为每个GPU都必须检查整个数据库以确定哪个图形元素落在了分配给该GPU的屏幕部分内。图像分割方法适合于密集的像素处理的应用程序。
对象分割方法是基于数据子集在多重GPU之间的分配。该数据子集再现于GPU管线,并转换到碎片(子图像像素)的帧缓冲区(FB)。多重FB的子图像必须被合并(合成)以产生最终要显示的图像。对象分割在由大量多边形构成的非常复杂的数据的单帧级别上传递并行再现。输入数据在多边形级别被分解,并在象素级别被重组。由专用的驱动巧妙地将由应用程序生成的数据流在所有GPU之间进行分配。由GPU产生的光栅被合成为最终的光栅,以及被移动到显示器。对象分割法更适用于需要再现大量几何数据的应用程序。特别是CAD,数字内容创作(Digital Content Creation),以及类似的视觉仿真软件,其被视为“观察器”,意味着数据是预先设计好的,以致它们在空间中的三维位置不受用户的交互控制。但是,用户可以对观察器的位置、观察方向和图形数据的尺度进行交互控制。用户还可以对子数据集的选择以及其再现的方法进行控制。其包括操控图像的光照效果,着色效果,透明效果,以及底层数据其它的视觉特性。
在上述软件中,由于所述显示列表或顶点数组中的数据通常包括大量的几何体,所以所述数据都趋向非常复杂。因此,单帧的构成时间也趋向于非常长(典型地,例如两千万个多边形需时0.5秒),其反过来降低了整个系统的性能。
因此,需要提供一个面临PC(Personal Computer)总线上的高通信量,能保证最佳系统性能的系统。
本发明的一个目的是使多重GPU并行从而增强GPU的性能。
本发明的另一个目的是提供一个系统,其中单帧的构成时间不会减慢整个系统的响应。
本发明的又一个目的是提供一种系统和方法,其中顶点处理和碎片处理的图形管线瓶颈可以得到明显并且巧妙地解决。
本发明的再一个目的是提供一种具有高可测量性以及无限的场景复杂性的系统和方法。
本发明进一步的目的是提供一种克服因数据分解而引起的技术难点的处理过程,该数据分解是GPU间的数据和图形命令的一部分。
本发明还有一个目的是提供一种用于数据和图形命令智能分解的方法和系统,其保留图形库的基本特征作为状态机,并遵从图形标准。
本发明其它的目的和优势将随着说明的过程而渐渐清晰明了。

发明内容
本发明为一种用于改善图像处理的并行性的系统,其使用一个或多个并行模式,其中图像通过一个或多个图形处理单元显示在至少一个计算机屏幕上,该系统包括一个或多个应用软件,其用于发出图形命令;一个或多个图形库,其用于存储用来执行图形命令的数据;一个或多个软件集线器驱动,其用于控制硬件集线器,使得计算机操作系统和图形库相互作用,以及用于对数据流进行实时分析,从这些数据流中将生成数帧图像,用于确定每个GPU的并行模式,以及用于将数据流或其部分发送到各个GPU;一个或多个GPU驱动,其用于使得GPU与图形库相互作用;
至少一个I/O模块,其用于软件模块和硬件集线器之间的相互连接,其中硬件集线器将对于各帧的根据图形命令以及数据流或其部分在图像中的相对复杂性在GPU之间分配图形命令以及数据流或其部分,所述复杂性由所述软件集线器驱动定义;软件集线器驱动使用获取自至少一个GPU的输出合成用于显示的图形输出,同时在任何需要的时候,可对于所述各帧的并行模式进行交替。
并行是基于对象分割模式,图像分割模式,时间分割模式或者它们的任意组合。硬件集线器包含合成单元,用于从数据流的已处理的部分中合成出完整的帧。所述硬件集线器包含集线器路由器,其用于在对象分割,图像分割,时间分割或者三者的任意组合的模式下,发送多边形数据、图形命令流、像素数据以及合成结果对象分割。所述硬件集线器包含控制单元,其用于在I/O模块中接收来自软件集线器驱动的命令。所述硬件集线器还包含内存单元,其用于存储一个或多个GPU的中间处理结果和用于合成的所需数据,并传送该用于显示的已处理数据。
优选地,所述软件集线器驱动能够执行以下操作通过OS界面及其应用截取来自标准图形库的图形命令;通过OS界面及其应用发送和创建图形命令给GPU驱动;通过OS界面及其应用控制硬件集线器,注册以及安装操作;基于输入图形命令流,保持经过GPU的图形机状态的一致性,并使用状态监视;
估计在已执行的应用程序图形上下文中图形载入及超载的类型,并使用软件和图形资源分析;加载基于图形命令流和时间尺度的GPU载入平衡的估计,并使用软件和图形资源分析;根据从每个有关载入平衡的GPU接收到的反馈,调整GPU间的载入分配,并使用软件和图形资源分析;根据当前的并行模式执行图形功能中的操作;以及控制分配的图形功能,并根据当前的并行模式更改图形命令和数据流功能。
本发明为一种用于改善图像处理的并行性的方法,其使用一个或多个并行模式,其中图像通过一个或多个图形处理单元显示在至少一个计算机屏幕上。提供应用软件用于发出图形命令,提供图形库用于存储用来执行图形命令的数据。提供软件集线器驱动,其用于控制硬件集线器,使得计算机操作系统和图形库相互作用,以及对数据流进行实时分析,从这些数据流中将生成数帧图像,用于确定每个GPU的并行模式,以及用于将数据流或其部分发送到每个GPU。提供GPU驱动,其用于使得GPU与图形库相互作用,以及提供I/O模块,其用于软件模块和硬件集线器的相互连接。图形命令和数据流或其部分根据它们在图像中的相对复杂性由硬件集线器对于每一帧在GPU之间进行分配,该复杂性由软件集线器驱动进行定义。所述软件集线器也使用获取自至少一个GPU的输出合成用于显示的图形输出,同时在任何需要的时候,可对于所述每一帧改变并行模式。
当并行模式为对象分割并行模式时,将执行下述步骤
对于每一帧,生成图形操作和多边形数据流;由软件集线器驱动标记所述多边形数据和图形命令,用于在多重GPU之间进行分配;将已标记的数据发送到硬件集线器;通过集线器路由器将已标记的数据分配到多重GPU;由GPU再现数据;从帧缓冲区中取出数据并将取出的数据经过集线器路由器发送到合成单元;将帧缓冲区中的内容合成到单帧缓冲区;以及将单帧缓冲区中的内容发送到至少一个指定的GPU进行显示。
当并行模式为图像分割并行模式时,将执行下述步骤由软件集线器驱动将屏幕细分为多个部分并将不同的视口(viewport)分配给GPU;将全部多边形数据和图形命令移到集线器路由器;将全部多边形数据和图形命令转移到GPU,其中每个GPU接收到的是相同的数据;由GPU再现数据;将存储在帧缓冲区中的内容的部分发送到硬件集线器的合成单元中,用于创建完整的图像;以及将图像发送到至少一个GPU以进行显示。
当并行模式为时间分割并行模式时,将执行下述步骤将用于再现的全部数量的多边形发送到多重GPU中的每一个;由软件集线器驱动将全部的多边形数据和图形命令再次送到所有的GPU,并在它们之间进行交替;由GPU再现数据;将来自至少一个GPU的已再现数据由集线器路由器进行转移;以及将帧缓冲区中作为结果的内容由集线器路由器再次送到至少一个指定的GPU以便进行显示。
在多重GPU之间分配多边形的操作是通过在多重GPU之间分配数据块以及测试每个对于块模式的图形操作来执行的,此后,都以一种或多种并行模式来执行。数据通过规则的非块化路径转送到至少一个指定的GPU,这个过程一直重复直到检测到块操作为止。为了在每个GPU中终止再现并清除内部管线,随后GPU通过执行清洗(flush)操作来进行同步;通过执行合成操作将帧缓冲区中的内容合并到单帧缓冲区中,并将单帧缓冲区传送至所有的GPU。然后当检测到交换(swap)操作时,所合成的完整的帧就会终止于所有的GPU,除了一个或多个指定的GPU,并通过一个或多个指定的GPU显示所述图像时。只要块模式还在运行,并还未检测到交换操作,则所有GPU处理相同的数据。当块模式停止运行时,指定的数据将进一步由多重GPU进行处理。


图1为本发明实施例的多重GPU结构系统的结构图;图2为本发明实施例的硬件集线器各组成部分的结构图;图3为本发明实施例的对象分割并行模式的结构图;图4为本发明实施例的图像分割并行模式的结构图;图5为本发明实施例的时间分割并行模式的结构图;图6为本发明实施例的软件集线器与操作系统环境的一种可能的集成的示意结构图;图7为本发明实施例的表示软件集线器驱动的主要任务的功能结构图;图8为本发明实施例的表示在GPU之间分配多边形的过程的流程图;图9为本发明实施例的使用8个GPU示例系统结构图。
可以理解的是,为了图示的简单和清晰起见,图中所示的各元素并未按尺寸描绘。例如,某些元素的尺度为清晰起见可能相对别的元素要扩大一些。此外,为适当考虑,各图之间的参考数字标记可能重复,以表示相应的或类似的元素。
具体实施例方式
多重三维图形管线本发明需要对包括三维管线集线器这种创新操作组成成分的可扩展的PC图形结构进行介绍。
图1所示为本发明实施例的多重GPU结构系统100。集线器110位于PC总线上独特的位置,介于CPU(Central Processing Unit)和GPU群130之间。如图1所示的多重图形管线结构包括,应用软件121,图形库122,软件集线器123,GPU驱动124,硬件集线器110,GPU群130,以及显示器140。通常,GPU中有一个会被指定为显示器单元。需要注意的是,可能有多于一个的显示单元,或者将显示单元直接包括在硬件集线器中。显示器单元最好可以驱动多个屏幕。
集线器机制包括硬件集线器部分110,其位于PC总线上,介于作为I/O模块的I/O(输入/输出)芯片组160和GPU群130之间,以及包含软件集线器驱动123的,由PC执行操作的软件模块。
硬件集线器110承担至少下列动作在GPU之间分配已分解的多边形流和图形命令;根据不同的并行模式合成用于显示的图形输出;进行数据缓存;以及切换并行模式。
软件集线器驱动123,除了控制硬件集线器110外,还承担至少以下动作使得OS(操作系统)和诸如OpenGL和DirectX的图形库相互作用;对数据流进行实时分析;确定并行模式;以及分解数据和命令流。
本方法的一个优势在于,硬件集线器110的独特位置使其能够控制图形管线,同时对于应用软件121是透明的。连同例如OpenGL的图形库122,应用软件121如单独的GPU般运行。
本方法的另一个优势在于,硬件集线器110的独特位置使其能够控制用户接口150和显示器140之间的图形管线,同时对于GPU是透明的。群中的每个GPU如同连接在I/O芯片集160上的仅有的图形处理器一般运行。
本方法的又一个优势在于,硬件集线器110的独特位置使其能够控制在图像分割模式,时间分割模式和对象分割模式这些不同并行模式下的图形管线。
本方法进一步的优势在于,硬件集线器110的独特位置使其能够实时地检测到应用软件载入参数的变化,例如多边形计数,纹理量,与人的交互作用,以及智能地确定和执行当前最佳的并行方法。
需要注意的是,根据本发明的所有实施例,显示器140可以直接或间接地连接到硬件集线器110。
参考图2所示的本发明实施例的硬件集线器110的各个组成部分。控制单元210,经总线从软件集线器驱动接收专有的命令,并相应地控制其他单元。集线器路由器230,其从左到右发送多边形数据和图形命令流,从右发送像素数据到合成单元,以及将合成的结果发送到右边。合成单元240根据并行模式执行各种合成计划。辅助内存块220用于存储一个或多个GPU的中间处理结果和合成所需的数据,并传送已处理的用于显示的数据。
硬件集线器110根据并行模式利用其各个单元,所述并行模式为对象分割模式,图像分割模式和时间分割模式。这些模式根据应用的需要由硬件集线器110适意地进行操作。
图3所示为本发明实施例的对象分割并行模式。CPU执行三维图形应用软件310,该软件随同标准图形库一起产生图形操作和多边形数据流。它们被特定地组织在数据块中,这些数据块或者如同显示列表,顶点数组,或者如自由多边形,所述自由多边形是既没有组织在显示列表也没有在顶点数组中的多边形。步骤320中的软件集线器驱动对多边形数据和图形命令进行标记,使得总的载入能够以平衡的方式在GPU之间进行分配。已标记的数据发送到硬件集线器。在步骤330中,已标记的数据经集线器路由器分配到多重GPU中。步骤340中,在GPU中的再现处理完成之后,在步骤350中将帧缓冲区取回并经集线器路由器发送到合成单元。这里所述的帧缓冲区已被合成为一个单帧缓冲区,并被发送到指定GPU用于显示。该单帧缓冲区在步骤360中显示。
图4公开了本发明实施例的图像分割并行模式下的操作。在这个模式中,软件集线器驱动分配不同的视口给各个GPU,以便在GPU之间把屏幕划分开来。视口的方位根据载入平衡的考虑而设置,以便保持总的GPU载入平衡均匀。在步骤420中,全部多边形数据和图形命令移入硬件集线器的集线器路由器中,并在步骤430中被传送到多重GPU中。所有的GPU接收到相同的数据。在步骤440中的再现步骤之后,步骤450中,局部帧缓冲区被带入硬件集线器的合成单元用于创建完整的图像,随后该图像被移入指定GPU中用于显示。完整的图像在步骤460中显示。
图5公开了本发明实施例的图像分割并行模式下的操作。在时间分割模式中,对每帧的处理占用N个帧时单元,同时有N个GPU(或者N群GPU)参与过程。所有的多边形发送到每个GPU用以再现步骤。步骤530中,在每个帧时单元,软件集线器驱动在某一时刻将多边形数据和图形命令发送到GPU群,并在这个群间进行交替。步骤540中在GPU中再现的数据经集线器路由器转移到上述GPU群中,随后步骤550中作为结果的帧缓冲区经集线器路由器发送到指定GPU中用于显示。所有的GPU由软件集线器驱动协调以创建连续的帧序列。步骤560中,显示作为结果的帧缓冲区。
硬件集线器组成部分为其规划(scaling)技术规划基于PC的系统的现有GPU性能专用的结构和专有处理群,该规划是通过在芯片、卡或者芯片IP(知识产权)核心的层次上使用并行的多重GPU,并处理CPU和GPU之间的多重总线路径而进行的。该技术实现了性能上的线性增长。其对图形厂家没有变化,对于应用软件也是透明的。在本发明中,顶点处理,碎片处理和总线传送的图形管线瓶颈已得到完全并且巧妙的解决。由于瓶颈可能在各帧之间变换,故硬件集线器被设计具有智能实时反馈系统,其位于如图2所示的控制单元210和如图1所示的软件集线器驱动123之间,通过总线,其使用不同的并行模式以克服不同的瓶颈,并且在帧的级别上保持最大性能。
软件集线器驱动软件集线器驱动是一个软件包,其位于PC中,与计算机操作系统、标准图形库、应用软件和厂家的GPU驱动共存。图6为本发明实施例的软件集线器驱动630与操作系统环境的一种可能的集成示意结构图。图形应用软件块610旁边为标准图形库块620。软件集线器驱动630位于标准图形库620下方,其截取通往厂家的GPU驱动640的图形命令和数据流。软件集线器驱动630也控制硬件集线器660。
图7为本发明实施例的表示软件集线器驱动主要任务的功能结构图。OS界面和应用块710负责从标准图形库截取图形命令,发送并创建图形命令到厂家的GPU驱动,控制硬件集线器,注册和安装,OS服务和应用等。状态监视块720负责基于输入的图形命令流保持经过GPU的图形机状态的一致性。应用软件和图形资源分析块730负责对应用软件进行观测估计图形载入和当前应用软件图形内容上下文中的瓶颈的类型,基于图形命令流和时间度量估计载入的图形资源(GPU)的载入平衡,以及根据载入平衡处理来自GPU的反馈。并行策略管理块740是基于载入分析的。所有的并行模式,即对象分割模式,图像分割模式和时间分割模式,都被结合在一起以便获取最佳性能和最优载入处理。并行策略基于对载入的分析,其必须在电路或芯片中保持所有相关联的GPU的图形系统的状态。例如,在某些时间点加入一个新的光源从而造成的状态改变肯定会影响到不同GPU中的所有的后继多边形。并行策略管理块740负责解释图形功能中特定的处理策略。分布式图形功能控制块750负责基于并行策略修改图形命令和数据流。
对象分割分解过程对象分割是公知的概念,而虽然数据分解(在GPU之间划分数据和图形命令)也是个公知的概念,但是至今还未得到有效的应用,这是因为其遇上了各种很大的困难。而这些困难通过本发明提议的处理及其执行都可以顺利得到解决。
分解以及更重要的合成必须精确而且高效。固定的操作必须按照应用软件提交的顺序执行。例如,在半透明处理的例子中,要创建正确的图形结果就必须保持命令和多边形流的固定顺序。
要保持图形库作为状态机的基本特征以及服从图形标准,必须巧妙地分解数据和图形命令。本发明所提议的分解处理由软件集线器驱动执行。CPU运行三维图形应用软件,产生图形命令和数据流。它们都特定地被组织在例如显示列表或者顶点数组的块中,并存储在系统内存中。
本发明的软件集线器驱动在CPU中运行,其对场景多边形(或顶点)的集合进行分解。它们的物理分配由硬件集线器执行。
多边形在GPU中再现,同时保持本地内存中作为结果的帧缓冲区。所有的FB都经集线器路由器转移到硬件集线器中的合成单元,然后被合并为单FB。最后,该合成的FB被送去显示。
软件集线器驱动继续随后的将多边形在GPU之间进行分配的处理过程。假设所述图形应用软件工作的常规方式保持不变。对于每一帧,典型的应用软件产生包括图形数据块的图形调用流;每个块包括几何操作列表,如单个顶点操作或者基于缓冲区的操作(顶点数组)。特定地,分解过程保持各块为基本的数据单元而将数据在GPU之间分割开来。几何操作附加于数据块,指示数据处理的方式。块被指向指定的GPU。但是,还有属于块操作组的操作,例如清洗,交换,阿尔法融合等,这些操作将影响整个图形系统,并将系统设置为块模式。块操作比较特殊,它们需要合成的有效FB数据,因此在本发明的并行设置中,它们对所有的GPU产生影响。所以,当执行块操作的其中之一时,所有的GPU必须同步。每个帧有至少两个块操作,即清洗和交换,所述操作将令帧终止。
图8为本发明实施例的表示在GPU之间分配多边形的过程的流程图。帧的活动性从将数据块在GPU之间分配开始。步骤820中,对每个图形操作的块模式进行测试。步骤830中,在规则(非块)路径下,数据再次指向指定的GPU。这个循环一直重复直到检测到块操作为止。
步骤840中,当检测到块操作时,所有的GPU至少必须按下列次序同步为了中止再现并清除GPU中的内部管线(清洗),执行清洗操作;为了合并FB的内容到单FB,执行合成操作;以及为了创建用以继续处理的普通背景,将所述单FB中的内容转移回到所有的GPU。
交换操作交换前后颜色缓冲区,激活双倍缓冲机制。如果步骤850中检测到了交换,意味着除了GPU0,所有GPU中合成的完整的帧都要终止。所有的GPU都有FB的最终合成内容,该FB被指定存储所述内容,但是只有连接到屏幕的一个(GPU0)才显示图像,此为步骤860。
另一个例子是全局地应用到场景中的操作,并需要向所有的GPU广播。如果识别出其他块操作中的一个,例如用于透明化的阿尔法融合,则所有的GPU将如同步骤840的情形被清洗,并合并到普通的FB。这次没有检测到交换操作(步骤850),因此所有的GPU有同样的数据,并且只要块模式在运行(步骤870),所有的GPU就保持处理同样的数据(步骤880)。如果在步骤870中检测到块模式结束,则GPU恢复处理指定的数据(步骤830)。
通过结合三种分配方式对图形载入的适应性处理另外,本发明介绍了一种动态的载入平衡技术,其根据先前处理阶段中的载入表现,将对象分割方法和图像分割方法以及时间分割方法在图像和时域上合并。将所述三种并行方式合并为统一的框架,这极大地提高了本发明的效果。
并行处理是由管线执行的,如任何普通GPU都可以在时域、图像域和对象域并行处理数据,。在图形处理系统中执行的操作,不论是在多重GPU上的并行处理还是顺续处理,结果都是顺次的完整的光栅图像存储在帧缓冲区中,然后送到显示单元。这些图像被简称为帧。一帧包括许多碎片。碎片是存储在内存中的可扩展的像素,其包括如颜色,阿尔法,深度,模板等的属性。当在时域下执行并行处理时,特殊的,每个GPU都负责产生完整的帧。在其他两个域,即图像和对象域,所有GPU并行操作以产生单帧。屏幕空间并行处理意味着每个GPU再现每帧的碎片子集,而对象并行处理意味着要输入每帧的数据,特别是,几何数据(例如代表场景的多边形集)在多重GPU之间进行分配。
三个域(时间,图像和对象域)中的每一个都有优点和缺点。每种规则的效力都是基于输入数据的动态功能。此外,在许多例子中,单独的规则总不会是较优的。在这些例子中,两者的结合甚至所有三种规则的结合可能得到最优的结果。
本发明叙述了对三维数据并行处理系统的说明。本发明提供了一种新的对象并行处理,其包括在不同的GPU之间有效地分解数据,以及将在不同的GPU上产生的许多帧组合成最终的准备再现的帧。
本发明提供了一种将所有三种并行模式动态地结合为统一框架以获取最大载入平衡的方法。在每帧中,对可用GPU的设置可以重新配置,该配置基于其再现先前帧所需的时间,而瓶颈就是表现在对这些帧的处理过程中。
图9为本发明实施例的使用8个GPU的系统示例结构图。上述示例结构中假设采用稳定的图形应用软件。在时间分割并行中GPU被分为两组。标号为1、2、3和4的GPU设定为处理偶数帧,标号为5、6、7和8的GPU设定为处理奇数帧。在每组中,各有两个子组被设置为图像分割处理标号较低的GPU(分别为1、2和5、6)配置为处理一半的屏幕,而高标号的GPU(分别为3、4和7、8)则设定为处理另外一半屏幕。最后,对于对象分割处理,对标号为1、3、5和7的GPU供应一半的对象,而对标号为2、4、6和8的GPU供应另一半的对象。
如果在某些时刻,系统检测到在先前的各帧的瓶颈在管道的光栅阶段发生,这意味着在再现帧的时间上,对碎片的处理占据了支配地位,并且配置失去了平衡。这时GPU被重新配置,以便每个GPU在各自的帧中再现四分之一的屏幕。原有的在GPU1、2、3、4和GPU5、6、7、8之间的用于时间分割处理的部分依然保留,但是GPU2和GPU5分别设定为在偶数帧和奇数帧中再现首个四分之一的屏幕。GPU1和GPU6-第二个四分之一,GPU4和GPU7-第三个四分之一,以及GPU3和GPU8-第四个四分之一。不包括对象分割处理。
此外,如果在某些时候系统检测到在先前的各帧的瓶颈在管道的几何阶段发生,则GPU被重新配置,以便每个GPU在各自的帧中处理四分之一的几何数据。即,GPU3和GPU5分别设定为在偶数帧和奇数帧中处理多边形的首个四分之一。GPU1和GPU7-第二个四分之一,GPU4和GPU6-第三个四分之一,GPU2和GPU8-第四个四分之一。不包括图像分割处理。
需要注意的是,使用8个GPU足以组合所有的三种并行模式,即各帧的时间分割,图像分割和对象分割模式。采用大于8个的GPU也可以组合所有的3种模式,但是结构就不对称了。时间分割循环中的帧的数量也有很大的灵活性。在上述例子中,8个GPU的群被分解为两个组,每个组处理一个帧。但是,在时间分割模式中的序列中增大帧的数目也是可行的,即大于2帧,例如3或4帧。
采用更少数目的GPU仍然可以实现对并行模式的结合,但是就只能结合两种模式。例如,仅采用4个GPU可以结合图像分割和对象分割模式,没有了时间分割模式。从图9可以清楚地理解到,当采用左边的群GPU1、GPU2、GPU3和GPU4时,或类似地,采用上边的群GPU1、GPU2、GPU5和GPU6时,可使用对象分割和时间分割模式。最后,采用中间的群GPU2、GPU4、GPU5和6这一组的结构可使用图像分割和时间分割模式。
需要注意的是,类似于上述实施例,各并行模式间任何的组合可预定为对图形载入均匀地平衡。
需要注意的另一点是,为了每帧的处理性能最优化,本发明的所有GPU之间的并行处理可以基于对象分割模式或者图像分割模式或者时间分割模式或者它们的任何组合。
虽然本发明的一些实施例已通过图示的方式得到描述,但显然,在不背离本发明的精神或者在不超出权利要求书所限定的范围的前提下,对于本领域的技术人员来说,本发明在实际应用中可以进行许多修改,变化和改装,以及可使用许多等同的或者他择性的技术方案。
权利要求
1.一种用于改善图像处理的并行性的系统,其使用一个或多个并行模式,其中所述图像通过一个或多个图形处理单元(GPU)显示在至少一个计算机屏幕上,该系统包括a.一个或多个应用软件,其用于发出图形命令;b.一个或多个图形库,其用于存储用来执行图形命令的数据;c.一个或多个软件集线器驱动,其用于控制硬件集线器,使得计算机操作系统和图形库相互作用,以及用于对将生成图像帧的数据流进行实时分析,用于确定各个GPU的并行模式,以及用于将数据流或其部分转送到各个GPU;d.一个或多个GPU驱动,其用于使得GPU与图形库相互作用;及e.至少一个I/O模块,其用于软件模块和硬件集线器之间的相互连接,其中,所述硬件集线器将对于各帧的根据图形命令以及数据流或其部分在图像中的相对复杂性在GPU之间分配图形命令以及数据流或其部分,所述复杂性由所述软件集线器驱动定义;以及使用获取自至少一个GPU的输出合成用于显示的图形输出,同时在任何需要的时候,可对于所述各帧的并行模式进行交替。
2.如权利要求1所述的系统,其中所述并行性基于对象分割模式、图像分割模式、时间分割模式或者它们的任意组合。
3.如权利要求1所述的系统,其中所述硬件集线器包含至少一个合成单元,其至少用于从数据流的已处理的部分合成出完整的帧。
4.如权利要求2所述的系统,其中所述硬件集线器包含至少一个集线器路由器,其用于在对象分割、图像分割、时间分割或者它们的任意组合的模式中运行的同时,发送多边形数据、图形命令流、像素数据以及合成结果。
5.如权利要求1所述的系统,其中所述硬件集线器包含至少一个控制单元,其用于在I/O模块中接收来自软件集线器驱动的命令。
6.如权利要求1所述的系统,其中所述硬件集线器包含内存单元,其用于存储一个或多个GPU的中间处理结果和用于合成所需的数据,并传送该已处理数据以便进行显示。
7.如权利要求1所述的系统,其中所述软件集线器驱动能够执行以下操作a.通过OS界面及其应用截取来自标准图形库的图形命令;b.通过OS界面及其应用转送和创建图形命令给GPU驱动;c.通过OS界面及其应用控制硬件集线器、注册以及安装操作;d.基于输入图形命令流,保持经过GPU的图形机状态的一致性,同时使用状态监视;e.使用应用和图形资源分析,估计在执行的应用程序图形背景中图形载入及超载的类型;f.基于图形命令流和时间尺度的GPU载入平衡的载入估计,同时使用应用和图形资源分析;g.根据从各个GPU接收到的有关载入平衡的反馈,调整GPU间的载入分配,同时使用应用和图形资源分析;h.根据当前的并行模式执行图形功能中的操作;以及i.控制分配的图形功能,并根据当前的并行模式更改图形命令和数据流。
8.一种用于改善图像处理的并行性的方法,其使用一个或多个并行模式,其中图像通过一个或多个图形处理单元显示在至少一个计算机屏幕上,该方法至少包括a.提供一个或多个应用软件,用于发出图形命令;b.提供一个或多个图形库,用于存储用来执行所述图形命令的数据;c.提供一个或多个软件集线器驱动,用于控制硬件集线器,用于使得所述计算机操作系统和所述图形库相互作用,以及用于对将生成所述图像帧的数据流进行实时分析,用于确定各个GPU的并行模式,以及用于将所述数据流或其部分转送到各个GPU;d.提供一个或多个GPU驱动,用于使得所述GPU与所述图形库相互作用;e.提供至少一个I/O模块,用于所述软件模块和所述硬件集线器之间的相互连接;f.对于各帧,根据图形命令和所述数据流或其部分在所述图像中相对的复杂性通过所述硬件集线器在所述GPU之间分配图形命令和所述数据流或其部分,该复杂性由所述软件集线器驱动进行定义;并使用获取自至少一个GPU的输出合成用于显示的图形输出,同时在任何需要的时候,可对于所述各帧交替所述并行模式。
9.如权利要求8所述的方法,其中并行模式为对象分割并行模式,并执行下述步骤a.对于各帧,生成图形操作和多边形数据流;b.由软件集线器驱动标记所述多边形数据和图形命令,用于在多个GPU之间进行分配;c.将已标记的数据发送到硬件集线器;d.通过集线器路由器将所述已标记的数据分配到所述多个GPU;e.由GPU再现数据;f.从所述帧缓冲区中取出数据并将取出的数据经过集线器路由器转送到合成单元;g.将所述帧缓冲区中的内容合成到单帧缓冲区;以及h.将所述单帧缓冲区中的内容转送到至少一个指定的GPU用于显示。
10.如权利要求8所述的方法,其中并行模式为图像分割并行模式,并执行下述步骤a.由所述软件集线器驱动将屏幕细分为多个部分并将不同的视口分配给GPU;b.将全部多边形数据和图形命令移到所述集线器路由器;c.将所述全部多边形数据和图形命令发送到GPU,其中各个GPU接收相同的数据;d.由GPU再现数据;e.将存储在所述帧缓冲区中的内容的部分转送到硬件集线器的合成单元中,用于创建完整的图像;以及f.将图像转送到至少一个指定的GPU用于显示。
11.如权利要求8所述的方法,其中并行模式为时间分割并行模式时,并执行下述步骤a.将用于再现的全部多边形发送到多个GPU中的每一个;b.由软件集线器驱动将全部多边形数据和图形命令再次送到所有的GPU,并在它们之间进行交替;c.通过GPU再现数据;d.经集线器路由器将来自至少一个GPU的再现数据进行转移;以及e.将帧缓冲区中作为结果的内容经集线器路由器再次送到至少一个指定的GPU用于显示。
12.如权利要求8所述的方法,其中在多个GPU之间进行多边形的分配是通过a.在多个GPU之间分配数据块;b.对于块模式测试各个图形操作,其中一种或多种并行模式被完成;c.将所述规则的非块化路径中的数据转送到至少一个指定的GPU;d.重复步骤(b)和(c)直到检测到块操作;e.通过下列次序对GPU进行同步e.1.为了在各个GPU中终止再现并清除内部管线,执行清洗操作;e.2.执行合成操作以将帧缓冲区中的内容合并到单帧缓冲区中;e.3.将单帧缓冲区传送至所有的GPU;f.在检测到交换操作的任何时候,在所有的GPU终止所合成的完整的帧,除了一个或多个指定的GPU,并通过所述一个或多个指定的GPU显示所述图像;g.只要块模式还在运行且未检测到交换操作,则通过所有GPU处理相同的数据;h.在块模式停止运行的任何时候,通过多个GPU继续进行指定的数据的处理。
13.如权利要求8所述的方法,其中所述并行性基于对象分割、图像分割、时间分割模式或者它们的任意组合。
全文摘要
一种用于改善图像处理并行性的方法和系统,其使用一个或多个并行模式,其中图像通过一个或多个图形处理单元(GPUs)(130)显示在至少一个计算机屏幕上。提供应用软件(120)用于发出图形命令,提供图形库(122)用于存储用来执行图形命令的数据。提供软件集线器驱动(123)用于控制硬件集线器(110),用于对将生成图像帧的数据流进行实时分析,用于确定各个GPU的并行模式,以及用于将数据流或其部分转送到各个GPU,提供GPU驱动(124)用于使得GPU与图形库相互作用,并提供I/O模块(160)用于软件模块和硬件集线器之间的相互连接。
文档编号G06T15/00GK1890660SQ200480034307
公开日2007年1月3日 申请日期2004年11月19日 优先权日2003年11月19日
发明者鲁文·巴卡拉西, 奥菲尔·列梅兹, 吉格·巴奥, 埃菲·福格尔, 阿米尔·沙哈姆 申请人:路西德信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1