使用图形处理单元的直方图计算的系统和方法_3

文档序号:9291697阅读:来源:国知局
纹素数据值的值而被转换为新的坐标系统。
[0058] 直方图管理器145进一步经配置以将坐标从第一顶点着色器365传送到第一像素 着色器370。直方图管理器145进一步经配置以执行第一像素着色器370,其针对第一顶点 着色器365指示第一像素着色器370操作的位置坐标的每个纹素位置使柱条缓存纹理缓冲 区375的纹素值递增1。为了使这些递增操作维持跨第一像素着色器370的并行操作的状 态,直方图管理器145经配置以在第一像素着色器370中将光栅操作模式设定为"累加"。
[0059] 通过第一像素着色器370被写入的柱条缓存纹理缓冲区375可被配置为无柱条宽 度和一行,而是具有直方图的所要求柱条大小的宽度和高度。通过利用大NxN中介纹理,针 对具有大型众数的极端情况,将通过柱条缓存纹理缓冲区375的同时写入操作减少多达数 据集大小/柱条大小的倍数。例如,这样一种数据集的最差情况是数据集具有所有相同值, 例如零。在这种情况下,如果目的纹理大小为Nxl,那么写入请求的数据集大小数将针对相 同的纹素位置堆叠在彼此背后,即,目的纹理中的柱条位置(〇,〇),从而大大增加缓存故障 率且最可能导致流水线停滞。
[0060] 在由第一像素着色器370执行的操作之后,柱条缓存纹理缓冲区375实质上包括 每列的直方图。为了在目的柱条缓存纹理缓冲区380中获得最终直方图,直方图管理器145 创建第二顶点缓冲区345 (再次为点列表),其中每个坐标对应于柱条缓存纹理缓冲区375 的纹素位置。分别与第一顶点着色器365和第一像素着色器330大体相同的第二顶点着色 器355和第二像素着色器360分别执行相同的分散-约简-递增操作,此时到具有高度1 和等于柱条大小的宽度的目的柱条纹理缓冲区380。本领域技术人员应了解,第一分散-约 简-递增操作可以行主导格式而非列主导方式执行,且第二分散-约简-递增操作可以列 主导格式而非行主导方式执行。
[0061] 图4A到4B是说明用于使用分散-约简-递增操作计算直方图的方法400的实例 的流程图。方法400可通过图1的计算机系统100执行且可包括硬件(例如,电路、专用逻 辑、可编程逻辑、微码等)、软件(例如,在处理装置上运行的指令)或其组合。在一个实例 中,方法400由图1的计算系统100的直方图管理器145执行。
[0062] 如图4A到4B中所示,为了允许计算系统100在框410中计算直方图,直方图管理 器145接收GPU上现存的数据集作为2D或3D纹理缓冲区或从主机系统120上传到GPU140 的2D或3D纹理缓冲区,其用于创建第一顶点缓冲区360。第一顶点缓冲区360包括点列表 且其每个点对应于数据集中每个数据的纹素位置。在框420中,直方图管理器145将数据 从第一顶点缓冲区360和数据集纹理缓冲区350传送到第一顶点着色器365。在框430中, 直方图管理器145执行第一顶点着色器365以从数据集纹理缓冲区350读取值并且将列位 置输出到具有等于最终所要直方图柱条大小的宽度和高度的柱条缓存纹理缓冲区375。第 一顶点着色器365通过用列位置写入到柱条缓存纹理缓冲区375中的纹素位置而将第一顶 点缓冲区360中的纹素的位置坐标进一步转换为新的坐标系统,使得位于第一顶点缓冲区 360中的纹素的位置坐标的垂直坐标根据位于数据集纹理缓冲区350中的相关联纹素纹理 的值而被转换为新的坐标系统。在框440中,直方图管理器145执行第一像素着色器370 以经由加性光栅操作使柱条缓存纹理缓冲区375中的列纹素位置中的值递增1。第一像素 着色器370将针对顶点着色器位置坐标指示其操作的每个纹素位置使柱条缓存纹理缓冲 区375的纹素值递增1。
[0063] 在框450中,直方图管理器145从柱条缓存纹理缓冲区375读取数据来创建第二 顶点缓冲区345,其中第二顶点缓冲区345包括点列表且其每个点对应于柱条缓存纹理缓 冲区375中的每个数据的纹素位置。在框460中,直方图管理器145将数据从第二顶点缓 冲区345和柱条缓存纹理缓冲区375馈送到第二顶点着色器355。在框470中,直方图管理 器145执行第二顶点着色器355以从柱条缓存纹理缓冲区375读取值并且输出具有高度1 和等于最终所要直方图柱条大小的宽度的最终直方图纹理的柱条纹素位置。在框480中, 直方图管理器145执行第二像素着色器360以经由加性光栅操作使目的柱条缓存纹理缓冲 区380中的值递增1以获得最终直方图。第一像素着色器370将针对第一像素着色器370 指示第一顶点着色器365操作的位置坐标的每个纹素位置使柱条缓存纹理缓冲区375的纹 素值递增1。
[0064] 图5说明数据从2D数据集纹理350行经分散-约简-递增操作的两个步骤的空 间布局500。2D数据集纹理缓冲区350从例如2048x1024数据集约简为柱条缓存纹理缓冲 区375中的中间256x256数据集,约简为目的柱条缓存纹理缓冲区380中的最终256x1直方 图。图5说明列主导形式的实施例。应了解,在另一个实施例中,第一顶点着色器365可经 配置以通过用列位置而非行位置写入到第一顶点缓冲区360中的纹素位置而将第一顶点 缓冲区360中的纹素的位置坐标转换为新的坐标系统。还将了解,对于3D纹理,操作顺序 是类似的,只是第一操作可以xy平面主导方式(其中xy、zy或xz平面主导的选择再次是 任意的)执行,第二操作可以行或列主导方式执行,且第三操作得到数据集的最终直方图。
[0065] 图6是对应于如在Scheuermann和Hensley中执行的直方图计算的实例的过程和 数据流的框图。在Scheuermann和Hensley中,存在单个分散-约简-递增操作。如上所 述,与通过增大柱条大小缓解的相比,存在大量的性能可变性。通过区分,缓解如实施例中 描述的缓存-写入冲突问题的更高效和优化方式是增大第一柱条的维度及继续约简维度 直到D = 1。这为GPU赋予在不损及运行时间的情况下优化存储器缓存效率的优点。此外, 本发明的特定实施例为GPU赋予一致且可预测的非数据相依性能和运行时间,其对于必须 实时或在严格的处理量限制下运行的系统是关键的。
[0066] 图7A到7C是对应于如在第7, 889, 922号美国专利(下文称作' 922专利)中执行 的直方图计算的实例的过程和数据流的框图。虽然能够在无读取纹理存储器的能力的情况 下通过依赖顶点着色器而在更早期GPU硬件上运行,但是' 922专利中教示的实例迫使不受 限制的迭代约简技术。作为比较,在本发明的特定实施例中,对于D维数据集纹理缓冲区, 最多需要D个分散-约简-递增步骤一一从实践来看针对差不多最大数据集,D = 2;而基 于图7A到7C中所示的实例,在数据集大小是2的幂数的情况下,所需约简步骤数通过方程 式1给出。
[0067]
[0068] 应注意,由于数据集的大小针对图7A到7C的实例增大,所以初始数据块大小也增 大且约简操作数也增大。因此,图7A到7C的实例的性能尤其对大数据集是次优的。
[0069]图8是适于使用分散-约简-替换操作计算数据集的最小值的图1的示例性计算 系统100的框图。图8的元件类似于图1的元件,只是第一像素着色器870和第二像素着 色器860适于将值分别放置在相应的柱条缓存纹理缓冲区875和目的柱条缓存纹理缓冲区 880中,而非如在直方图计算中递增1及采用"最小值"光栅操作而非"累加"光栅操作。柱 条缓存纹理缓冲区875不再是柱条大小的宽度和高度,而是原始数据集的宽度和高度1。此 外,目的柱条缓存纹理缓冲区880适于含有具有等于1的宽度和高度的单个最小值。
[0070]图9A到9B是说明用于使用分散-约简-替换操作计算数据集的最小值的方法900 的实例的流程图。方法900可通过图1的计算机系统100执行且可包括硬件(例如,电路、 专用逻辑、可编程逻辑、微码等)、软件(例如,在处理装置上运行的指令)或其组合。在一 个实例中,方法900由图1的计算系统100的直方图管理器145执行。
[0071] 如图9A到9B中所示,为了允许计算系统100在框910中计算数据集的最小值,直 方图管理器145接收GPU 140上现存的数据集作为2D或3D纹理缓冲区或从主机系统120 上传到GPU 140的2D或3D纹理缓冲区,其用于创建第一顶点缓冲区860。第一顶点缓冲 区860包括点列表且其每个点对应于数据集中每个数据的纹素位置。在框920中,直方图 管理器145将数据从第一顶点缓冲区860和数据集纹理缓冲区850传送到第一顶点着色器 865。在框930中,直方图管理器145执行第一顶点着色器865以从数据集纹理缓冲区850 读取值并且将列位置输出到具有等于数据集纹理缓冲区850的宽度的宽度和等于1的高度 的求和缓存纹理缓冲区885。第一顶点着色器865通过用列位置写入到求和缓存纹理缓冲 区885中的纹素位置而将第一顶点缓冲区860中的纹素的位置坐标进一步转换为新的坐标 系统,使得位于求和缓存纹理缓冲区885中的纹素的位置坐标的垂直坐标根据位于数据集 纹理缓冲区850中的相关联纹素纹理的值而被转换为新的坐标系统。在框940中,直方图 管理器145执行第一像素着色器870以从数据集纹理缓冲区850读取值并且经由最小值光 栅操作替换求和缓存纹理缓冲区885中的列纹素位置中的这些值。
[0072] 在框950中,直方图管理器145利用求和缓存纹理缓冲区885来创建第二顶点缓 冲区845,其中第二顶点缓冲区845包括点列表且其每个点对应于求和缓存纹理缓冲区885 中每个数据的纹素位置。在框960中,直方图管理器145将数据从第二顶点缓冲区845和 求和缓存纹理缓冲区885馈送到第二顶点着色器855。在框970中,直方图管理器145执 行第二顶点着色器855以供应具有高度1和宽度1的最终求和纹理缓冲区890的单个纹素 位置。在框980中,直方图管理器145执行第二像素着色器860以从求和缓存纹理缓冲区 885读取值并且经由最小值光栅操作替换最终求和纹理缓冲区890中的最终单个纹素位置 的值以计算数据集的最小值。
[0073]图10是适于使用分散-约简-替换操作计算数据集的最大值的图1的示例性计 算系统100的框图。图10的元件类似于图1的元件,只是第一像素着色器1070和第二像 素着色器1060适于将值分别放置在相应的柱条缓存纹理缓冲区1075和目的柱条缓存纹理 缓冲区1080,而非如在直方图计算中递增1及采用"最大值"光栅操作而非"累加"光栅操 作。柱条缓存纹理缓冲区1075不再是柱条大小的宽度和高度,而是原始数据集的宽度和高 度1。此外,目的柱条缓存纹理缓冲区1
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1