一种CT切片数据可视化重构的八叉树并行构造方法技术

技术编号:15641395 阅读:65 留言:0更新日期:2017-06-16 11:54
本发明专利技术涉及并行计算应用技术领域和高性能科学计算领域,特别是涉及一种具备TB级数据处理能力的CT切片数据可视化重构的八叉树并行构造方法。其基于MPI+OpenMP并行编程模型,利用原始体数据网格剖分、八叉树节点数据没有依赖性等特点,基于“按需构造‑Branch on need Octrees,BONOs”方案,根据体数据的实际三维尺寸进行八叉树并行构造,一方面减少构造过程中对计算资源、存储资源的浪费和I/O开销,另一方面通过并行计算的方式实现对TB级CT切片数据的快速八叉树数据结构构造,MPI+OpenMP并行编程技术满足TB级CT切片数据在不同分辨率要求下的八叉树数据结构体快速构造,该方法具备较好的并行加速比和并行效率。

【技术实现步骤摘要】
一种CT切片数据可视化重构的八叉树并行构造方法
本专利技术涉及并行计算应用
和高性能科学计算领域,特别是涉及一种具备TB级数据处理规模的CT切片数据可视化重构的八叉树并行构造方法。
技术介绍
在图形图像处理应用领域中,三维可视化技术是描绘和理解三维模型的一种重要工具,而八叉树是一种用于描述三维空间的树状数据结构,其数据结构是三维可视化技术广泛应用的重要数据结构之一。科学计算领域中常用的并行编程框架包括MPI(消息传递接口)、OpenMP、CUDA等。MPI主要用于实现多进程协作的并行程序设计。由于不同进程具有独立的地址空间和资源,因此需要采用MPI提供的消息传递接口来实现进程间的相互通信。在使用MPI实现八叉树并行构造算法时,通常会对计算网格进行区域划分,不同的进程负责不同区域的计算,完成计算之后将数据存储至自定义文件中。OpenMP是一种用于共享内存的并行系统的多处理器程序设计的编译处理方案。在OpenMP的程序中,多个线程协同工作来完成计算任务,线程之间共享所在进程的内存空间,因此,线程间不需要额外的通信来交换数据。但是OpenMP不能实现跨节点并行,而且,在线程数目很大的情况下,不能实现良好的并行效率。随着数据处理规模的迅速激增,和处理时效性需求不断增加,三维可视化技术已经越来越多地利用高性能计算应用技术和并行计算应用技术来解决面临的例如单机无法处理,或处理时间无法接受,或处理效果不好等问题和挑战。八叉树构造算法是一个非常重要的应用基础算法,针对其优势和特点,结合目前数据规模逐渐达到TB级、甚至PB级,应用时效性要求高的实际情况,研究八叉树的并行构造方法有重要的实际意义和迫切的应用需求。
技术实现思路
为了解决现有技术的不足,本专利技术提供了一种基于MPI+OpenMP并行编程模型的CT切片数据可视化重构的八叉树并行构造方法。该方法利用原始体数据网格剖分、八叉树节点数据没有依赖性等特点,基于“按需构造-BranchonneedOctrees,BONOs”方案,根据体数据的实际三维尺寸进行八叉树并行构造,一方面减少构造过程中对计算资源、存储资源的浪费和I/O开销,另一方面通过并行计算的方式实现对TB级CT切片数据的快速八叉树数据结构构造,MPI+OpenMP并行编程技术满足TB级CT切片数据在不同分辨率要求下的八叉树数据结构体快速构造,该方法具备较好的并行加速比和并行效率。本专利技术的技术方案是:一种CT切片数据可视化重构的八叉树并行构造方法,其具备TB级数据规模处理能力,其包括以下步骤:(1)根据CT切片数据组合而成的原始体数据尺寸X、Y和Z,将八叉树的叶子节点和中间节点设定尺寸为x、y和z,计算获得X方向、Y方向和Z方向的剖分网格数目NX、NY和NZ,得到体数据的剖分网格数目N=NX*NY*NZ,按照该数目构造一份线性满八叉树的索引列表,剖分网格即代表八叉树的叶子节点;其中索引列表内包括以下信息:1)体数据三维尺寸:拟处理体数据的实际三维大小X、Y和Z;2)节点三维尺寸:BONOs树节点表示的体数据三维大小x、y和z;3)实际节点数:当前BONOs树的节点个数,包括根节点、中间节点和叶子节点;4)八叉树深度:当前BONOs树的深度;5)是否BONO树:标识当前八叉树是否为BONO树;6)是否压缩:标识当前八叉树存储前是否经过压缩;7)线性八叉树地址向量,满线性八叉树,包括:①节点标识:根据BONOs算法,若该树节点实际存在,则为真,否则为假;②树节点坐标:树节点的三维坐标x,y和z;③节点Morton编码:节点的Morton编码;④节点实际内存地址:节点数据所在的实际内存地址;⑤节点邻域索引:标识出子节点相邻的其余体数据索引下标,包括面邻域、边邻域和角邻域,共27个;⑥文件存储绝对路径:表示当前节点的文件存储路径。(2)完成索引列表字段填充,包括八叉树属性字段和节点属性字段,按照“按需构造-BONOs”原则,根据实际存在的体数据进行划分,不保留扩充的“伪数据”:若节点内包含实际存在的体数据,则该节点被标识为存在;若节点只包含扩充的伪数据,则该节点被标识为不存在,减少转换和构造过程中对计算资源、存储资源的浪费和消耗。(3)根据原始体数据尺寸X、Y和Z,以及拟定的节点尺寸x、y和z,进行数据预取操作,将Z方向的z个CT切片数据文件预取至所有计算节点内存中,减少转换过程中对数据文件的重复数据I/O开销,提高数据复用效果。1)按照节点尺寸x、y和z,以及切片数据大小,申请动态内存空间,等待数据缓存至内存;2)按照OZ坐标轴方向将z个切片数据读取至节点内存;3)根据体数据尺寸Z和节点尺寸z,计算迭代次数K,其中K表示该数据预取过程将持续K次,K=┌Z/z┐。(4)将预取至内存的体数据子块,即三维尺寸为X、Y和z的体数据子块在XOY平面进行X和Y方向进行等分,X方向划分,Y方向划分,将该体数据块划分为(X/x)*(Y/y)个叶子节点。1)按照MPI并行规模PN,对本次叶子节点网格数N进行平均划分;2)每一个进程P,确定拟处理的叶子节点个数和节点编号,确保所有节点能够被处理;3)根据拟处理叶子节点数目,申请动态内存空间,分配待处理数据缓存区域。(5)基于MPI+OpenMP编程模型,执行叶子节点数据并行转换操作,由PN个MPI进程将N个叶子节点进行数据转换,每个进程内部启动OpenMP多线程完成数据排列,使得CT切片数据格式快速并行转换为八叉树叶子节点数据格式,并存储为自定义二进制文件,将该过程迭代执行次,完成整个体数据由CT切片数据格式向叶子节点二进制数据格式的转换操作。1)按照叶子节点尺寸和编码,读取体数据子块的对应区域至缓存区域;2)依次按照OX、OY和OZ三个方向,将切片数据顺序排列为树节点数据;3)将完成数据填充的叶子节点存储为自定义二进制文件;4)如此迭代执行K次,完成整个体数据由CT切片数据格式向八叉树叶子节点二进制数据格式的转换过程,其中。(6)根据线性满八叉树索引列表属性信息和MPI+OpenMP并行编程模型,从八叉树的叶子节点所在层位开始进行自底向上进行合并构造,逐层向上合并构造树的中间节点,并将构造结果存储为自定义二进制文件,存储路径保存至索引列表中。a)按照MPI并行规模PN,对当前拟合并的中间节点数目进行平均划分,确保该层所有节点能够被处理;b)每一个进程P,按照父子节点定位算法,确定拟处理的中间节点的子节点在索引列表中的索引编号范围,线性满八叉树索引列表具备如下特性:i.设一子节点索引号为ID’,其对应的父节点索引号为ID;ii.ID’=ID*8+i,i={1,2,3,4,5,6,7,8};iii.ID’-1=ID*8+i’,i’={0,1,2,3,4,5,6,7};iv.(ID’-1)/8=(ID*8+i’)/8=ID,i’={0,1,2,3,4,5,6,7};v.ID=(ID’-1)/8c)即根据子节点索引编号ID’,可以直接计算得到父节点索引编号ID,同样父节点也能够直接计算获得八个子节点的索引编号,计算时间复杂度为O(1);d)对上述a)-c)步骤重复迭代执行,直至完成对树的根节点Root数据合并操作。(7)完成整棵八叉树构造,获得线性满八叉树索引列表和八叉树节点数据本文档来自技高网
...
一种CT切片数据可视化重构的八叉树并行构造方法

【技术保护点】
一种CT切片数据可视化重构的八叉树并行构造方法,其具备TB级数据规模处理能力,其特征在于,该方法包括以下步骤:A、按照CT切片数据组合而成的原始体数据尺寸X、Y和Z,树节点设定尺寸为x、y和z,计算获得X方向、Y方向和Z方向的剖分网格数目N

【技术特征摘要】
1.一种CT切片数据可视化重构的八叉树并行构造方法,其具备TB级数据规模处理能力,其特征在于,该方法包括以下步骤:A、按照CT切片数据组合而成的原始体数据尺寸X、Y和Z,树节点设定尺寸为x、y和z,计算获得X方向、Y方向和Z方向的剖分网格数目NX、NY和NZ,得到体数据的剖分网格数目N=NX*NY*NZ,按照该数目构造一份线性满八叉树的索引列表,剖分网格即代表八叉树的叶子节点;B、完成索引列表各个属性字段填充,包括八叉树属性字段和树节点属性字段,按照“按需构造-BONOs”原则,根据实际存在的体数据进行划分:若节点内包含实际存在的体数据,则该节点被标识为存在,若节点只包含扩充的体数据,则该节点被标识为不存在;C、根据原始体数据尺寸X、Y和Z,以及设定的节点分辨率尺寸x、y和z,进行体数据预取操作,将Z方向的z个CT切片数据文件预取至所有计算节点内存中;D、将预取至内存的体数据子块,即其三维尺寸为X、Y和z的体数据子块,在XOY平面进行X和Y方向进行等分,X方向划分,Y方向划分,将该体数据块划分为(X/x)*(Y/y)个叶子节点;E、基于MPI+OpenMP编程模型,执行叶子节点数据并行转换操作,由PN个MPI进程将N个叶子节点进行并行转换,每个进程内部启动OpenMP多线程完成数据重排,使得切片文件数据转换为八叉树叶子节点数据格式,并存储为自定义二进制文件,将该过程迭代执行多次,完成整个体数据由CT切片数据格式向叶子节点二进制数据格式的转换操作;F、根据线性满八叉树索引列表属性信息和MPI+OpenMP编程模型,从叶子节点所在层位开始进行自底向上八叉树并行构造,逐层向上合并构造中间节点,并将构造结果存储为自定义文件,存储路径保存至索引表中;G、完成整棵八叉树构造,获得线性满八叉树索引列表和八叉树节点数据文件,满足体数据三维可视化重构目的。2.根据权利要求1所述的CT切片数据可视化重构的八叉树并行构造方法,其特征在于,索引列表内包括以下信息:a.体数据三维尺寸,即拟处理体数据的实际三维大小X、Y和Z;b.节点三维尺寸,是BONOs树节点表示的体数据三维大小x、y和z;c.实际节点数,是当前BONOs树的节点个数,包括根节点、中间节点和叶子节点;d.八叉树深度,指当前BONOs树的深度;e.是否BONO树:标识当前八叉树是否为BONO树;f.是否压缩:标识当前八叉树存储前是否经过压缩;g.线性八叉树地址向量,满线性八叉树,包括:①节点标识:根据BONOs算法,若该树节点实际存在,则为真,否则为假;②树节点坐标:树节点的三维坐标x,y和z;③节点Morton编码:节点的Morton编码...

【专利技术属性】
技术研发人员:夏梓峻孟祥飞朱小谦王文珂冯景华李菲菲温佺孙华文郭佳
申请(专利权)人:国家超级计算天津中心
类型:发明
国别省市:天津,12

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

1