一种CUDA架构D8算法的水域流向和累积汇流量并行分析方法技术

技术编号:32290647 阅读:154 留言:0更新日期:2022-02-12 19:59
本发明专利技术提供一种CUDA架构D8算法的水域流向和累积汇流量并行分析方法,包括:基于GPU纹理存储器构建流域DEM栅格数据的读取存储模型;基于GPU全局存储器,设置并行网格和线程块,映射线程到DEM栅格单元,获取当前线程身份识别号;各线程根据读取存储模型连续拾取DEM栅格数据的中心栅格及相邻栅格高程值;根据中心栅格及相邻栅格高程值计算最大距离权落差,根据最大距离权落差确定中心栅格流向;根据中心栅格流向构建流向栅格单元,映射线程到流向栅格单元,读取线程身份识别号和流向;各线程依循流向开展串行汇流计算,获取累积汇流量矩阵。本发明专利技术提出了一种CUDA环境下D8算法快速运算的并行方法,解决了D8并行算法并行运算栅格像元访问和运算冲突问题。像元访问和运算冲突问题。像元访问和运算冲突问题。

【技术实现步骤摘要】
一种CUDA架构D8算法的水域流向和累积汇流量并行分析方法


[0001]本专利技术涉及汇流分析
,具体涉及一种CUDA架构D8算法的水域流向和累积汇流量并行分析方法。

技术介绍

[0002]坡面水文水动力过程是洪涝灾害、水土流失、面源污染等伴生过程的载体,过程机理和仿真被广泛应用于水灾害事件预警预报和应对中。流向流量算法是坡面水文水动力模拟基础算法,用于量化流向流量和水系、水文响应单元划分和产汇流模拟、洪涝孕灾过程和时空分布规律、泥沙输移比及其LUCC效应等过程。流向流量算法主要包含单流向法和多流向法,单向流算法是指栅格只流向周边高程最低网格,主要包含D8算法、Rho4/Rho8算法、Lea算法;多向流算法是指栅格按照分流比向下游网格进行分配流动,主要包含DEMON算法、Dinf算法、MFD算法。其中,D8算法应用较为广泛。
[0003]坡面水流流速较小、变化不大,水流流动方向主要驱动能量为势能。单流向和多流向算法流向选择方法不同,但水流均是向势能减小的方向流动,也就是向其周边高程较低网格汇流。累积汇流量计算时涉及网格间运算,在结构上呈现自水源点到边界的串行运算。自DEM栅格数据边界逐网格遍历计算流向和累积汇流量,耗费时间长、效率较低。现有部分研究尝试在CUDA架构下重点解决数据读取、传输和存储问题。但是,栅格并行后运算D8算法时,栅格计算会出现冲突,尚未有有效的解决方法。
[0004]为此,本专利技术提出了一种新的CUDA架构D8算法的水域流向和累积汇流量并行分析方法。

技术实现思路
<br/>[0005]为解决上述问题,本专利技术提出了一种CUDA环境下D8算法快速运算的并行方法,解决了D8并行算法并行运算栅格运算冲突问题。
[0006]为实现上述目的,本专利技术提供了如下的技术方案。
[0007]一种CUDA架构D8算法的水域流向和累积汇流量并行分析方法,包括以下步骤:
[0008]基于GPU纹理存储器构建流域DEM栅格数据的读取存储模型;
[0009]基于GPU全局存储器,设置并行网格和线程块,映射线程到DEM栅格单元,获取当前线程身份识别号;
[0010]各线程根据读取存储模型连续拾取采集的流域DEM栅格数据的中心栅格及相邻栅格高程值;
[0011]根据中心栅格及相邻栅格高程值计算最大距离权落差,根据最大距离权落差确定中心栅格流向;
[0012]根据中心栅格流向构建流向栅格单元,映射线程到流向栅格单元,读取线程身份识别号和流向;
[0013]各线程依循流向开展串行汇流计算,同一栅格访问和运算冲突通过CUDA原子加函
数开展运算,获取累积汇流量矩阵。
[0014]优选地,所述读取存储模型的构建,包括以下步骤:
[0015]声明二维CUDA数组,从GPU全局存储器拷贝流域DEM栅格数据到该数组;
[0016]设置返回数据类型为二维浮点全局变量;
[0017]设置非归一化纹理坐标读取模式和边界、拾取方式属性,判断纹理坐标是否越界;
[0018]绑定CUDA数组到纹理参考,纹理拾取中心栅格及相邻栅格高程值。
[0019]优选地,还包括:流域DEM栅格数据的预处理,分别对填洼平地的DEM栅格数据进行预处理。
[0020]优选地,所述根据最大距离权落差确定中心栅格流向,具体包括以下步骤:
[0021]获取当前线程身份识别号,映射线程至DEM栅格单元;
[0022]若当前线程身份识别号小于DEM栅格总数,开始流向并行计算;
[0023]计算中心栅格单元二维坐标,连续拾取中心栅格及相邻栅格高程值;
[0024]根据中心栅格及相邻栅格高程值计算最大栅格距离权落差,确定中心栅格流向;
[0025]若当前线程身份识别号大于DEM栅格总数,此线程并行计算结束。
[0026]优选地,所述各线程通过CUDA原子加函数连续遍历计算,获取累积汇流量,具体包括:
[0027]获取当前线程身份识别号,映射线程至流向栅格单元;
[0028]若当前线程身份识别号小于流量栅格总数,开始流量并行计算;
[0029]计算中心栅格单元二维坐标,连续拾取中心栅格流向;
[0030]根据中心栅格流向,并采用CUDA原子加函数遍历计算当前栅格累积汇流量;
[0031]若拾取流向栅格越界,循环计算结束;
[0032]若当前线程身份识别号大于流量栅格总数,此线程并行计算结束。
[0033]优选地,还包括:根据所述累积汇流量矩阵,统计汇流量阈值下河流长度,并计算河网密度和流域面积。
[0034]本专利技术有益效果:本专利技术提出了一种CUDA环境下D8算法快速运算的并行方法,有效提高了流向和累积汇流量的并行计算速率,解决了D8并行算法并行运算栅格像元访问和运算冲突问题。
附图说明
[0035]图1是本专利技术实施例的整体方法流程图;
[0036]图2是本专利技术实施例的D8算法流向并行图;
[0037]图3是本专利技术实施例的D8算法流量并行图;
[0038]图4是本专利技术实施例的D8经典和并行算法下赣江流域水系和边界;
[0039]图5是本专利技术实施例的赣江流域CUDA并行加速比响应;
[0040]图6是本专利技术实施例的赣江流域等线程块下加速比随网格数边际变化曲线。
具体实施方式
[0041]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并
不用于限定本专利技术。
[0042]实施例1
[0043]本专利技术提出一种CUDA架构D8算法的水域流向和累积汇流量并行分析方法,如图1所示,具体包括以下步骤:
[0044]S1:基于GPU纹理存储器构建流域DEM栅格数据的读取存储模型。
[0045]S2:基于GPU全局存储器,设置并行网格和线程块,映射线程到DEM栅格单元,获取当前线程身份识别号。
[0046]S3:各线程根据读取存储模型连续拾取采集的流域DEM栅格数据的中心栅格及相邻栅格高程值;根据中心栅格及相邻栅格高程值计算最大距离权落差,根据最大距离权落差确定中心栅格流向。流程如图2所示。
[0047]具体的:
[0048]S3.1:获取当前线程身份识别号,映射线程至DEM栅格单元;
[0049]S3.2:若当前线程身份识别号小于DEM栅格总数,开始流向并行计算;
[0050]S3.3:计算中心栅格单元二维坐标,连续拾取中心栅格及相邻栅格高程值;
[0051]S3.4:根据中心栅格及相邻栅格高程值计算最大栅格距离权落差,确定中心栅格流向;
[0052]S3.5:若当前线程身份识别号大于DEM栅格总数,此线程并行计算结束。
[0053]S4:根据中心栅格流向构建流向栅格单元,映射线程到流向栅格单元,读取线程身份本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种CUDA架构D8算法的水域流向和累积汇流量并行分析方法,其特征在于,包括以下步骤:基于GPU纹理存储器构建流域DEM栅格数据的读取存储模型;基于GPU全局存储器,设置并行网格和线程块,映射线程到DEM栅格单元,获取当前线程身份识别号;各线程根据读取存储模型连续拾取采集的流域DEM栅格数据的中心栅格及相邻栅格高程值;根据中心栅格及相邻栅格高程值计算最大距离权落差,根据最大距离权落差确定中心栅格流向;根据中心栅格流向构建流向栅格单元,映射线程到流向栅格单元,读取线程身份识别号和流向;各线程依循流向开展串行汇流计算,同一栅格访问和运算冲突通过CUDA原子加函数开展运算,获取累积汇流量矩阵。2.根据权利要求1所述的CUDA架构D8算法的水域流向和累积汇流量并行分析方法,其特征在于,所述读取存储模型的构建,包括以下步骤:声明二维CUDA数组,从GPU全局存储器拷贝水域DEM栅格数据到该数组;设置返回数据类型为二维浮点全局变量;设置非归一化纹理坐标读取模式和边界、拾取方式属性,判断纹理坐标是否越界;绑定CUDA数组到纹理参考,纹理拾取中心栅格及相邻栅格高程值。3.根据权利要求1所述的CUDA架构D8算法的水域流向和累积汇流量并行分析方法,其特征在于,还包括:水域DEM栅格数据的预处理,分别对填洼平地的DEM栅格数据进行预...

【专利技术属性】
技术研发人员:白桦刘址杰桂发亮李二辉康传雄吴绍飞
申请(专利权)人:南昌工程学院
类型:发明
国别省市:

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

1