范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

一种基于sortlast架构的非结构网格并行体可视化算法

  体可视化是科学可视化中的重要研究方向,被广泛应用于医学影像、计算流体力学(computational fluid dynamics, CFD)、气象气候学等领域,体绘制算法是体可视化领域的重要研究内容。体绘制直接从三维的体数据中生成半透明的二维屏幕图像,空间表现能力强,因此,也被称为直接体绘制。科学家可以通过体绘制结果看穿数据体,探索数据内部结构,获取有用信息。与面绘制相比,体绘制结果多了一个维度的信息,因此,可视化结果不仅更加精确,而且更能体现数据本身的特点。体数据是体绘制算法的输入,分为结构网格和非结构网格。其中,结构网格具有规则的几何结构和拓扑结构,相反,非结构网格的几何结构和拓扑结构不规则,网格单元可以是任意形状。在三维数据场变化剧烈的区域可以用体积较小的网格单元表示,变化比较平滑的区域则使用体积较大的网格单元表示,对于同一个数据场,可以用更少的非结构网格单元进行描述,有效节省了存储空间。因此,非结构网格数据在科学计算与仿真领域的应用更加广泛。然而,由于非结构网格的几何结构和拓扑结构不规则,相对于结构网格,非结构网格的体绘制算法设计比较困难,涉及复杂的计算与庞大的存储量。目前,非结构网格体绘制算法可以通过基于图像空间、基于对象空间和两者混合的技术实现。光线投射算法是十分具代表性的基于图像空间实现的体绘制技术。然而,对于非结构网格数据而言,无法根据几何结构和拓扑结构计算光线离开当前网格单元后即将进入的下一个网格单元,采用局部或全局搜索下一个网格单元需要极大的开销。Weiler M等人将沿着光线的采样点限制在单元面上,同时,采用预积分技术,将预积分的颜色和透明度值存入一张纹理图,并且将光线进入和离开单元点的标量值以及光线在网格单元内穿过的长度作为参数查询纹理图。此外,他们还精心设计了纹理数据结构,将体数据以纹理的形式载入显存,通过硬件技术加速算法。投影四面体算法是十分著名的基于对象空间实现的体绘制技术,首先,计算所有网格单元的可见性顺序;然后,根据可见性顺序将四面体单元在图像平面上的投影拆分为一系列三角形;最后,将三角形的顶点数据载入显存,通过GPU光栅化并合成最终结果。此外,Wylie B等人利用可编程的顶点着色器,设计了基于硬件加速的投影四面体算法,不需要额外的数据结构与数据预处理。HAVS (hardware-assisted visibility svrting)算法是最具代表性的基于图像/对象空间混合技术实现的非结构网格体绘制算法,在对象空间,对网格单元执行局部排序,并生成一个近似有序的网格单元片段列表;在图像空间,使用固定深度的排序网络对片段列表执行升序排序。其中,对象空间计算在CPU上进行,图像空间计算在GPU上进行。HAVS算法在简化CPU的处理运算的同时,将大量排序计算交给GPU执行,进一步提升了算法性能。由于各种科学计算与模拟仿真的精度越来越高,非结构网格数据规模呈爆炸式增长。体绘制包含数据重构、传递函数映射和绘制合成,涉及大量的浮点运算,串行的算法难以满足需求。随着技术发展,大量的并行计算软件和硬件出现,这为科学研究提供了更加强劲的计算能力,基于进程并行的体绘制算法研究成为大规模非结构网格数据体可视化设计的趋势。Fogal T等人实现了基于集群的并行体可视化算法,使用KD树组织数据,进程之间采用信息传递接口(massage passing interface,MPI)通信,可高效绘制大规模标量场数据集。Chen J H等人设计了分布式的并行体绘制算法,并对大规模燃烧模拟数据的多个变量同时进行体绘制,允许用户实时交互体绘制结果。本文在现有研究成果的基础上,研究并实现了一种基于sort-last架构的非结构网格并行体绘制算法,并集成到国产自主可控科学可视化软件拓视(TopViz)中,主要贡献如下。● 实现了基于KD树的并行体数据分割算法和可见性排序算法。首先,使用预处理程序确保每个进程读取的网格数量大致相等;其次,以每个进程上的数据为输入,构造局部KD树;然后,将所有进程上的局部KD树合成为全局KD树;最后,通过相机位置和分割平面计算全局KD树叶子节点的可见性顺序。● 实现了基于二叉树的并行图像合成算法。根据可见性顺序对所有进程上的图片两两配对并合成中间结果,不断重复配对与合成的过程,直到合成最终结果。● 实现了两层LOD交互模型。首先,同步所有进程的数据边界信息;然后,在主进程上渲染数据边框模型。当处于交互状态时,渲染边框模型;停止交互时,渲染体绘制模型。● 设计实验验证,并分析了算法性能。实验结果显示,本文的并行体数据分割算法具有良好的性能和负载均衡能力;并行体绘制算法可以被很好地应用于大规模非结构网格数据体可视化,且交互时延在毫秒级别,满足实时交互的需求。2 基于进程并行的非结构网格体绘制算法
  非结构网格数据的体绘制算法涉及庞大的计算量与存储量,串行算法效率较低,难以满足大规模非结构网格数据体可视化实时交互的需求。因此,基于进程并行的体绘制算法是大规模非结构网格数据体可视化十分有效的解决方案。本节将详细描述基于进程并行的非结构网格体绘制算法流程,算法包含数据分割、绘制和图片合成3个阶段,如图1所示。在数据分割阶段,首先,每个进程读取数量大致相等的网格单元;然后,将每个进程上的体数据作为输入,构造局部KD树;最后,通过MPI将所有进程上的局部KD树合成为全局KD树。在绘制阶段,每个进程使用独立的体绘制管线计算图像。在图片合成阶段,按照可见性顺序配对所有进程上的图片,并合成中间结果,不断重复配对和合成过程,直到合成最终结果。
  图1 基于进程并行的非结构网格体绘制算法流程2.1 数据分割
  并行体绘制算法的第一步是将大规模的网格数据拆分为若干个规模较小的网格。由于绘制过程的性能取决于绘制最慢的进程效率,因此,负载均衡是数据分割算法设计首要考虑的问题。本节将详细描述基于KD树的并行体数据分割算法的设计,为了确保负载均衡,最终分割结果中KD树叶子节点之间的数据量应基本相同。2.1.1 局部KD树构造KD树是一种分割K维空间的高效数据结构,属于二叉空间分割树的特殊情况,被广泛应用于各种数据分割和搜索程序中。其中,KD树的叶子节点表示K维空间中的点,非叶子节点表示将K维空间一分为二的超平面或超立方体。如果要将KD树算法应用于体数据分割,则需要赋予节点新的意义,其中,叶子节点表示非结构网格单元集合,非叶子节点则表示将空间一分为二的超平面。体数据是三维的,因此,使用与坐标轴平行的分割平面可以最大限度地简化数据分割的运算过程。算法1给出了KD树的构造过程。对于一个非叶子节点,首先,计算所有网格单元的质心坐标;其次,计算分割平面的方向,为了确保与分割平面相交的网格单元最少和避免数据分割后被拉长,选择数据边界跨度最长的坐标轴方向作为分割平面方向;然后,计算所有网格单元沿着分割平面方向的质心坐标中位数,为了确保左右子树的网格单元数量大致相等,将质心坐标的中位数作为分割平面的位置坐标;最后,沿着分割平面将数据一分为二,对于与分割平面相交的网格单元,复制一份并划分到分割平面两侧。KD树构造是一个递归的过程,不断拆分非叶子节点,直到生成指定数目的叶子节点。算法1 KD树构造输入:非结构网格数据输出:KD树根节点指针步骤1:计算所有网格单元的质心坐标;步骤2:根据网格数据边界值计算分割平面方向;步骤3:计算质心坐标的中位数,将中位数质心坐标作为分割面的位置坐标;步骤4:沿着分割面将网格数据一分为二;步骤5:递归执行步骤2~4,直到生成指定数目的叶子节点。通常,一个大规模的网格数据在超级计算机上使用多个并行程序模拟计算生成,以多块(multi-block)数据的形式写入磁盘,最好也用并行读取的方法处理。虽然单块数据的规模不大,但是单块数据之间的网格规模可能差距很大。因此,本文首先使用一个预处理程序统计大规模网格数据中每一块数据的网格单元数量,并保存到一个列表中;然后,根据列表网格数量信息计算每个进程应读取的单块数据编号,确保每个进程读取的网格单元数量大致相等;最后,每个进程根据单块数据的编号并行读取体数据。在每个进程上使用KD树算法分割体数据,这个过程被称为局部KD树的构造。预处理过程确保了每个进程上读取的网格单元数量大致相等,因此,局部KD树构造算法是负载均衡的。每个进程上的局部KD树具有相同的非叶子节点,即分割平面相同,所有的树节点同步生成。因此,首先构造一个非叶子节点,同步所有进程上该节点对应的体数据边界信息,根据边界范围选择分割平面的方向;然后,并行计算所有进程上该节点对应的体数据网格单元沿着分割平面方向质心坐标的中位数,将中位数的坐标作为分割平面的位置坐标;最后,沿着分割平面将该节点一分为二。递归构造每一个非叶子节点,直到生成指定数目的叶子节点。为了最大化地确保KD树平衡,以及便于后续设计并行图像合成算法,本文构造的KD树均为满二叉树,即叶子节点数量为2的正整数幂。如果叶子节点数量为N,则KD树的高度为lbN。2.1.2 全局KD树合成全局KD树与局部KD树具有相同的非叶子节点,不同的是,每个进程只存储全局KD树中一个叶子节点的数据,这些叶子节点的数据为最终分割结果。进程之间的局部KD树对应的叶子节点数据交换过程被称为全局KD树的合成。数据分割需要保证每个进程上都有数据,因此,进程数量应该等于KD树的叶子节点数量,即2的正整数幂。对于局部KD树,只有其中一个叶子节点的数据属于当前进程,因此,需要进行N对N的数据交换操作。首先,给所有局部KD树的叶子节点编号(从0开始);然后,通过MPI,根据进程秩将属于其他进程的叶子节点数据发送至对应的进程;最后,将每个进程上的数据合并为完整的网格。2.1.3 基于KD树的可见性排序算法对于与分割平面相交的网格单元(也被称为ghost单元),本文采取的处理方式是复制一份,然后将其划分到分割平面两侧。该处理方式可以确保分割平面两侧的网格数据具有严格的可见性顺序,不存在相互遮挡的情况。其中,可见性顺序用于描述空间中两个对象的遮挡情况,在给定视线方向的情况下,如果对象a遮挡了对象b,则可见性顺序OaOb。对于KD树的非叶子节点的左右孩子节点,以分割平面为界,定义与相机位置处于同一侧的孩子节点为近点,另一侧为远点。近点的可见性顺序明显小于远点的可见性顺序,因此,通过相机位置和分割平面可以计算KD树中所有叶子节点的可见性顺序。算法2给出了基于KD树的可见性顺序计算过程。将全局KD树作为输入,从根节点开始,根据相机位置确定近点与远点;按照"先近点,后远点"的顺序计算每个非叶子节点的可见性顺序;如果遇到叶子节点,则将叶子节点对应的进程秩添加到可见性顺序列表。递归处理每个节点,直到所有叶子节点的可见性顺序计算完毕。算法2 可见性顺序计算输入:全局KD树输出:可见性顺序列表list步骤1:如果当前节点为叶子节点,将该节点的进程秩添加到list;步骤2:如果当前节点为非叶子节点,根据相机位置确定近点与远点:· 计算近点可见性顺序;· 计算远点可见性顺序;步骤3:递归执行步骤1~2,直到所有叶子节点的可见性顺序计算完毕。2.2 绘制
  并行体绘制算法的第二个阶段(绘制)以第2.1节中KD树算法的分割结果为输入,在每个进程上执行独立的可视化管线,从而计算体绘制图像。本文采用体绘制管线技术,如图2所示,整个体绘制管线分为数据处理、体绘制算法、体绘制参数和渲染4个部分,其中,管线中每个阶段的输出作为下一个阶段的输入。在数据处理部分,使用Reader加载KD树算法的分割结果,如果需要对体数据进行裁剪和四面体化等操作,可以通过Filter完成;在体绘制算法部分,使用高效的线程并行投影四面体算法计算图元信息;在体绘制参数部分,建立体数据标量值与颜色/透明度之间的映射关系;在最后的渲染部分,使用OpenGL API函数将体绘制图元数据与传递函数参数载入显存,通过GPU光栅化并合成最终的体绘制图像。体绘制管线技术具有高度的可扩展性与灵活性,管线每个部分只提供通用的接口,实现体绘制管线则需要提供所有通用接口的具体实现。如果要研究不同的体绘制算法性能,只需要提供新算法的Mapper即可。
  图2 体绘制管线2.3 图片合成
  如图3所示,基于sort-last架构的并行体绘制算法最后需要将所有进程上的体绘制图片合成最终结果。由于体绘制结果是半透明的二维图片,因此,需要根据可见性顺序按照从前向后的顺序进行合成。可以使用over运算将两张体绘制图片合成一张图片,其中,over运算不满足交换律,但是满足结合律。因此,在不改变合成顺序的前提下,可以对所有进程上的体绘制图片任意分组,采取分组合成策略。over运算的性质为并行图像合成算法设计提供了条件。
  图3 图片合成
  本文采用基于二叉树的图像合成算法,首先,根据第2.1.3节中的方法计算所有进程体绘制图片的可见性顺序列表;然后,根据可见性顺序列表对体绘制图片进行两两配对;最后,通过MPI将图片发送至其配对进程,并使用over运算合成中间结果。不断重复配对与合成的过程,直到所有中间结果都被合成为最终图片。与串行的图像合成算法相比,虽然基于树的合成算法增加了通信次数和合成次数,但是它将时间重叠利用,减少了资源闲置,算法并行粒度更高,效率优势更明显。以4个进程为例,二叉树图像合成算法流程如图4所示。假设4个进程上的体绘制图片可见性顺序为O0
推荐盘点额尔古纳旅游打卡地额尔古纳市因额尔古纳河而得名,蒙古语为捧呈敬献之意,素有呼伦贝尔缩影的美誉,是呼伦贝尔的城市名片。额尔古纳旅游资源丰富,夏季神清气爽,冬季银装素裹,别有情趣。额尔古纳河流域是蒙古族十一游新疆金秋新疆旅游活动盘点竟有这么多好玩的中秋小长假我相信现在肯定有许多小伙伴已经开始数着日子过了十一要来啦对于很多想去旅游的小伙伴来说可能会因为去哪里旅游而纠结来啦小编为大家盘点了新疆各地旅游优惠活动抓紧时间安排行程吧!推荐包头市九原区经典一日游旅游线路那些被记住的,才是生活,才是最好的日子啊!巍巍阴山下,悠悠九原郡。十一黄金周,和亲朋好友们相约着来九原吧,一串儿好日子排好了队,正等着你呐!九原区文体旅游广电局特在国庆节前推出九原国内最适合中老年人旅游的10个地方,爱父母就带他们去旅游每年的母亲节,父亲节,朋友圈不凡孝子在感恩父母,谢谢他们的养育之恩。事实上大多数年迈的父母都不看朋友圈,有些甚至都不会上网。那么,与其这样,不如有时间就多陪陪他们,打打电话,时间允我家百岁老保姆涂阿姨百年诞辰,通常是纪念大人物的,今天我以此文纪念一个小人物,我家的老保姆涂阿姨。老涂阿姨生于1921年,如果她还活着的话,今年也正好100岁。除了她的家人,这世上已没有几个人记得她了南洋金珍珠菲律宾薄荷岛仙女戏水二薄荷岛内陆迷你眼镜猴巧克力山与仙女下凡宿雾岛主要是人文景观,薄荷岛就是自然风光了,海岛度假风扑面而来。度假花园酒店除了大泳池,每座小屋前还有一个小泳池,面朝大海,春暖花开官宣!甘肃100个网红旅行地名单甘肃100个网红打卡地名单都包括啥?涵盖全省14个市州兰州新区最具代表性的打卡胜地。景区景点美丽乡村自驾游露营基地特色小镇文化艺术场馆红色旅游商业小吃街最美古镇8个方面。快快收藏名大漠明珠纳林湖说到消夏避暑,您一定有很多去处可以选择,而要在茫茫沙漠中找到静谧之地,很不容易,今天小编就带您去内蒙古巴彦淖尔市的纳林湖去感受一番与众不同的夏日体验。纳林湖位于我国八大沙漠之一的乌晚尚游南美5(大结局)阿根廷莫雷诺大冰川,一眼万年视频加载中五莫雷诺大冰川,一眼万年什么是冰川?唐代大诗人李白说欲渡黄河冰塞川,将登太行雪满山。明明白白的点出了冰川。不过那不是真正的冰川,是黄河结冰期,春天来了,就会冰雪消融。李四打卡重庆的江北渝中刚发现我是个不会享受生活的人,每次都要利用工作才会去看看那个地方的风土人情风景地点。这次为了帮朋友来到了重庆。看了铁山坪上的别墅,静谧优雅,透露着点点滴滴的宁静,让人放松,周边绿树完美错杀官场推理小说连载4作者吴易陶3晚上下班,推辞掉两个饭局,张天博回家了,在楼下望着家里的灯光,今天老婆也回来得早啊。不知道做好饭了没有。女儿在省城上学住校,这个女人越来越懒,也更喜怒无常了,但还是简单
娃多旅行选啥布局?带12度电自动挡大额头房车,4张床能睡312人空间宽敞的大额头C型房车,内饰改造也更加灵活!往往被打造成多样化布局,适应不同家庭的出行需求。基于依维柯欧胜底盘改装的白鲸系列房车,包括无拓单拓以及双拓展车型,布局更是多样。下面就布达佩斯千年之城的繁荣与浪漫一辆几乎空荡荡的火车从贝尔格莱德的车站发出,这列火车只有四节车厢,可以说这是我见过的最短的火车了(当然后来这趟火车在别的车站又加了几节车厢)。车厢里面除了我以外大概就只有四五个人,我与西藏的第一缘2006年,刚上初一的我上了人生中第一节地理课,不断切换的图片,让我第一次感受到与自己生活完全不同的景色,有惊奇更有无尽的畅想。从小在农村生活的我,从未走出过自己的家乡,没有看到过北海旅居短租现状半月前帮朋友找旅居房二居价位不过12001500。昨天帮己到北海的朋友一起找房,看了四家最贵的一个月3000元,过春节那个月另外加一千,说实话真心有点高了,后来去看了两家不是民宿,行走在唐村文秦延安冬天的终南山,如一幅水墨画。皴黑的山体光秃的树木瘦弱的河流,以及灰瓦泥墙的村庄,构筑出了一种萧疏寒冽沉寂明净的美。顺着盘山公路,我们走进了神禾原上的唐村。唐村,实际上是西安市长安区听济南琵琶泉,太治愈了原标题听济南琵琶泉,太治愈了来源闪电新闻一方清泉,能迸发出什么样的能量?嘈嘈切切错杂弹,大珠小珠落玉盘。若君想闻琵琶声,不妨一观琵琶泉。戳视频听听大自然的乐师在演奏什么?水声淙淙,妈阁城的谜语严歌苓第一次踏进拉斯韦加斯的赌场是1988年,亲戚们是把赌城一游作为一道美国文化盛餐来款待我的。我们乘坐的大巴上赫然印着发财团的大字,车上座无虛席,大部分赌客是来自台湾又在美国定居500元人民币在缅甸能干嘛?缅甸姑娘告诉你500万元在缅甸可以享受哪些服务?接下来,让缅甸的美女来告诉我们吧!(此处已添加小程序,请到今日头条客户端查看)现在出国旅行的人数越来越多,很多人在节假日都会选择出国旅行,因为在异小猪说说说还想去西藏吗?第一次是12年的7月去西藏,是和喜欢的他一起自驾游第二次是在13年8月去日喀则,不同于上次的是,这次是坐火车去做公益活动,在那边呆了整整两个月7月去的时候提前查了很多资料,从青海过丽江古镇和束河古镇,哪个更好玩?丽江古镇和束河古镇,哪个更好玩儿呢?仁者见仁,智者见智,我也有自己的看法。我有不太恰当的比喻丽江古镇好像霸道总裁,束河古镇好像店铺掌柜。丽江古镇旅游开发的比较早,形成了旅游一条龙的古镇留有72座海底村庄,伴随一段古老而神秘的传说地球上70都是海洋,只有30的陆地。海洋是最早生命的起源,是生命的孕育之母,从始至终人们对于海洋的好奇与探索从未停下脚步。而我国古代一直信奉着有神灵的存在,认为龙王就是掌管海洋的神