GPUs
This is a space about GPU

导航

 

最新读了Sung-Eui Yoon的文章

阅读中将其它相关部分译了出来
摘要:当前的计算机系统架构使用了缓存来提高广大应用程序的性能。缓存结构的一个主要特点是当对(一个没有缓存的)对象进行读取时使用块读取技术。为了最大化的利用好块读取机制的效率,本文作者对表面网格以及体网格模型提出了新的缓存已知(cache-aware)和缓存未知(Cache-oblivious)的布局,它们提升了交互可视化的性能以及几何处理算法。基于一般的I/O模型,作者提出了一种新的缓存已知(Cache-aware)和缓存未知(Cache-oblivious)标准。他们进行网格数据的访问时缓存失中的数量有很大的相关性。此外,对于指导布局的处理时,本文提出的方法可以用来对一个布局的质量进行定量的标定,如对于同一个格网模型的不同布局方法比较,以及对一个给定的布局是否可以有明显的性能提高的评定。我们的结果表明,在对一些可视化应用进行性能分析时如等值面提取或视点相关渲染,用本文提出的标准进行优化的无结构化网格比传统的布局方法有较高的性能提升。此外,我们改善了缓存未知(cache-oblivious)网格布局的性能以及应用性和精确性。

1.介绍

很多几何算法使用了CPUGPU的计算能力来进行交互可视化和其它任务。但这几十年来的一个趋势是处理器速度与内存访问速度之间的差距在增大。因此,系统架构持续通过增加高速缓存以及内存层次来避免存储访问的延迟。然而目前的情况下,在不同的存储层次中的访问速度相关几个数据量级。在一些情况下,程序的运行时间是它的缓存访问模式的函数以及它的操作数。

内存层次结构的一个重要的特征是每当出现一个缓存失中时使用块读取技术。块读取架构假设数据访问的空间具有很高的相关性,可以保证重复的缓存击中发生。因此,要最大化的使用块读取的好处,组织与访问数据以一个缓存一致性的方法就显得十分的重要了。一般说来,有两种方法来最小化缓存数据失中数量:计算重组(computation reordering和数据布局优化(data layout optimization。计算重组偏向于提高数据访问的局部性,如使用编译器优化或应用特定的手调谐(hand-tuning。另一方面,数据布局优化将内存中的数据进行了重排序,以致它的布局可以匹配期望的访问模式。在本文中,我们集中讨论计算缓存一致性的多边形及多边形格式的数据布局,它们的顶点以单元格网(三角形和四面体)是以一个线性的方式进行元素组织。

很多布局和表达(三角形条带,空间填充曲线,流和cache-oblivious布局)都已经出现用于缓存相关的访问。然而,先前的方法要么是对特定的缓存和应用程序进行了特殊处理,包括图的稀疏矩阵的计算,要么构建不带有所需要构建优化的全局布局质量,布局间相关的排列或驱动一般优化策略的标准。此外,先前的标准可能更适应内存应用的本身,但对以块进行缓存的上下文并不是好的布局质量的估计。

主要结果

我们提出了新的标准和方法来估计和优化网格布局的局部性。基于一般的I/O模型,我们获得了缓存已经知和缓存未知公制标准,他们能较好的与以一理想相关方式访问网格模型时缓存中失中数量相关。使用这些标准,我们采取了一个多层的迭代优化方法来有效的计算数以亿计顶点的巨大网格模型的缓存相关的布局。我们也同时观察到迭代的构建布局,在不考虑其它排序标准时,根据我们的标准,一般可以得到好的局部性。

优点:

我们的方法提供当前最为优秀的特点:

一般性:本算法适应任何一种数据集,它所期望的访问特征可以用图结构进行表达。

简单性:我们的标准是简明的,并且容易进行布设。

精确性:我们所获得的标准与运行时缓存的失中数目关联得很好。因此,本方法可以很好的构建布局。

有效性:我们的方法可以快速的对一个给定的布局进行质量定量描述。如果根据这个标准,当一个布局已经相关是时,则不需要进行额外的重组工作,可以节省时间来进行大数据量的处理。

高性能:采用本方法进行的优化布局计算显示出比其它的布局更高的性能。

本文中对两种应用采用了本文提出的缓存相关的布局:从正四面体网格模型中进行等值面提取和视点相关的多边形渲染。为了表明我们的方法的一般性,我们计算了多种几何模型的布局包括CAD环境,扫描模型,等值面以及四面体网格模型。我们直接使用这些布局而没有改变运行应用程序。我们的布局减少了缓存的失中数量,并提升了整体的性能。

相关的工作

缓存有效性算法在过去二十年中引起了理论计算机科学和编译器研究方面广泛的研究。这些算法包括模型的缓存行为,基于片的编译器优化(compiler Literature,条带使用(strip-mining,循环交换(loop interchanging:所有的这些算法展示了减少缓存的失中率。缓存相关的算法可以被分类为计算重组(Computation Reordering以及数据布局的优化。

2.1 计算重组

计算重组是为了获得一个运行时缓存相关的顺序以提高程序的局部性和减少失中的数量。这种方法典型的是应用编译器优化或应用特定的手调谐(hand tuning)。

从高的层面看,计算重组方法可以分成,缓存已知(Cache-aware)和缓存未知(Cache-oblivious)两类。缓存已知的方法使用缓存参数的知识,如缓存块的大小。另一方面,缓存未知算法并不要知道任何缓存的参数。在开发用于特定问题和应用的程序时,缓存有效计算重排序的算法中有一系列的成果,包括数值程序,排序,几何计算,矩阵乘法,FFT以及图的算法。最近给出一个综述。在可视化与计算机图形学领域,基于外核的算法(out-of-core)是设计用来处理大数据量模型运行在有限内存中的方法,典型的来说,是通过限制访问到一个小的,处于高速缓存中的模型的子块实现的。最近也有一个综述可以参考。

2.2 数据布局优化

数据元素存储的顺序会明显的影响到运行时的性能。因此,学术界进行了相当的工作用于计算数据的缓存相关的布局以达到预期访问的特征。下面是一些方法:

图和矩阵布局:

图和矩阵布局的问题属于组合优化问题一类,他们的主要目标是找到一个图或矩阵的线性布局来最小化一个特定的目标函数。比较有名的最小化问题包括线性排列(边长的和,如相邻顶点的索引差),带宽(最大边长),轮廓(profile,每顶点边长的最大和),波面(最大面大小)。这一方面的工作进行了广泛的研究并由Diaz给了一个A Survey of Graph Layout Problems的综述。然而,要潜在的提高数据相关性,对基于块的缓存来说,现有的这些数据的布局是不优化的,或者说需要更好的,下面将看到。

渲染顺序:

当代的GPU维持了一个小的缓冲区用来重用最近访问过的顶点。为了最大化的利用好顶点缓存用于快速渲染的优点,对三角形进行重排序是必要的。这个工作由Deering引领着。对三角形排序的结果被称之为三角形条带或渲染序列。Hoppe将三角形重组合的问题转换成一个带有依赖于特定顶点缓冲区大小代价函数的离散优化问题。很多技术提升了视点相关算法的渲染性能,通过计算渲染队列而不针对特定的缓存大小。

处理序列:

Isenburg等提出了处理顺序作为渲染顺序的一个扩展来用于大数据量的处理。一个处理序列表示了一个索引网格作为交叠三角形和顶点它们可以流式进行到系统的内存。全局的网格访问被限定在一定的顺序中。局部的随机访问只对网格加入到缓冲区的部分进行支持,因为他是流型通过内存的。这种表达对于一些离线应用很有效。(如,简化和压缩)可以将这些计算转化到一定的顺序。

空间填充曲线:

很多算法使用空间填充曲线来计算缓存友好的体格网(volumetric grids或高程域(height fields模型布局。这些布局广泛用来提高图像处理、地形和体可视化的性能。一个基于空间填充曲线的网格布局的标准的构建方法是将网格模型或几何对象置入一个包含了空间填充曲线的统一的格网中。GotsmanLindenbaum调查了空间填充曲线的空间定位(Locality)。由查询或排序的应用的激发,Wierum提出了使用边长的对数的量度重新组合我们的标准,用于分析规则空间格网的布局。然而,我们的结果显示,空间曲线的引入并没有很好的服务于几何图元不规则分布的网格。最近,YOON等提出了缓存相关的布局用于多边形网格以及BVHs。这些构建方法是自然的需要进行一系列的二分选择但不依赖于全局的定位。因此,这些方法依赖于特定的优化框架且不能用于布局质量的判断。

3 计算模型

在本部分,我们将扫描一个用于缓存表达的I/O模型。我们同时提出了一个图的表达和概率模型用来获取访问网格模型的可能性。

3.1 I/O模型

大多数的现代计算机使用层次的内存结构,每一个层级的存储单元作为下一级的缓存。内存的层次结构有两个特点:第一,低层次的存储器,容量比较大,但远离处理器,所以访问的速度比较慢。第二,数据在存储层次中的移动是以块为单元很多元素一起进行的。数据是先存储在低层次的存储器中的。一般来说是磁盘中。数据的传输发生在当相邻的两级存储结构中,缓存出现失中时。由于块读取的机制,缓存的失中可以通过对同时访问的块中的数据元素进行排序来实现减少。

我们使用一个简单的两层I/O模型由AggarwalVitter定义的。这种结构获取了层次存储的两种特点。这个模型商定一个快速的内存称为“缓存”,有M块,以及一个低层的无限内存。每一个缓存块的大小的B,因此,整个的内容是MXB,数据在层次之间以块的方式进行传输。

3.2 图表示

我们的布局算法需要一个有向图来表达运行时的访问特征的。在这个有向图中,每一个节点表达一个数据元素,如网格顶点或三角形。两节点间的有向弧 表示节点j将紧接在节点i后被访问到。我们用有向图来表达访问的特征。跟YOON以前表达的无向图是不同的,因为我们不需要假设节点访问的对称性。

是一个有向图,这里N是节点集,A是有向弧集。布局的问题就简化为计算一一映射, 节点到位置在布局中的映射,它能最小化期望的缓存失中数量。

我们也需要每一个节点和弧段的概率(作为权值),表示运行时访问到它们的可能性。我们获得这个概率值是基于图结构,并通过考虑有限的图的随机穿行。对每一个有向弧 ,设 表示访问下一个j的概率,给定i是它的前一个访问的节点。我们定义 是概率转移矩阵,它的 元素等于 。而且,设 表示在所有节点N中访问节点i的概率,设 是一个n1的列向量它的第i个元素等于 。给定一个节点访问概率的初始值,我们通过遍历节点的出度,来更新每一个节点的概率,每一个节点的访问概率是 。这个更新等于 将前乘 。如果重复进行, 将最终达到平衡节点的访问概率。 。我们很高兴的发现了这个特征。很明显,满足这个标准的向量 的特征向量,带有一个相应的特征值。最后我们定义 是由节点i访问节点j的概率,在平衡状态下,例如在所有的弧段A中,访问 的概率是

   (2)

网格特殊化:对网格模型概率的计算假设在给定网格中,顶点i在通过出度访问他们的邻节点的概率是相等的。因此 ij相邻,否则为0,这里deg(i)是顶点i的出度。对网格来说,图的出度与入度是相同的。通过这个特征我们发现, ,即对一个顶点访问的概率与它的度成比例。因此,由(2)可得 ,也就是说每一条边的访问概率是相同的。

一个网格布局包含一对独立的顶点和单元格的线性序列。顶点的布局需要一个有向图 N是顶点的集合,A是弧段的集合,表示着访问的特征。为了进行简化,在我们的应用中,将A选择为网格中的边的集合。对于一些要求几何相关的应用如碰撞检测,我们可选空间上的相近的物体的弧,单元格的布局可以用一个相似的方法。从现在起,我们使用术语布局来指顶点的布局

4 缓存已知布局(CACHE-AWARE LAYOUTS)

本部分中,我们获取了基于我们的计算模型的缓存已知的标准,并描述了一个有效的布局算法。我们的目标是计算当通过遍历简单弧段访问节点时的缓存失中期望的数量。因为在我们的框架下,弧段被访问的概率是相等的。这种方法对任何数量的访问具有一般性。我们考虑这个问题的两种情况:缓存中包含恰好一块,另外是包含有多个块。

41单个缓存块 M=1

由于缓存中只能保存一个块,那么缓存的失中将发生在每当所访问的节点存在于没有加载到缓存中的块时,也就是,缓存失中的获取是当我们遍历弧 时包括节点j的块不是包括节点i的块。因此可得缓存失中的期望值是 ,对一个布局  ,单块缓存大小为B的节点可以计算

  (3)

此处 表示i在块中的索引值。 是一个组织函数, 时, 时,为其它。理论上说, 是弧的数量,它的两个节点在不同的块中例如图中进行分割的。

布局算法: 构建一个布局优化,简化为一个k-way的图的优化问题,每一个有向弧都有一个定量的权重。 ,我们将输入的图剖分成 个不同的顶点集,由于图的剖分是一个NP-hard的问题,本文所依赖和假设的好的图多层算法在METIS库中,一旦有向图剖分好,块的顺序和块内顶点的顺序不会产生I/O问题。

4.2 多块缓存 M>1

现假设缓存中有多块数据,在单块的情况下,缓存失中发现在访问弧 穿越边界时,如 而与单块缓存不同的是,块 在对j进行访问时,可能已经在内存中了。因此,计算多块缓存的失中的数量必须考虑 的概率,此时 M块中已经缓存。

理论上讲, 可以通过穷举所有的对于 在从ij的访问中被缓存的可能访问特征。这样块的访问特征以 的形式,此处最多有M个不同的块在 连续的第二次访问前被访问。这个缓存的失中数量是 的情况下 的布局:

   (4)

近似:

不幸的是,生成所有可能的块的访问特征的代价过高,因为以自然基的指数f增长,而且我们发现用一个误差范围内不考虑大量访问特征的近似的 是不可行的。然而,我们推测在 与获取的失中率之间有很强的联系, 对于多块, 设计用来获取为了验证这个猜想。实验了规则格网的十个不同的布局,并了在一个基于RLU的缓存中在邻节点间随机访问的失中数,运行了足够长,直到获取一定数量的失中, 对一个单块关联得很好,使用我们的 时, ,在此情况下, 的相关性对于多块缓存 所获取的相关性都非常高

然而要指出的是,有一个病态的情况,使得我们的猜想是无效的,解释它,我们先计算一个光谱式布局 为一个单块进行优化。我们改变 来产生一个新的布局 ,方法是通过执行一系列的位于不同块相邻节点之间的随机变换,直到 获取与 同样的边切值。虽然这两个布局有同样的 值,我们发现 将产生少得多的多块缓存的失中。我们分析认为这样结果的事实是并没有将过多的局部变换变成快速增长的边的切割,然而,这些变换并不影响局部性,因为他们只是增加了已经存在相邻缓存块之间的连接性,而这些块可能将一起在多块缓存中被缓存。

5缓存未知的布局

缓存未知的布局允许一个较大范围块和块的大小的性能。这对大多数缓存系统的层次性是很重要的。同时也对跨平台的不同缓存参数的兼容性十分有效。本部分介绍了我们的缓存未知标准,它可得到任何块大小B的缓存失中期望数。对于单一块缓存,我们得到了两个不同的标准:一个对块大小B不进行限制,另一个限制块大小B2的幂。在通过简要的讨论多块缓存,我们得出结论。

5.1 单一缓存块, M=1

现在,我们假设B是一个特定大小的块,来考虑用来优化多个块的大小(甚至无限个)的标准。首先,假设缓存中只保持一个块。

4.1中,对固定大小B的块,获得了一个缓存已知的尺度 ,在此,我们通过考虑块的所有可能大小B来获得此尺度。每一个与它的可能的 在实际中采用的值相关。明显的, 实际很难估计,但接下来将考虑一些有理的选择,然后介绍单块缓存未知的尺度 对就于 :

 (5)

此处t是所考虑的最大的缓存块大小。

假设:为了简化,我们假设一个布局以统一的概率开始于一个块内任何地方。因此,我们将二值函数 用概率 代替。弧 的长度 穿过一个块边界。因此   (6)

(5)式则成

  (7)

 

此处我们用积分来近似表达求和是为了数字表达的简单。可以发现,这种近似表达中引入了可以忽略的误差,最后,我们要表现尺度的最简单的形式,一般说来,我们考虑 相等的尺度,只要 单调增加。如

说明:我们进行如此的简化仅为了最终的尺度值,而不是对生成尺度的 等。

5.2 块大小的数字级数

当没有其它信息时,对 的最自然的选择是假设每一块的大小相等, ,难于描述,我们假设块的大小从一个数字数列中统一表达 我们有以下式子:

 (8)

随着t的增加, 近似于logt,通过适度的比例,我们得到算术缓存未知标准 ,有:

 (9)

 

说明: 是一个弧长的数学均值,或等于线性排列的尺度。因此用此尺度进行优化的布局 是一个有名的最小线性排列的尺度(MLA)。

5.3 块大小的几何级数

对于所有块的大小相等,以及应该统一加权的假设是有问题的。首先这将消除小块大小的重要影响,因为我们可能包含任意多个大块通过增加t值。第二,缓存的层次关系中大小常是几何级数,这将建议我们以不同的比例优化缓存块大小,而不特定对任何可能的大小。实际上,大多数的缓存区的大小彩的是2的幂的字节(如32BL164BL24KB的磁盘缓冲区),因此,我们考虑块的大小变化统一从几何序列中

说明:我们限定块的大小相当于使用一个加权函数 ,对于整个块大小,随t的增加,得以几何缓存未知值

 (11)

 

表达式右边是一个弧长几何均值的对数。由于logt是单调的,我们可以直接使用缓存未知尺度值进行优化,如图1。从现在起,我们估计 时使用这个对数,为简化表达,我们仅考虑2幂大小的缓存和单字节节点,然而,人们可以发现任意的几何级数队列 ,以b为基的节点m将产生相同的 值。

5.4 性质

2表示了 对一个单弧的弧长函数的变化。图中可见, 对短弧长的影响大而不过度处置长的弧段。这可以从这样的事实发现,弧度长到引起失中时,再增长并不会增加失中的概率。

我们说明, 是指数均值实例。 分别是p=0p=1时。我们的新的量值 可以被看作一个有名的带有线性排列 ,离散光谱序列 和带宽 图理论量测值的 家族的扩展。虽然文献21中的情况0<p<1进行了考虑,我们不知道先前的p=0的值。

5.5 有效性

我们对于在缓存块大小上的不同假设获取了二种缓存未知的度量值。为了决定哪一个更与实际的缓存失中相符,我们用龙的模型进行有效性检验。首先,我们计算了两个不同的布局:一个算术布局, ,一个几何级数布局 ,然后我们执行随机的网格模型的穿行,量测了一定范围内的缓存失中数量。如图3可见, 产生的实际失中为73%在所有的2的幂大小的块时,虽然 执行的缓存的范围要大,但有较好的97%。因此,当考虑所有可能的非2次幂块尺度时, 执行较好。因为实际上缓存块的大小采用的是2次幂,所以以 优化的布局更为实际。作为稳健性检查,我们评估了 用于多种规则格网的布局,我们计算了 索引,希尔伯特Z曲线,H-Order MLA行对行,棱行的256X256规则格网布局。对单块4kb的缓存进行随机穿行时量测实际的失中数。发现相当强的关联性, ,在 的值和实际的实验中的失中数。

根据 带有增加空间填充结构的布局有好的局部性,我们完全检查了一个4X4的格网,最小化 布局发现 空间填充曲线最优,Hilbert其次,证实传统的观点。对8X8的网格,我们限定检查以迭代的布局,由于空间的组合增加,同样发现  最优,对于所有的2X2格网的检测中,没有发现其它的空间布局有低的 ,通过考虑由替代优先方法产生的非迭代布局,我们发现布局比 8X8或更大的格网中稍好。

5.6 布局算法

要构建使用 优化的布局,我们采用现存的MLA布局算法。MLA问题是众所周知的NP-Hard和它的决定版本是NP-Complete。然而,在很多的应用领域,它的重要性激发了多个基于假设的近似,包括光谱序列[16]中,[13]中提出了一个更加直接多层的MLA算法。由于布局最小化的 在我们的应用中并不实际使用,我们并不进一步考虑它。要最小化 ,我们提出一个从[30]文中出发的基于图的剖分和局部调整的多层迭代算法。这个算法迭代的用METIS库将网格剖分成k个顶点集(k=4),且计算了在所有的k!中的k个集的局部最好顺序,这个过程重复只到每个集只有一个顶点。

[30]中的布局不同的是,那是基于一个待定的构建算法,而我们的全局尺度允许我们使用其它的优化方法,如:模拟退火算法(simulated annealing),遗传算法(genetic algorithms),最速下降算法(steepest  decent)。而我们发现多层迭代方法对减小 是相当有效的。可以用这个尺度用于量测不同比例的局部性目标解释。也就是,将一个网格剖分优化成k个集,转化为计算一个块大小为 的缓存已知的布局。实际上,没有进行任何局部调整时,如在集内的节点随机排列,我们发现结果的布局仅产生比用局部优化的 5%的失中率。

5.7 多块缓存 M>1

我们可以基于相应的缓存已知尺度 来获得多块的缓存未知尺度 ,像在单块操作一样,但由于估计 的计算是不现实的,我们又必须重用单块的尺度, 作为近似值,如4中所示,我们获得了较好的相关性。在 与观察到的缓存失中当使用多块缓存时。

6 布局的评价

本部分介绍两种用我们的标准进行的评价方法。如果一个布局是好的话。那么它不需要进行代价高的排序,特别是对于带有亿计的顶点网格。而我们的能在已知的方法以及几何级数的缓存未知尺度允许对不同的布局的图或网格排名。怎样将一个他们报告的一个单一布局数值映射到绝对质量或优化的接近度是不清楚的。如果任何尺度较小一点边界对图可知,我们可以用布局的带有尺度的边界来衡量其质量。不幸的是,对一般性的图或网格是不知的。对于测试的10个例子中,顶点从35K800K 优化,我们获得边长的几何均值落入到4.48-4.87这个小的范围内。然而,病态的状态可由此构建对此不限定在特定的网格大小。我们推测,几何均值接近均度的网格是足够近于优化来用于实际使用的。这要求进一步验证。

另一种替代方法,代价更高,来标称布局的质量是来比较一个给定的布局A的优化的布局A*,通过由本文的方法之一构建由于比较的目标,首先是要避免长度的优化,我们只优化图的一小部分G’,从原图G中抽出仅优化得到A*

6.1 算法

计算一个小子图 , 的一个部分, 。要求至少两个参数,一个比较 ,标定目标子图的大小|N’|,对于缓存已知时的缓存块大小B,为了有效,p要相当小。0.1%-1%,算式有两个主要步骤:对输入图采样,构建采样子图的布局。

1.   采样输入图:在输入图中随机选择一个起始顶点,为了使获得的子图较好的反映整图的质量 ,且布局可以允许多得一个合适的序列连续访问图的缓存行为的获得。我们通过从起点开始以宽度优先区域增加和加入所有访问点到子图的方法构建连接的子块。我们也将N’A相邻的所有节点的弧加入子图。继续只到子图中的节点数是块大小Bk倍。若在缓存未知情况下,简单设B8KB,为大的虚拟内存页的大小。一旦区域增加停止,我们加入每一个节点穿过 中所有其它映射到同一缓存块中为i的其它节点。这么做是为了不产生洞,使优化网格发生问题。然而,我们允许由非采样块产生的洞,因为对不相关的布局可有任何个块。然后重复第一步,随机选择一个新的起点,只到节点数|N’|接近于

2.构建子图的优化布局:我们应用了缓存已知和缓存未知算法来构建布局A*,并选择A*A的尺度。我们简单使用数值近似表达输入模型和优化本模型布局失中率。若差别很大则最好计算全图的值。我们用这种方法快速访问,即使对最大的模型也小于10S6-40K的顶点的子图,误差在15%范围内,即使用原模型有数以百万计顶点。

7 结果

本部分将展示用来缓存相关布局获得的性能的提高,二个应用:等值面提取,视点相关渲染。使用2.8GHzP4PC机,带1G内存进行布局计算,用METIS图形库来剖分计算缓存未知和缓存已知的布局,同时尺度计算也加入到OpenCCL开放库中。当前非最优的外核布设计算基于[3032]文中的大部分方法处理15K三角形每秒,与[1430]方法相比速度可观。

引导(替代)布局:为了减少布局的计算时间,只计算顶点或三角形布局中的一个,而采用其它的布局而非单独计算。首先,我们构建一个顶点的布局,原因是顶点的数目将小于三角形的数量,因此处理的时间小于三角形的时间,然后,我们访问顶点布局中的每一个顶点,我们按顺序存储所有三角形,我们发现使用这种使用已知的来产生的方法要引起一定的运行时性能的下降,在测试中有比采用独立 计算低5%的性能。

7.1 等值面提取

从一堆无序数据集中提取等值面是GIS和科学可视化的一个长期的问题。很多有效的等值面提取采用种子集来生成面,通过只遍历与之相交的单元格。此算法的运行时间由遍历等值线的相交单元格占据。我们采取的从单元格生成的方法使用深度优先遍历。因此,访问这种体格网以缓存相关的方式。

7.1.1 与其它布局的比较

我们比较了在SPX体网格包含140K顶点和820K四面体的等值面生成算法的情况。用八个不同的布局存储体模型在第一个提取中,保证没有任何部分在缓存中,因此从磁盘加载是最大的瓶颈。第二种时所有数据全加载入内存,因此L1L2的失中为最主要的问题。图6所示较强的关联在几何的缓存未知与失中率及运行时间。而且本文的缓存未知的布局只比采用4K块大小的缓存优化稍有降低,但比其它要高4

7.2 视点相关渲染

视点相关渲染常用于大规则模型的交互显示,这种方法预计算大模型的多分辩率层次。运行时,根据像空间的像素误差(PoE)限值动态简化模型。本文使用[32]中的CHPM来进行视点相关渲染。CHPM方法的渲染是快速的且大多数帧时间用于渲染简化模型。我们预计算了不同的布局对三种不同的模型比较缓存性能。包括1200万三角形的发电厂模型CAD模型,Bunney模型以及LLNL的等值面模型有1亿三角形块。要比较不同布局在视点相关渲染中的缓存性能。使用了平均缓存失中率(ACMR),它定义为缓存失中数目与用一定的顶点缓存大小渲染三角形数目的比。为了验证缓存未知的本质特点,我们模拟了一个先进先出的顶点缓存设置它的大小,量测ACMR是缓存大小的函数。

7.2.1 与其它布局的比较

将缓存未知的布局与全局渲染序列(URS),Hoppe的渲染序列(HRS),Z序空间填充曲线以及YOONCOML[30]进行比较。HRS可以看作缓存已知的方法,因为他对一个特定大小的缓存优化且新设置了替换策略。另一方面,Z-CurveURSCOML是缓存未知的方法,没有任何关于缓存的参数。

7bunney模型序列的ACMR值。三角形数目是顶点数目的二倍,ACMR[0.53]之间,而且,可以计算一个更低的区间0.5+O1/k),中是顶点缓存的大小。可以发现,我们的布局的ACMR接近最低值,且始终小于URSCOML在所有的缓存大小的测试中的值。当缓存大小为16时产生的失中要多于HRS,而HRS正是对此大小进行优化的。在864时,我们的方法要好很多。这正是本文方法的优点。适应通过的大小而不是一个固定的大小。用 尺度比较本文的方法比COMLHRSURS分别好5%17%31%。等值面也有类似的结果。

8表现的是电厂的ACMR,它的几何分布十分不规则,使用了我们的方法和其它的方法,空间填充曲线只在几何分布规则的区域可以获得较好的局部效果。在此,我们不期望其好的性能。事实上,我们的方法比Z-曲线和其它的方法产生好的结果。由 尺度可见,性能优于COMLHRSZ-曲线分别为5%29%241%

最终我们测试了 HRSACMR值,以32为缓存大小,通过子采样顶点和三角形(边折叠操作)来降低分辩率。幸存元素的相关位置由简化得到。由于我们的 布局保存多比例的局性,在简化网格中可能相关的。正如所期望的。图9体现我们的布局的简化比HRS更稳健。

73COML的比较

[30]Yoon提出了缓存未知网格布局COML,与本文的有很多相似,特别是在性能方面。然后我们还是继续的提升了COML的性能,我们的主要的动机是对于原来模型布局缺少全局性的布局相关性的扩展,这个成为一个数量的限制。COML使用了一个局部的概率值来进行相关性的量测。它允许决定是否一个局部的小数据量的顶点的调整是否可能减少缓存的失中数。这个标准并没有扩展到整个模型。并不具备传播性。假设一个局部的调整A要比另一个局部的调整B要好得多。且B也比另一个C要好得多。然而,根据COML的标准,A并不一定给C要好。有两个原因,COML并不能用来对布局的质量进行评估和比较。另一方面,我们的新的标准是全局的,并且是可以传播的,更为重要的是与期望的失中数相关。并且由于这个标准是全局的又容易计算,它可以方便的与计算的框架进行集成而不向前者那样。最终,我们从一个一般的I/O模型开始,由此缓存已知和缓存未知标准进行了融合。COML是否用于计算缓存已知布局是不明显的,因为他基本上没有与缓存参数相作用。

7.4 局限性

虽然相比与COML有了多方面的改进,但是我们的方法还是有一些不足。我们的布局质量估计技术只考虑了网格的子块,并不一定对于非采样部分有指导意义。我们用于网格模型的贪婪的迭代的多层方法不可能找到一个真正的最优结果,且有可能并不能计算出一个比输入模型要好的结果布局。而且,我们的多层方法过于依赖于METIS图剖分算法,而此本身依存于假设。因此,剖分的结构可能远离于优化。例子就是对于统一格网的使用。此时,由METIS库产生的缓存未知的布局以及由我们的标准达到的60%的缓存失中的获取是由空间填充曲线,它是在某种情况下对这些格网剖分的。我们的布局对性能的提升主要是在运行时对数据访问占主要的方面的应用的提升。最终,我们需要一个特定的图来表达访问的特征。无论网格的连接结构可以用来定义这种图。某些特定的应用可能需要一些不同的节点集,弧和访问概率的设置而不是由我们的方法自动产生。

8 结论以及后述工作

我们提出了新的缓存已知与缓存未知的标准来对非结构化的图和网格进行布局质量的评价。我们的标准是基于一个二级的I/O模型的。我们的缓存已知标准简化到计数弧段的节点跨在不同的块之间的数量。对于缓存未知的情况,基于不同的对缓存块大小用于缓存的假设,我们获取了两种不同的效果标准。当应用于所有可能相等的块大小时,我们的缓存未知标准简化到图理论标准到最小线性排序中上来。当仅考虑缓存的大小是2的幂时,我们的缓存未知标准是弧长对数的函数。或者说,这些标准相应于弧长均值的算术或几何均值。我们的测试发现,在我们的标准在两种不同的可视化应用的中与缓存失中数有着相当好的联系。而且我们提升了这些应用从5%-100%的性能。

我们的工作还有一些更深入的研究。在讨论我们方法的不足之处时,我们在进行网格的压缩架构以更进一步的降低昂贵的I/O访问时间。一个主要的问题是设计一个压缩方法同时可保持网格的布局和支持随机访问以致使得网格可以以一个相关的方式进行访问而不是预定义的访问顺序。另一个问题是扩展我们现有的方法来支持非静态网格连接的相关布局。如,动画、简化、精化。还有一些令人兴奋的空间进行我们的新的,简单的缓存未知问题的理论研究,如证明什么样的布局对2D3D的网格有效,以及是否我们的标准产生类似于空间填充的优化布对非结构化的格网有效。最后,我们期望我们的标准可以在可视化以外的应用中起作用,如最短路径的加速和其它的图的计算。


 


本文的Word版本在文件中可下载
若有不足处请大家指正,可发至bopi@263.net

posted on 2007-04-26 22:43  bopi  阅读(522)  评论(1)    收藏  举报