一种降雨型滑坡模型TRIGRS的并行优化方法及系统与流程

文档序号:22125626发布日期:2020-09-04 17:17阅读:1002来源:国知局
一种降雨型滑坡模型TRIGRS的并行优化方法及系统与流程

本发明属于降雨诱发型滑坡预测技术领域,涉及一种降雨型滑坡模型trigrs的并行优化方法,尤其涉及一种基于openmp和mpi的降雨型滑坡模型trigrs的并行优化方法及系统。



背景技术:

目前,滑坡是指边坡上的岩土体由于受到自然或人为的影响,在重力作用下失去原来的稳定状态,沿边坡向下滑动、脱落。滑坡是主要地质灾害之一,在全球范围内发生频繁且具有突发性,广泛分布于高山、中山和低山丘陵带。全球滑坡面积达370万平方千米,约5%的世界人口面临滑坡风险。造成滑坡的因素有很多,如强降雨、地震、人类活动等,而降雨已成为其中的一大主因,在我国,降雨诱发型滑坡发生次数是历史上发生滑坡次数的60%。因此,对降雨诱发型滑坡进行预测、防控显得尤为重要。

目前,对降雨型滑坡进行预测的研究方法可以分为三类:基于经验、基于统计分析、动力学模型。基于经验的方法主要通过分析降雨特征如:降雨强度、历时和累积雨量来获得诱发滑坡的降雨强度临界值,此方法只能用于特定的区域且存在很大的主观性。基于统计分析的模型包括贝叶斯、回顾分析、神经网络等,在很大程度上降低了主观性,但仅仅是从数据层面建模,无法对滑坡发生的机理进行解释。基于动力学的模型则从滑坡发生的物理机制出发,考虑地理、地质和水文特征,模拟真实降雨和边坡变化过程,更加贴合实际,预测的结果也更准确。此类模型的代表有shalstab(shallowlandslidestabilitymodel)、sinmap(stabilityindexmapping)、trigrs(transientrainfallinfiltrationandgrid-basedregionalslope-stabilitymodel),trigrs在前两个模型的基础上考虑了瞬态降雨入渗和不同阶段的降雨强度。parkdw等人将同类模型如slip(shallowlandslidesinstabilityprediction)、shalstab、sinmap、lisa与trigrs作比较,发现trigrs对边坡稳定性的评估结果更好。鉴于此,trigrs模型被国内外学者广泛应用于各种降雨型滑坡研究中。kimd等人用trigrs来研究韩国某山区1998年由于强降雨发生的一次滑坡,利用该模型描述了所划分的每个小区域安全系数随降雨强度的变化过程,并将trigrs预测的滑坡区域和实际发生滑坡的区域相比较,发现两者结果达到了64.1%的匹配度。saadatkhahn等人以hulukelang在2008年和2009年雨季发生的滑坡为例,通过trigrs计算该区域的安全系数,探究滑坡发生的敏感区。wangj等人将统计矩的点估计法和trigrs模型结合,得出降雨量对缓坡和陡坡稳定性影响不同的结论。sugiartik等人讨论了目前trigrs的应用、不足和改进,并列举了若干例子进行说明。

瞬态降雨入渗的区域斜坡稳定性计算模型(trigrs)是一种被广泛应用的降雨型滑坡模型,但由于trigrs的运算基于数据量很大的栅格数据,并且要进行复杂的数值模拟运算,整个运算过程要耗费很长时间,无法满足实时的预测需要。在当前高性能计算机集群、并行编程、分布式计算等并行软硬件技术不断发展的情况下,本发明考虑对此模型的并行计算,以提高模型运行速度。

综上所述,现有技术存在的问题是:(1)现有基于经验的对降雨型滑坡进行预测的方法只能用于特定的区域且存在很大的主观性。

(2)现有基于统计分析的模型仅仅是从数据层面建模,无法对滑坡发生的机理进行解释。

(3)现有trigrs模型的运算基于数据量很大的栅格数据,并且要进行复杂的数值模拟运算,整个运算过程要耗费很长时间,无法满足实时的预测需要。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种降雨型滑坡模型trigrs的并行优化方法及系统。

本发明是这样实现的,一种降雨型滑坡模型trigrs的并行优化方法,包括以下步骤:

步骤一,利用mpi对栅格数据进行初次划分后,使用openmp对每个进程负责的栅格数据再次划分,实现线程级别的并行;

步骤二,使用mpi分别对主程序中的文件写入部分和用于计算径流渗透并输出实际渗透率的子程序rnoff部分进行并行;

步骤三,通过三组不同数据集并行策略的有效性进行验证,并对验证区域的最小安全系数进行可视化展示。

进一步,步骤一中,利用trigrs并行程序进行输入、计算、输出,对栅格数据再次划分,具体包括:

(1)主进程对输入文件进行读取,将所读取数据存储到对应的变量、数组;然后,主进程通过mpi_bcast函数将数据广播给其他进程,实现所有进程都拥有计算所需要的数据;

(2)对栅格单元进行分块,使每个进程负责计算一部分的栅格数据,每个进程的计算并行进行,读取步骤(1)存储到一维数组中的栅格数据,对栅格数据进行idsp和isct数组数据分块,idsp存储每个进程所负责数据在数组中的起始位置,isct存储每个进程所负责的数据量大小;当每个进程计算结束后,通过mpi_gatherv和mpi_reduce将结果整合到主进程中;

(3)主进程负责将结果写入输出文件。

进一步,trigrs的输入数据包括数字高程、坡度、降雨强度栅格数据,和土质、水文物理参数和模型所需的控制参数;

所述trigrs包括入渗模型、水文模型和边坡稳定性模型;

水文模型模拟地表径流,在当前时间内无法及时入渗的降雨都以地表径流的方式直接流向当前栅格的下游栅格中,使径流在每个运算时间域内的质量守恒;

入渗模型包括稳定入渗和瞬时入渗,在瞬时降雨入渗模型基础上耦合降雨入渗和瞬态孔隙水压力的变化模型,用于分析底层处于饱和或接近饱和时发生的滑坡,或用于分析非饱和地层由于雨水入渗导致地下水位抬升时发生的滑坡;

边坡稳定性模型,用于计算不同降雨阶段每个栅格的安全系数,预测边坡的稳定性。

进一步,入渗模型计算两种基岩边界:(1)基岩渗透性与土体相同(2)基岩渗透性小于土体渗透性,第(2)类基岩边界在有限深度随不同降雨强度和历时变化的孔隙水压力关系函数,表达式为:

式中,t为计算ψ的总时间;z为竖直方向上的土层厚度,z=z/cosα,z为垂直于坡面方向的土层厚度;d为稳定状态下测量得到的竖向地下水位埋深;ks为饱和竖直渗透系数;inz为第n时段的降雨强度下对应的地表入渗量;β=cos2α-(izlt/ks),izlt为稳定(初始)的地表入渗量,一般可以根据近几周或几个月的平均降雨量来获得;d1=d0/cos2α,d0为饱和水力扩散系数(d0=ks/ss,ss为比储水系数);n为降雨历时间隔总数;h(t-tn)为海维塞德阶跃函数,tn为降雨期内第n阶段的降雨历时;

ierfc(η)函数的表达式为:

式中,erfc(η)为互补误差函数。第一类的计算过程可参考baumr.l的研究。

边坡稳定性模型,结合地下水孔隙水压力的变化,得到不同深度z处栅格单元体稳定性的表达式为:

式中,c′为土壤有效黏聚力,为土壤有效内摩擦角,γw为水容重,γs为土壤天然容重。ψ(z,t)是孔隙水压力;根据fs值大小将评价结果分为高易发区、中易发区、低易发区和较稳定区4级;当fs值小于1时,则认为该栅格处于很不稳定状态,属于为高易发区;当fs值大于1小于2时,属于中易发区;当fs值大于1.2小于1.5时,属于低易发区;当fs值大于1.5时,则属于较稳定区。

进一步,步骤二中,所述主程序中的文件写入部分和子程序rnoff部分都有一个do循环,前者的循环次数由参数nout决定,后者的循环次数由nper决定,nout是在初始化文件中设置的需要输出的降雨时刻的数量;nper是降雨阶段的个数;

利用mpi对循环进行并行,优化后的程序,进程数大于nout时,则文件写入就是一次循环所花费时间;进程数小于nout时,文件写入时间缩短进程数倍。

进一步,步骤三中,所述实验评价指标包括:

(1)加速比

加速比是衡量程序并行化性能和效果的一个基本指标,其公式定义为:

其中,t1为并行前程序的运行时间,tp指当有p个处理器时并行程序的运行时间;

(2)效率

效率是由加速比派生出的一个并行性能度量指标,定义为:

效率体现的是并行后的程序在解决问题时,相比于在通信于同步上的花费,参与计算的处理器利用的程度;随着进程数的增加,通信所花费的时间占比越来越大,并行程序的效率会逐渐下降。

本发明另一目的在于提供一种所述降雨型滑坡模型trigrs的并行优化系统包括:

线程级别并行划分模块,用于利用mpi对栅格数据进行初次划分后,使用openmp对每个进程负责的栅格数据再次划分,实现线程级别的并行;

并行处理模块,用于使用mpi分别对主程序中的文件写入部分和用于计算径流渗透并输出实际渗透率的子程序rnoff部分进行并行;

可视化展示模块,用于通过三组不同数据集并行策略的有效性进行验证,并对验证区域的最小安全系数进行可视化展示。

进一步,线程级别并行划分模块包括:

对于输入模块,主进程对输入文件进行读取,将所读取数据存储到对应的变量、数组;主进程通过mpi_bcast函数将数据广播给其他进程,所有进程都拥有计算所需要的数据;

计算模块,对栅格单元进行分块,使每个进程负责计算一部分的栅格数据,每个进程的计算并行进行,读取输入模块已经被存储到一维数组中的栅格数据对栅格数据进行分块,当每个进程计算结束后,通过mpi_gatherv和mpi_reduce将结果整合到主进程中;

输出模块,由主进程负责将结果写入输出文件。

本发明另一目的在于提供一种存储在计算机可读介质上的计算机程序产品,包括计算机可读程序,供于电子装置上执行时,提供用户输入接口以实施所述的降雨型滑坡模型trigrs的并行优化方法。

本发明另一目的在于提供一种计算机可读存储介质,储存有指令,当所述指令在计算机上运行时,使得计算机执行所述的降雨型滑坡模型trigrs的并行优化方法。

综上所述,本发明的优点及积极效果为:trigrs2.1是从串行程序变成了一个mpi并行程序,其中真正用到mpi并行的是计算部分,文件读取和文件写入部分本质上还是由一个进程串行进行。同时在mpi进程通信上,存在很多冗余数据的发送和接收,这既影响通信时间,也会占用很多不必要的内存空间。基于目前版本的并行实现和存在的不足,本发明提出并行策略。

本发明提供的降雨型滑坡模型trigrs的并行优化方法,利用mpi和openmp混合编程技术对trigrs的最新并行版本作了进一步的优化。本发明主要集中优化模型的计算和文件写入部分,分别在三组不同的数据集上进行实验,以对优化效果进行评估。实验结果表明,运行速度有很大提升,优化效果显著,并且相比于原模型,优化后的模型在处理大规模数据上有更好的可扩展性。同时本发明利用arcgis软件对模型的输入和输出结果进行了可视化。

通过三组不同数据集的实验,可以发现,本发明提出的并行策略不仅取得了很好的加速效果,同时由于代码优化减少了程序的通信量,从而使得由于内存限制无法运行大数据集的原版本得以正常运行。除了验证优化效果外,本发明在深圳数据集上对该区域最小安全系数进行可视化展示,更直观地看到trigrs在现实中的应用场景。

附图说明

图1是本发明实施例提供的降雨型滑坡模型trigrs的并行优化方法流程图。

图2是本发明实施例提供的降雨型滑坡模型trigrs的并行优化系统图。

图中:1、线程级别并行划分模块;1-1、输入模块;1-2、计算模块;1-3、输出模块;2、并行处理模块;3、可视化展示模块。

图3是本发明实施例提供的trigrs框架结构图。

图4是本发明实施例提供的trigrs运行时间的模块划分示意图。

图5是本发明实施例提供的openmp+mpi混合编程模型示意图。

图6是本发明实施例提供的深圳市的地形影像、dem、坡度示意图。

图7是本发明实施例提供的数据集1在不同进程数上的实验性能示意图。

图8是本发明实施例提供的数据集1运行时间与cpu核数的关系示意图。

图9是本发明实施例提供的数据集2运行时间与线程数关系(p=10和16)示意图。

图10是本发明实施例提供的优化前后的程序运行总时间、加速比和效率示意图。

图11是本发明实施例提供的数据集2运行总时间与cpu核数的关系示意图。

图12是本发明实施例提供的降雨0hr、4hr、10hr时的最小安全系数示意图。

图13是本发明实施例提供的数据集3运行时间与进程数的关系示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

针对现有技术存在的问题,本发明提供了一种降雨型滑坡模型trigrs的并行优化方法,下面结合附图对本发明作详细的描述。

如图1所示,本发明实施例提供的降雨型滑坡模型trigrs的并行优化方法包括以下步骤:

s101,基于openmp的trigrs2.1计算部分优化:在已经用mpi对栅格数据进行划分的基础上,使用openmp对每个进程负责的栅格数据再次划分,实现线程级别的并行。

s102,使用mpi分别对主程序中的文件写入部分和用来计算径流渗透并输出实际渗透率的子程序rnoff部分进行并行。

s103,通过三组不同数据集实验,验证并行策略的有效性,并对验证区域的最小安全系数进行可视化展示。

如图2所示,本发明提供降雨型滑坡模型trigrs的并行优化系统包括:

线程级别并行划分模块1,用于利用mpi对栅格数据进行初次划分后,使用openmp对每个进程负责的栅格数据再次划分,实现线程级别的并行。

并行处理模块2,用于使用mpi分别对主程序中的文件写入部分和用于计算径流渗透并输出实际渗透率的子程序rnoff部分进行并行。

可视化展示模块3,用于通过三组不同数据集并行策略的有效性进行验证,并对验证区域的最小安全系数进行可视化展示。

线程级别并行划分模块1包括:

输入模块1-1,主进程对输入文件进行读取,将所读取数据存储到对应的变量、数组;主进程通过mpi_bcast函数将数据广播给其他进程,所有进程都拥有计算所需要的数据。

计算模块1-2,对栅格单元进行分块,使每个进程负责计算一部分的栅格数据,每个进程的计算并行进行,读取输入模块已经被存储到一维数组中的栅格数据对栅格数据进行分块,当每个进程计算结束后,通过mpi_gatherv和mpi_reduce将结果整合到主进程中。

输出模块1-3,由主进程负责将结果写入输出文件。

下面结合实施例对本发明作进一步描述。

1、trigrs

transientrainfallinfiltrationandgrid-basedregionalslope-stabilitymodel(trigrs,瞬态降雨入渗的区域斜坡稳定性计算模型)是美国地质调查局用fortran语言编写的基于栅格单元的降雨诱发型边坡稳定性计算模型。该模型经过不断的改进,目前的最新版本是trigrs2.1。trigrs2.1除了对之前版本中的代码错误、公式等进行修正外,最大的改进就是使用mpi做了并行化,从而缩短了该模型的运行时间。

trigrs可以模拟、分析土壤在饱和状态和不饱和状态下,降雨强度发生变化的真实降雨过程引起的瞬态孔隙水压力的变化和边坡安全系数的变化,整体可分为:输入模块、计算模块、输出模块,其框架如图3所示。trigrs的输入数据分为两类:一类是dem(digitalelevationmodel,数字高程)、坡度、降雨强度等栅格数据,另一类是土质、水文等物理参数和模型所需的控制参数。trigrs对两种输入数据的读取均是通过一个初始化文件。trigrs读取输入数据后,进入计算部分,最后将计算的孔隙水压力、安全系数等结果进行写入到输出文件。

trigrs由入渗模型、水文模型和边坡稳定性模型三个子模型组成。水文模型模拟的是地表径流,trigrs假设在当前时间内无法及时入渗的降雨都以地表径流的方式直接流向当前栅格的下游栅格中,从而保证径流在每个运算时间域内的质量守恒。

入渗模型包含稳定入渗和瞬时入渗,该子模型是baum在iverson提出的瞬时降雨入渗模型基础上耦合了降雨入渗和瞬态孔隙水压力的变化模型,从而使该模型既可以分析底层处于饱和或接近饱和时发生的滑坡,也可以分析非饱和地层由于雨水入渗导致地下水位抬升时发生的滑坡。trigrs可计算两种基岩边界:(1)基岩渗透性与土体相同(2)基岩渗透性小于土体渗透性,其中第二类基岩边界在有限深度随不同降雨强度和历时变化的孔隙水压力关系函数,其表达式为:

式中,t为计算ψ的总时间;z为竖直方向上的土层厚度,z=z/cosα,z为垂直于坡面方向的土层厚度;d为稳定状态下测量得到的竖向地下水位埋深;ks为饱和竖直渗透系数;inz为第n时段的降雨强度下对应的地表入渗量;β=cos2α-(izlt/ks),izlt为稳定(初始)的地表入渗量,一般可以根据近几周或几个月的平均降雨量来获得;d1=d0/cos2α,d0为饱和水力扩散系数(d0=ks/ss,ss为比储水系数);n为降雨历时间隔总数;h(t-tn)为海维塞德阶跃函数,tn为降雨期内第n阶段的降雨历时。

ierfc(η)函数的表达式为:

式中,erfc(η)为互补误差函数。第一类的计算过程可参考baumr.l的研究。

边坡稳定性模型假设无限边坡,在整个降雨过程中,该模型计算不同降雨阶段每个栅格的安全系数,从而预测边坡的稳定性。以莫尔-库仑破坏准则为理论基础,结合地下水孔隙水压力的变化,得到不同深度z处栅格单元体稳定性的表达式为:

式中,c′为土壤有效黏聚力,为土壤有效内摩擦角,γw为水容重,γs为土壤天然容重。ψ(z,t)是孔隙水压力。结合相关研究,根据fs值大小将评价结果分为高易发区、中易发区、低易发区和较稳定区4级。当fs值小于1时,则认为该栅格处于很不稳定状态,属于为高易发区;当fs值大于1小于2时,属于中易发区;当fs值大于1.2小于1.5时,属于低易发区;当fs值大于1.5时,则属于较稳定区。

1.2trigrs2.1代码结构

alvioli利用mpi对trigrs作了并行,形成trigrs2.1版本。并行程序对应输入、计算、输出模块,相应的运行时间也被划分为三个部分,如图4所示。

对于输入模块,首先,主进程对输入文件进行读取,将所读取数据存储到对应的变量、数组;然后,主进程通过mpi_bcast函数将数据广播给其他进程,从而所有进程都拥有了计算所需要的数据。

对于计算模块,由于trigrs的计算基于栅格单元,每个栅格的计算相互独立,互不影响,因此对栅格单元进行分块,从而使每个进程负责计算一部分的栅格数据,每个进程的计算并行进行。在输入模块中,读取的栅格数据已经被存储到了一维数组中,因此对栅格数据的分块实际上是对数组的划分。trigrs2.1通过两个数组idsp和isct来实现数据分块,前者存储每个进程所负责数据在数组中的起始位置,后者存储每个进程所负责的数据量大小。最后,当每个进程计算结束后,通过mpi_gatherv和mpi_reduce将结果整合到主进程中。

对于输出模块,由主进程负责将结果写入输出文件。

综上来看,trigrs2.1是从串行程序变成了一个mpi并行程序,其中真正用到mpi并行的是计算部分,文件读取和文件写入部分本质上还是由一个进程串行进行。同时在mpi进程通信上,存在很多冗余数据的发送和接收,这既影响通信时间,也会占用很多不必要的内存空间。基于目前版本的并行实现和存在的不足,本发明提出了自己的并行策略。

2、并行策略

2.1openmp并行

openmp是一种基于共享内存并行系统的多线程程序设计方案,本发明使用openmp对trigrs2.1的计算部分优化,即在已经用mpi对栅格数据进行划分的基础上,使用openmp对每个进程负责的栅格数据再次划分,实现线程级别的并行,如图5所示。在openmp并行中,同属于一个进程的线程共享该进程的内存,因此额外消耗的通信和空间开销也较少。

2.2mpi并行

本发明使用mpi对程序的两处进行并行,分别是主程序中的文件写入部分和用来计算径流渗透并输出实际渗透率的子程序rnoff。两者都有一个do循环,前者的循环次数由参数nout决定,后者的循环次数由nper决定,nout是在初始化文件中设置的需要输出的降雨时刻的数量;nper是降雨阶段的个数。本发明利用mpi对循环进行并行,主程序的文件写入部分并行后伪代码如下所示。

优化后的程序,当进程数大于nout时,则文件写入就是一次循环所花费时间;当进程数小于nout时,文件写入时间也缩短了进程数倍。子程序rnoff中实现的方式和效果与此类似。在用mpi并行的过程中,本发明发现mpi通信中存在很多不必要的mpi-reduce操作,将它们换成mpi_gatherv后达到了同样的目的,并且数据通信量也得以减少。

3、实验及结果

3.1实验数据

本发明共用了三组数据进行实验。数据集1和数据集3所用的dem数据来自srtm1下载的中国中部某矩形区域,数据集2是深圳市的数据,深圳全境地势东南高,西北低,土地形态大部分为低山、平缓台地和阶地丘陵,土壤质地以砂壤和轻壤土为主,降雨比较丰富,发生滑坡的可能性较大。深圳市的dem数据从水经注地图下载器软件下载,三个数据集的具体信息如表1所示。

表1数据集信息

数据集2所用的水土、降雨等物理参数以深圳市的真实数据为参考,因此程序运行的结果有一定的实际意义。同时数据集1、3与2相比,栅格数据里全部是有效值,而数据集2由于是深圳市这样的不规则区域,栅格数据中包含很多无效值,增加了运算的复杂性。在此,本发明将数据集2所涉及的各种数据作以详细说明。trigrs输入所需的水土参数如表2所示。

表2数据集2的水土参数

降雨数据以深圳市龙岗区7月21号和22号的降雨数据作为参考,在本发明中,分为5个降雨密度不同的降雨阶段,每个阶段时长为2小时,如表3所示。

表35个降雨阶段的降雨密度

以dem数据作为基础,利用arcgis可以生成trigrs输入所需的坡度、流向文件,图6(a)、(b)、(c)分别展示了深圳市的地形影像、dem、坡度情况,其余的输入文件和模型控制参数则根据要求设置生成。

3.2实验评价指标

3.2.1加速比

加速比是衡量程序并行化性能和效果的一个基本指标,其公式定义为:

其中,t1为并行前程序的运行时间,tp指当有p个处理器时并行程序的运行时间,显然加速比越大,并行效果就越好。

3.2.2效率

效率是由加速比派生出的一个并行性能度量指标,定义为:

效率体现的是并行后的程序在解决问题时,相比于在通信于同步上的花费,参与计算的处理器利用的程度。一般情况下,随着进程数的增加,通信所花费的时间占比越来越大,并行程序的效率会逐渐下降。

3.3实验结果

本发明在广州超算平台天河2号的bigdata分区完成所有实验,在此平台下用户最多可使用64个节点,每个节点配备2个intel(r)xeon(r)cpue5-2692v2@2.20ghz,每个cpu有12个核。每个节点安装redhatenterpriselinuxserverrelease6.5(santiago)操作系统,其他一些必要的软件是:gcc-4.8.5,mpich3.2.1,gsl/2.4-gcc-4.8.5。

3.3.1数据集1实验结果

在数据集1上,本发明分别探究了计算时间、文件写入时间、文件读取时间、总时间在优化前后的变化情况,如图7(a)所示。总体来看,优化后的每部分时间相比于优化前都有了明显的缩短。优化前的程序在进程数到达12以后,运行总时间和计算时间下降幅度很小,这是因为虽然随着进程数的增加,参与计算的部分执行越快,但与此同时通信的时间占比越来越大,导致整体的优化效果不佳。由于优化后的程序实现了线程上的并行,计算部分大幅度下降,从而使优化后程序的计算时间和总时间从一开始就很短,并且一直保持平缓的下降趋势。优化前的文件写入时间与进程数无关,优化后的文件写入时间则由于多进程并行写入成倍减少。图8展示了优化前后的各部分时间随cpu核数的变化情况,整体的变化趋势与进程相同,要注意的一点就是,优化前的程序由于单节点内存的限制只能测到64个核。

本发明以图7(b)展示优化效果。可以看出,加速比呈现出先上升后下降的趋势,加速比最大接近9,在进程数为8时达到,之后缓慢下降,但保持在5左右。

如图7(c)所示,优化的效率是不断降低的,最后接近于零,这也和运行时间和加速比的变化相符合,当超过一定的进程数时,再增加进程数,所增加的额外优化效果是很小的。

3.3.2数据集2实验结果

为了确定数据集2中的最优线程数设置,本发明测试了在进程数分别为10和16时,设置不同线程数的程序运行的总时间,图9为实验结果。从图中可以看出,当线程数设置为8时,运行时间最少,因此在测试运行时间与进程数关系的实验中,设置线程数为8。数据集1中也采用与此相同的方法得出数据集1的最优线程数设置为16。

图10展示了优化前后的程序运行总时间、加速比和效率。从图10(a)可以看出,进程数6是一个分界点,当进程数小于6时,优化前后的运行总时间随进程数的增加快速下降;当进程数大于6时,则下降得十分缓慢。从图10(b)可以看出,优化后较优化前相比最多有将近6倍的速度提升,同时加速比呈现出稳定在5左右的一个状态。从图10(c)来看,优化的效率随进程数增加而不断减小,这也是因为随着进程数的增加,每个处理器负责的计算部分越来越少,同时进程间的通信量不断增大,耗费很多时间。和数据集1相比,数据集2中计算时间在总时间的占比较小,优化计算部分带来的性能提升较小,最终的加速比就较小。

图11展示了优化前后运行时间随cpu核数的变化情况,两者的运行时间变化趋势基本相同,都随cpu核数的增加而逐渐减小,同时减小量也逐渐减少。

本发明将trigrs模型输出的安全系数利用arcgis软件进行可视化,如图12所示,从左至右分别对应降雨前、降雨4小时、降雨10小时深圳每个栅格单元的安全系数,从而可以看到该区域稳定性的变化情况。从可视化的结果来看,区域的安全系数分区情况变化并不明显,这是因为(1)该区域降雨前主要是滑坡高易发区和较稳定区,中易发区和低易发区很少;(2)高易发区在降雨后安全级别不会改变;(3)根据初始参数计算,该区域较稳定区的安全系数很大,降雨后,根据trigrs计算得到的安全系数虽然有所下降,但是还是大于1.5,安全级别也没发生改变,仍然属于较稳定区。

3.3.3数据集3实验结果

数据集3用于验证优化后程序的可扩展性。优化前的程序由于存在多个栅格总数倍数大小的数组的mpi_reduce操作,在运行中由于内存的限制无法正常运行。而优化后的程序由于前述的mpi改进,则可以正常运行该数据量级别的数据集。实验结果如图13所示,两个时间的变化趋势十分一致,这是因为当进程数超过输出文件的个数时,写文件所花的时间基本不会变,即为一个进程写文件。

4、本发明利用openmp和mpi混合编程技术对trigrs模型进行了进一步优化。通过三组不同数据集的实验,可以发现,本发明提出的并行策略不仅取得了很好的加速效果,同时由于代码优化减少了程序的通信量,从而使得由于内存限制无法运行大数据集的原版本得以正常运行。除了验证优化效果外,本发明在深圳数据集上对该区域最小安全系数进行可视化展示,更直观地看到trigrs在现实中的应用场景。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1