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

用于优化流处理程序的方法、装置和系统制造方法及图纸

技术编号:2952544 阅读:125 留言:0更新日期:2012-04-11 18:40
一系统基于在流处理程序之间交换的数据来优化两个或两个以上流处理程序。所述系统交替地处理每一流处理程序以识别并去除失效程序代码,藉此改进执行性能。通过传播作为来自其它流处理程序的输入而接收到的常数且通过分析一第一流处理程序并确定一第二流处理程序的未被所述第一流处理程序使用的输出来识别失效程序代码。所述系统可执行此优化的多次重复,因为先前的重复引入了用作一流处理程序的输入的附加常数。在所述流处理程序的优化之后,将所述经优化的流处理程序编译为一适于由一流处理系统执行的格式。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及计算机图形学领域。
技术介绍
许多计算机图形图像是通过从给定视点用三维场景对光的相互作用进行数学建模来创建的。此过程(称为渲染)从给定视点来看产生场景的二维图像,且类似于拍摄真实世界场景的照片。随着对于计算机图形且尤其是对于实时计算机图形的需求增加,具有适于加速渲染过程的图形处理子系统的计算机系统已变得普及。在这些计算机系统中,渲染过程在计算机的通用中央处理单元(CPU)与图形处理子系统之间被划分。通常CPU执行高级运算,例如确定给定场景中物体的位置、运动和碰撞。通过这些高级运算,CPU产生界定期望的经渲染图像(一个或多个)的一组渲染命令和数据。举例来说,渲染命令和数据可为场景界定场景几何形状、照明、着色、纹理化、运动和/或摄影参数。图形处理子系统通过所述组渲染命令和数据创建一个或一个以上经渲染图像。许多图形处理子系统为高度可编程的,从而能够实施(尤其是)复杂的照明和着色算法。为了开发此可编程性,应用程序可包括一个或一个以上图形处理子系统程序,其由图形处理子系统执行且与由CPU执行的主程序并行执行。尽管不限于仅实施着色和照明算法,但这些图形处理子系统程序通常被称为着色程序或着色器。图形处理子系统通常使用流处理模型,其中通过流处理单元的链来连续读取和操作输入元素。一个流处理单元的输出是对链中下一流处理单元的输入。通常,数据仅穿过流处理单元的链单向地向“下游”流动。流处理单元的实例包括处理二维或三维顶点的顶点处理器、将由若干组二维或三维顶点界定的几何图元处理成若干组像素或子像素(称为片段)的光栅化器处理器,和处理片段的片段处理器。链中可包括附加类型的流处理单元。举例来说,镶嵌处理器(tessellation processor)可接收高阶表面的描述并产生若干组由顶点界定并近似于或对应于所述高阶表面的几何图元。链中流处理单元中的一些或全部可为可编程的,其中每一可编程流处理单元具有其自己的单独的着色程序,所述着色程序与在其它流处理单元上执行的着色程序并行地操作。复杂算法的实施方案通常取决于为每一流处理单元定制的单独着色程序,所述单独着色程序一起工作以实现期望的结果。在这些实施方案中,链中初始流处理单元的着色程序的输出可与链中后续流处理单元的着色程序的输入相连系。可用多种低级和高级编程语言编写着色程序,所述编程语言包括低级汇编语言、Cg语言、OpenGL着色语言(OpenGL Shading Language),和DirectX高级着色语言。需要优化着色程序以改进渲染性能并允许应用程序完全开发图形处理子系统的能力。当用于不同流处理单元的着色程序链接在一起(在某些图形API术语中可称为连系)时,可能存在基于两个或两个以上着色程序的组合进行优化(称为着色器间的优化)的机会。举例来说,第一着色程序可输出一值,所述值未被图形处理流中的第二链接着色程序用作输入。在此实例中,第一着色程序的用于计算未使用的输出的部分可被安全地省略,藉此减少第一着色程序的执行时间。在另一实例中,如果第一着色程序的输出为常数,那么可将所述常数的值传播到一链接到第一着色程序的第二着色程序的输入,从而减少第一着色程序的执行时间并潜在地允许第二着色程序内的附加优化。另外,应用程序开发人员期望针对每一流处理单元编写较大的通用着色程序。每一通用着色程序允许应用程序从在需要时将由流处理单元执行的集合中选择一个或一个以上运算。应用程序可通过从每一流处理单元的着色程序中选择适当运算来在若干流处理单元上实施特定算法。使用具有针对每一流处理单元的可选择运算的较大通用着色程序,而不是使用每一者均实施单个操作的许多不同的较小着色程序,大大简化了应用程序开发。不幸的是,即使当将要仅执行着色程序的一小部分时,执行较大通用着色程序也会由于许多因素而较缓慢,所述因素包括将较大着色程序转移到图形处理子系统所需的时间和带宽。优化着色程序的链接也可将这种较大程序简化到其适配在未经优化时原始程序可能不满足的硬件资源限制内的程度。现有的自动优化技术仅孤立地考虑每一着色程序。针对硬件着色编译器的现有优化技术不会分析被分配到不同流处理单元的链接的着色程序之间的关系以确定着色器间的优化。另外,这些现有优化不考虑流处理单元的链中的单向数据流,且因此错过许多其它的潜在优化。因此需要基于链接的着色程序之间的关系来优化链接在一起的两个或两个以上着色程序。进一步需要优化较大通用着色程序,以使其有效地执行且不会不必要地将大量数据转移到图形处理子系统。还进一步需要能够在运行时间执行着色器间的优化,从而允许应用程序动态地选择着色程序的组合而不会降低性能。
技术实现思路
本专利技术的一实施例是一种用于基于在流处理程序之间交换的数据来优化两个或两个以上流处理程序的系统。所述系统交替地处理每一流处理程序以识别并去除失效程序代码,藉此改进执行性能。通过传播作为来自其它流处理程序的输入而接收到的常数且通过分析第一流处理程序并确定第二流处理程序的未被所述第一流处理程序使用的输出来识别失效程序代码。所述系统可执行此优化的多次重复,因为先前的重复引入了用作对流处理程序的输入的附加常数。在流处理程序的优化之后,将经优化的流处理程序编译为适于由流处理系统执行的格式。本专利技术的一实施例是一种优化适于由流处理系统执行的流处理程序的方法。所述流处理系统包括第一和第二可编程流处理单元。所述第二流处理单元与所述第一流处理单元连接,使得第一流处理单元的输出适于作为第二流处理单元的输入。所述方法包括接收适于由第一流处理单元执行的第一流处理程序。所述第一流处理程序包括输出参数。所述方法还接收适于由第二流处理单元执行的第二流处理程序。所述第二流处理程序包括对应于第一流处理程序的输出参数的输入参数。基于第二流处理程序的输入参数与第一流处理程序的输出参数之间的对应来优化第一和第二流处理程序。在一实施例中,优化第一和第二流处理程序包括从第一流处理程序中消除适于计算未被第二流处理程序使用的附加输出参数的失效程序代码。在另一实施例中,优化第一和第二流处理程序包括响应于第一流处理程序的输出参数是常数的确定来传播用于第二流处理程序的输入参数的常数值,和从第二流处理程序中消除由于传播常数值而被致使为冗余的失效程序代码。在又一实施例中,优化第一和第二流处理程序包括响应于第一流处理程序的输出参数是统一值的确定来传播用于第二流处理程序的输入参数的统一值,和从第二流处理程序中消除由于传播统一值而被致使为冗余的失效程序代码。统一值是着色语言中的专门术语,其指的是虽然在处理图形图元流期间不允许变化但可在批量的所述串流数据之间改变值的常数。在很大程度上,可将统一值视为如同用于优化目的的常数值,例如常数合并(在编译时将具有常数项的表达式缩减为较简单的常数表达式)。然而,如果编译器基于知道统一值的值来作出优化决定(例如决定批量的结果),那么在新的统一值将改变较早的优化决定时有必要进行再优化。流处理系统的一实施例驻存在图形处理子系统内。在此实施例中,可编程流处理单元可为可编程顶点处理器、可编程镶嵌处理器,或可编程片段处理器。附图说明将参看附图描述本专利技术,附图中图1是适于实践本专利技术实施例的计算机系统的方框图;图2说明适于实施本专利技术实施例的图形处理子系统的流处理单元本文档来自技高网
...

【技术保护点】
一种用于优化适于由一流处理系统执行的流处理程序的方法,其中所述流处理系统包括一第一和一第二可编程流处理单元,其中所述第二流处理单元与所述第一流处理单元连接,使得所述第一流处理单元的输出适于作为所述第二流处理单元的输入,所述方法包含: 接收一适于由一第一流处理单元执行的第一流处理程序,其中所述第一流处理程序包括一输出参数;接收一适于由一第二流处理单元执行的第二流处理程序,其中所述第二流处理程序包括一对应于所述第一流处理程序的所述输出参数的输入参数;和基于所 述第二流处理程序的所述输入参数与所述第一流处理程序的所述输出参数之间的对应来优化所述第一和第二流处理程序。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:马克J基尔加德克里斯托弗T多德列夫莱巴雷迪安
申请(专利权)人:辉达公司
类型:发明
国别省市:US[美国]

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

1
相关领域技术
  • 暂无相关专利