CN115344383A - 一种基于进程并行的流线可视化并行加速方法 - Google Patents
一种基于进程并行的流线可视化并行加速方法 Download PDFInfo
- Publication number
- CN115344383A CN115344383A CN202210979580.8A CN202210979580A CN115344383A CN 115344383 A CN115344383 A CN 115344383A CN 202210979580 A CN202210979580 A CN 202210979580A CN 115344383 A CN115344383 A CN 115344383A
- Authority
- CN
- China
- Prior art keywords
- parallel
- flow field
- data
- integral
- data block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于进程并行的流线可视化并行加速方法,首先通过KD树将由流场网格点组成的大规模数据块进行划分,划分后的叶节点和内部节点信息进行存储,并将得到的小数据块,通过多个进程并行读取流场网格点数据并汇总。其次按设置的进程数,均匀分配数据块,为每一个数据块设置ID,并对应各自的进程号。然后每个进程计算各自数据块的边界值,并将边界值汇总到0号进程,0号进程将边界信息发送给其它进程。最后通过设定的积分步数,对积分任务量在进程间再分配,再分配完成后,开始下一轮积分计算,直到所有积分计算完成为止,再将计算结果可视化。本发明提高流线生成方法的并行加速比,加速流线可视化的过程。
Description
技术领域
本发明属于并行计算领域,具体涉及一种基于进程并行的流线可视化并行加速方法。
背景技术
科学可视化是将复杂的数据以视觉形式展示的方法。根据数值模拟产生的数据场的不同,可分为标量场可视化、矢量场可视化和张量场可视化。流场是一种应用最为广泛的矢量场,通过将流场的可视化,便于人们观察那些难以用肉眼观察的流体运动。
流场可视化有多种实现方法,其中流线可视化技术以其简单直观、交互性强的特点被广泛应用于工程中。通过流线描述粒子在流场中的运动轨迹,表现流场中的流体运动规律。
流线可视化中有基于数值积分和基于流函数的流线生成方法。其中基于数值积分的流线生成法最为常用。该方法通过确定一个种子点,然后积分得到固定时间步长下点的位置后,并将这些点连接后得到流线。
随着可视化技术和高性能计算的快速发展,数值模拟的数据规模不断扩大,模拟的几何外形复杂化,以及人们对CFD(计算流体动力学)应用需求日益增加。需要一种方法更加快速的从模拟数据中通过流线的可视化获取流场的特征,而传统的串行求解算法早已无法满足人们对大数据下数据实时性的需求。因此对算法的并行化、计算的负载均衡等等是进一步突破的方向。
传统的流线算法,流线粒子的积分过程无法实现数据并行;大规模的数据分组划分后,又可能导致负载不均衡,影响计算速率。如何充分利用高性能计算机,结合其体系特征,优化并行流线算法,加速其计算过程,是需要考虑的一个问题。许多并行算法主要从线程并行的角度去考虑,很少探索进程级别的并行性。
发明内容
本发明为了解决上述问题,提出了一种基于进程并行的流线可视化并行加速方法。在流线生成算法采用数值积分法的前提下,在进程内线程并行的基础上,采用进程并行,从并行数据读取与积分阶段负载均衡的角度优化流线算法,提高流线生成算法的并行加速比,加速流线可视化过程。
具体操作步骤如下:
步骤1,流场网格点划分阶段。通过KD树将由流场网格点组成的大规模数据块进行划分,将划分后的叶节点和内部节点信息进行存储。
步骤1.1,由流场网格点构成数据集,为数据集的每个流场网格点建立索引,并统计流场网格点数量。
步骤1.2,读取流场网格点坐标数据,按坐标的维度拆分坐标信息,并存储。
步骤1.3,按照每个维度的数值信息排序。
步骤1.4,确定KD树的最大划分层级。
步骤1.5,按x、y、z轴的顺序,循环进行层级划分。
步骤1.6,存储划分后的叶节点和内部节点信息。
步骤2,按照步骤1得到大规模数据块划分后的若干个小数据块,再通过多个进程进行并行读取流场网格点数据。流场网格点数据全部读取完成之后,再将数据汇总。
步骤3,流场网格点数据读取完成之后,按系统设置的进程数,均匀分配数据块,相邻的数据块分给同一个进程。
步骤4,为每一个数据块设置ID,并对应各自的进程号Pi。每个进程计算各自管理的数据块的边界值,全部计算完之后,将边界值汇总到0号进程。0号进程将边界信息发送给其它进程。使其它进程除了管理各自的数据块,还有所有数据块的边界信息。
步骤5,积分计算阶段,通过设定的积分步数,每隔一定的积分步数,对积分任务量在进程间再分配。
步骤5.1,在流线积分初始化阶段,首先采用均匀布种方式,使得每个进程的初始任务量大致相同。其次,为每个种子点设置对应进程内序号。
步骤5.2,为所有进程设置一个统一的积分步数。
步骤5.3,当所有进程都达到该积分步数时,重新对积分任务量进行分配。当种子点到达临界点或超出数据块边界,则为到达积分终点,减少该进程积分任务;当种子点运动到进程中的其它数据块上,直接访问即可,不改变任务量;当种子点运动到其他进程中的数据块时,将该种子点的坐标信息通过0号进程汇总,传递给越界后的数据块对应进程,使得原进程任务量减少,越界后的数据块对应的进程任务量增加,总任务量不改变。
步骤6,再分配完成后,开始下一轮积分计算,直到所有积分计算完成为止。
步骤7,将计算结果可视化,显示流场中粒子的运动轨迹。
本发明有益效果:本发明基于流线可视化中的数值积分法这一流线生成方法,通过大规模数据块划分,流场网格点数据并行读取以及在积分阶段负载均衡优化,提高流线生成方法的并行加速比,加速流线可视化的过程。
附图说明
图1是本发明的总体流程示意图;
图2是本发明的KD树算法划分数据块的划分示例图;
图3是本发明的流场网格点数据读取流程图;
图4是本发明的进程分配方法图;
图5是本发明的进程间信息传递的方式图。
具体实施方式
如图1所示,为整个优化方法的流程图,具体按照以下步骤实施:
步骤1,流场网格点划分阶段。通过KD树将流场网格点组成的大规模的数据块进行划分,将划分后的结果的叶节点和内部节点信息进行存储。
步骤1.1,由流场网格点构成数据集,通过vtk软件中的方法为数据集的每一个网格点构造索引,便于快速访问,并统计流场网格点数量。
步骤1.2,读取网格点的坐标数据,按照x、y、z三个维度,对网格点的坐标进行拆分,得到3个维度的数组,并存储。
步骤1.3,按照每个维度的数值信息排序。
步骤1.4,由于KD树的父节点有且仅有两个子节点,当流场网格点的个数为N时,KD树的最大划分层级maxLevel如公式(1)所示,后续步骤的划分层级必须小于maxLevel的值。
maxLevel=log2(N+1) (1)
步骤1.5,按x维度的坐标,取中位数,对应的流场网格点作为KD树的根节点(为第一个划分层级),垂直于x轴作一个超平面,划分得到两个子区域;然后对每一个子区域,按y维度的坐标,取中位数,对应的流场网格点作为根节点的其中一个子节点(为第二个划分层级),垂直于y轴,作一个超平面,划分又各自得到两个子区域;然后按z维度,做同样的操作,得到第三个划分层级,最后再回到x维度,不断循环划分,划分层级数需小于步骤1.4计算得到的maxLevel的值。由此划分得到的若干子区域,且子区域中的流场网格点数量大致相同。根据预分配的进程数,当划分的子区域数为进程数一定的倍数时,停止划分。如图2所示,为一个划分的示例,点虚线为第一级划分的1个超平面,加粗的实线为第二级划分的2个超平面,短横虚线为第三级划分的4个的超平面,由此3级划分可生成8个子区域。
步骤1.6,对划分后的叶节点和内部节点信息进行存储。
步骤2,按照步骤1划分得到数据块结果,平均分配给若干个进程,通过多个进程进行并行读取流场网格点数据,包括网格点坐标、网格点所属网格的几何信息以及网格点连接信息。当网格点数据全部读取完成之后,再将数据汇总,便于后续操作。流程图如图3所示。
步骤3,网格点数据读取完成之后,按系统设置的进程数,均匀分配数据块,把相邻的数据块分配给同一个进程,以减少积分点在数据块间移动带来的进程通信时延。如图4所示为一个进程分配两个数据块的示例。
步骤4,为每一个数据块设置ID,并将其和各自的进程号Pi对应起来。计算各个数据块的边界值。设置0号进程为同步进程,用于汇总每个进程计算得到的边界值。然后0号进程将每个进程负责的边界信息发送给其它所有进程。因此,每一个其它进程除了管理各自的数据块,还有所有数据块的边界信息。根据该边界信息可以确定当前积分点所在的位置,并通过该数据块找到对应的进程号。
步骤5,积分计算阶段。通过设定的积分步数,每隔一定的积分步数,对积分任务量在进程间再分配。
步骤5.1,在流线积分初始化阶段。首先采用均匀布种方式,使得每个进程的初始任务量大致相同。其次,为每个种子点设置对应进程内序号,以此确定该种子点位于哪个进程内。初始状态下的任务总量等于所有进程内种子点数量之和。
步骤5.2,为所有进程设置一个统一的积分步数,设置为1000。
步骤5.3,由于不同进程内积分情况不同,需通过同步方法,等待所有进程都达到积分步数1000时再重新分配积分任务量。
重新分配时,根据种子点迭代计算积分时会发生的以下三种情况来分配。当种子点到达临界点或超出数据集边界,则判定到达积分终点,并减少该进程内对应的积分任务;当积分点运动到进程中的其它数据块上,由于在同一个进程内,进程内线程共享同一块内存,直接访问即可,此时任务量不改变;当种子点运动到其他进程中的数据块,需要将该种子点的坐标信息汇总给0号进程,通过0号进程将该信息传递给越界后的数据块对应进程。使得原进程的任务量减少,越界后的数据块对应的进程任务量增加,但总任务量不改变。如图5所示,为0号进程和其他进程之间的信息传递方式。
步骤6,完成再分配后,开始下一轮积分计算,达到积分步数值后,再重新分配任务,直到所有积分计算完成为止。
步骤7,将计算结果可视化,显示流场中粒子的运动轨迹。
实验部分如下:
设置3个千万级别网格数量的数据集。
(1)并行读取数据实验:在1,2,4,8,16,32,64个进程下测试发现随着进程数的增加,并行读取流场网格点数据的时间逐步减少,在64个进程下并行读取数据,比1个进程下读取(相当于串行读取)速度快20-30倍。
(2)负载均衡实验:以所有进程间网格数量的最大差值作为衡量负载均衡性能的标准。差值越小表示负载均衡性能越好。在2,4,8,16,32,64个进程下对3个数据集测试发现最大网格数量差值在百千数量级,与原始网格千万数量级相比,占比很小,说明负载均衡性能较好。
(3)方法运行时间实验:设置1024个种子点,在1,2,4,8,16,32,64个进程下比较本方法执行时间。随着进程数的增加,本方法执行时间逐步变小,在64个进程下并行执行方法,比串行执行方法速度快数十倍。
Claims (8)
1.一种基于进程并行的流线可视化并行加速方法,其特征在于包括如下具体操作步骤:
步骤1,流场网格点划分阶段,通过KD树将由流场网格点组成的大规模数据块进行划分,将划分后的叶节点和内部节点信息进行存储;
步骤2,按照步骤1得到大规模数据块划分后的若干个小数据块,再通过多个进程并行读取流场网格点数据;
流场网格点数据全部读取完成之后,再将数据汇总;
步骤3,按系统设置的进程数,均匀分配数据块;
步骤4,为每一个数据块设置ID,并对应各自的进程号Pi;
每个进程计算各自管理的数据块的边界值,全部计算完之后,将边界值汇总到0号进程;
0号进程将边界信息发送给其它进程;
步骤5,积分计算阶段,通过设定的积分步数,对积分任务量在进程间再分配;
步骤5.1,在流线积分初始化阶段,首先采用均匀布种方式,使每个进程的初始任务量相同;
其次,为每个种子点设置对应进程内序号;
步骤5.2,为所有进程设置一个统一的积分步数;
步骤5.3,当所有进程都达到该积分步数时,重新对积分任务量进行分配;
当种子点到达临界点或超出数据块边界,则为到达积分终点,减少该进程积分任务;
当种子点运动到进程中的其它数据块上,直接访问即可,不改变任务量;
当种子点运动到其他进程中的数据块时,将该种子点的坐标信息通过0号进程汇总,并传递给越界后的数据块对应进程,原进程任务量减少,越界后的数据块对应的进程任务量增加,总任务量不改变;
步骤6,再分配完成后,开始下一轮积分计算,直到所有积分计算完成为止;
步骤7,将计算结果可视化,显示流场中粒子的运动轨迹。
2.根据权利要求1所述的一种基于进程并行的流线可视化并行加速方法,其特征在于:步骤1具体包括:
步骤1.1,由流场网格点构成数据集,为数据集的每个流场网格点建立索引,并统计流场网格点数量;
步骤1.2,读取流场网格点坐标数据,按坐标的维度拆分坐标信息,并存储;
步骤1.3,按照每个维度的数值信息排序;
步骤1.4,确定KD树的最大划分层级;
步骤1.5,按x、y、z轴的顺序,循环进行层级划分;
步骤1.6,存储划分后的叶节点和内部节点信息。
3.根据权利要求2所述的一种基于进程并行的流线可视化并行加速方法,其特征在于:步骤1.2中所述维度是x、y、z三个维度。
4.根据权利要求2所述的一种基于进程并行的流线可视化并行加速方法,其特征在于:步骤1.4中所述最大划分层级maxLevel=log2(N+1),其中N为流场网格点的个数。
5.根据权利要求4所述的一种基于进程并行的流线可视化并行加速方法,其特征在于:步骤1.5中所述划分的层级必须小于最大划分层级maxLevel的值。
6.根据权利要求2所述的一种基于进程并行的流线可视化并行加速方法,其特征在于:步骤1.5中当划分后得到的子区域为进程数一定的倍数时,停止划分。
7.根据权利要求1所述的一种基于进程并行的流线可视化并行加速方法,其特征在于:步骤2中所述流场网格点数据包括网格点坐标、网格点所属网格的几何信息以及网格点连接信息。
8.根据权利要求1所述的一种基于进程并行的流线可视化并行加速方法,其特征在于:在步骤3中相邻的数据块分配给同一个进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210979580.8A CN115344383A (zh) | 2022-08-16 | 2022-08-16 | 一种基于进程并行的流线可视化并行加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210979580.8A CN115344383A (zh) | 2022-08-16 | 2022-08-16 | 一种基于进程并行的流线可视化并行加速方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115344383A true CN115344383A (zh) | 2022-11-15 |
Family
ID=83952666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210979580.8A Pending CN115344383A (zh) | 2022-08-16 | 2022-08-16 | 一种基于进程并行的流线可视化并行加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344383A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116755636A (zh) * | 2023-08-16 | 2023-09-15 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种网格文件的并行读入方法、装置、设备及存储介质 |
-
2022
- 2022-08-16 CN CN202210979580.8A patent/CN115344383A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116755636A (zh) * | 2023-08-16 | 2023-09-15 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种网格文件的并行读入方法、装置、设备及存储介质 |
CN116755636B (zh) * | 2023-08-16 | 2023-10-27 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种网格文件的并行读入方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10685067B2 (en) | Data visualization system | |
CN110222029A (zh) | 一种大数据多维分析计算效率提升方法及系统 | |
EP3079060A1 (en) | Load balancing for large in-memory databases | |
Morozov et al. | Efficient delaunay tessellation through KD tree decomposition | |
CN115437795B (zh) | 一种异构gpu集群负载感知的显存重计算优化方法及系统 | |
CN115344383A (zh) | 一种基于进程并行的流线可视化并行加速方法 | |
HajKacem et al. | Overview of scalable partitional methods for big data clustering | |
Boukhdhir et al. | An improved MapReduce Design of Kmeans for clustering very large datasets | |
CN115994197A (zh) | GeoSOT网格数据计算方法 | |
CN107506388A (zh) | 一种面向Spark并行计算框架的迭代式数据均衡优化方法 | |
Brown et al. | A distributed density-grid clustering algorithm for multi-dimensional data | |
Chatterjee et al. | Counting problems on graphs: GPU storage and parallel computing techniques | |
Buhaienko et al. | Analysis of clustering algorithms for use in the universal data processing system | |
CN116523640A (zh) | 一种基于调度反馈算法的金融信息管理系统 | |
Nirmal et al. | Issues of K means clustering while migrating to map reduce paradigm with big data: A survey | |
Slimani et al. | K-MLIO: enabling k-means for large data-sets and memory constrained embedded systems | |
CN116303219A (zh) | 一种网格文件的获取方法、装置及电子设备 | |
CN104156268B (zh) | 一种GPU上MapReduce的负载分配和线程结构优化方法 | |
CN108171785B (zh) | 用于光线跟踪的sah-kd树设计方法 | |
CN112948643B (zh) | 一种基于线程并行的结构化网格流线积分方法 | |
Yang et al. | A fast and efficient grid-based K-means++ clustering algorithm for large-scale datasets | |
Liu et al. | A clustering algorithm for automatically determining the number of clusters based on coefficient of variation | |
CN105955825B (zh) | 优化天文学软件gridding的方法 | |
Yang et al. | Research on cloud computing task scheduling based on improved evolutionary algorithm | |
Tzovas et al. | Distributing sparse matrix/graph applications in heterogeneous clusters-an experimental study |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |