GPU并行优化技术在水利计算中的应用综述

2018-03-04 19:58覃金帛曾志强杨明祥
计算机工程与应用 2018年3期
关键词:水文架构水利

覃金帛,曾志强,,梁 藉,杨明祥,张 健

1.华中科技大学 水电与数字化工程学院,武汉 430074

2.中国水利水电科学研究院 流域水循环模拟与调控国家重点实验室,北京 100038

1 引言

水利计算[1]是水利工程规划、设计和运行的基础,为水资源的合理开发与管理提供了技术支撑。随着我国水利信息化的发展,行业内对高效率水利计算的需求也越来越迫切。例如洪水预报、山洪预警以及水库的实时调度等都要求在短时间内做出正确的决策,这对水利计算的效率提出了更高的要求。目前,除计算方法的改进之外,计算机硬件的性能提升也是提高水利计算效率的重要方法,尤其是GPU并行优化技术的出现,为水利计算效率的提升提供了一条可行之道。

当前,高性能计算机集群是提升计算效率的主要方法之一。高性能计算集群有多个计算节点,每个计算任务被独立分配到各个计算节点上,这使得各个计算节点的性能得以充分发挥。算法的并行化是高性能计算的基础,目前主要有三种并行方式:基于MPI的并行模式[2-3]、基于OpenMP的并行计算模式[4]以及基于FPGA等并行计算设备的并行计算模式[5]。上述并行计算方法在一定程度上提高了算法的计算效率和寻优功能。然而,对于高度非线性的复杂问题,启动过多的线程必将导致大量进程间的通信和管理损耗;此外,基于CPU的计算机集群硬件成本高昂,这在一定程度上也阻碍了高性能计算机集群的推广应用。

基于GPU的并行优化技术在计算性能和成本上优势明显。随着GPU技术的发展,GPU已经具有强大的并行计算能力,浮点计算能力是同代CPU的10倍以上[6]。特别是经过GPGPU(基于GPU的通用计算技术)技术的发展,GPU已经被应用于各种科学计算领域。然而,早期的GPU技术对研究人员GPU硬件结构方面的知识要求很高,因此算法的设计与实现都很困难。CUDA[7](NVIDIA公司提出的统一计算设备架构)的推出打破了GPU技术应用的瓶颈,使得GPU具有很好的可编程性。国内外学者以此为契机,将GPU应用到多体系统模拟、计算流体科学[8]、核科学[9]等各个计算领域。此外,与基于CPU的高性能计算机集群相比,GPU成本更低。水利计算中的很多模型和算法具有天然的并行性,这是GPU并行优化技术应用的重要基础。此外,水利计算在水利行业应用较为广泛,从个人到企业均有涉及,其具有大众化的特点。与庞大的高性能计算机群相比,基于GPU加速的便携式个人计算机更适合大众化推广。然而,GPU并行优化技术在水利中的应用还处于初级阶段,存在广阔的发展前景。

本文主要分为应用进展、并行技术、应用前景和应用指导四个部分。应用进展详细介绍了GPU并行优化技术在水利计算中的应用进展;并行技术介绍了当前几种主流的并行技术;应用前景部分就所解决问题的特点,提出该技术在水库调度、中长期水文预报、水文模型和智慧水务大数据计算中应用的可能性和优势;应用指导部分从计算框架、开发环境选择以及程序性能优化三个方面为GPU并行优化技术在水利计算中的应用提出了建设性的意见。

2 应用进展

GPU并行优化技术已经在水动力模拟和分布式水文模型上得以应用,并取得了较好的应用效果。

水动力学模型是水利计算中的重要部分,通过水动力模型可以模拟出流量、流速、水位等关键水力要素,该模型已被广泛应用于溃坝洪水模拟、通航水流计算、河道泥沙冲淤等领域[10-12]。但是,随着所研究问题的复杂度越来越高,水动力学模型呈现计算范围大、模拟精度高及计算量大等特点。尽管模型算法的优化可以在一定程度上提高计算精度及效率,但传统的串行计算方式是算法性能提升的瓶颈,为寻找更为高效的计算策略,水动力学模型从串行转向了并行。国内外学者以此为基础,将GPU高性能计算引入到水动力学模型的求解计算中。温婵娟[13]等在GPU上并行求解SPH流体方程,实现了基于GPU的高质量实时流体渲染算法;Xian等[14]基于CUDA实现了不可压缩流的晶格玻尔兹曼方法的GPU并行计算;赵旭东等[15]在CUDA平台下建立了非结构化网格的二维水动力模型对水流计算过程进行加速;Cohen等[16]使用基于GPU的稀疏矩阵求解器,提升了洪水预报模型的求解速度,这对于洪水期间的预警和运营管理大有益处;Herdman等[17]基于OpenACC模式开发了显格式水动力学机制的微型应用程序,通过GPU架构提高了模型性能;Hart等[18]使用OpenACC程序标准在CrayXK6混合计算机上加速了Herdman基准代码,获得了较高的加速效果;Pickering等[19]通过OpenACC在CFD应用程序上实现了并行计算;由丹麦水力学研究所所开发的Mike(Mike11,Mike21和Mike3)系列商业软件目前也引入了GPU,用于提升模型的计算效率。更多相关应用研究可进一步参考相关文献[20-21]。综上所述,GPU并行优化技术在水动力模拟中得到了广泛应用,也提高了水动力模拟的求解效率和精度。

随着3S(GIS、RS、GPS)技术快速发展,分布式水文模型成为水文模型发展的趋势。利用分布式水文模型的天然并行性,刘永和等[22]提出了资料插值、单元产流以及单元汇流采用GPU并行计算的新方法,由分布式新安江模型在沂河流域的模拟结果表明,降水量空间插值及新安江产流的并行执行效率为普通CPU的8~9倍。除上述应用之外,目前在国内外还无相关应用。但以分布式水文模型的并行特性和日益增长的计算需求可以预见,GPU技术在分布式水文模型中的应用将逐渐增多。

综上所述,GPU并行优化技术的应用集中在水动力模拟上,而在分布式水文模型的应用才刚刚开始。其主要原在于,水动力模拟的理论发展相比于分布式水文模型更为成熟,应用也更为广泛。但值得肯定的是,随着分布式水文模型的日趋成熟,GPU并行优化技术也将被广泛推广。

3 并行技术

DirectCompute、OpenACC、CUDA以及MIC技术是目前主流的并行技术,前三种技术是针对GPU的并行计算技术,而MIC技术则针对于CPU。目前,针对CPU的MIC技术已经成为一种很重要的并行计算技术,加速效果和性价比都具有优势,本文也针对该技术进行介绍,以期在水利计算中得以推广。

3.1 DirectCompute

DirectCompute是微软公司推出的一种应用于GPU通用计算的程序接口,其主要集成在Microsoft DirectX(微软创建的多媒体编程接口)内。DirectCompute支持多种并行计算方式,如CPU和GPU协同的异构计算方式,CPU负责逻辑运算,GPU进行大规模的并行计算,两者各司其职共同分担并完成计算任务[23]。与其他通用GPU通用计算框架相比,DirectCompute具有如下优势[24]:

(1)作为DirectX中特殊的部分,DirectCompute与不同于常规的渲染着色器。DirectX处理图形运算时,DirectCompute可针对流体仿真中可并行的复杂计算单独进行处理,并与其他计算资源进行有效交互,鉴于此特性,可将并行计算部分用DirectCompute计算,并用GPU缓存存储数据,以便最大化利用GPU计算资源。

(2)常规的渲染着色器采用一对一的方式完成数据与线程的映射,而DirectCompute可利用单线程处理多个数据,并且其线程数可根据实际需求进行配置。

(3)DirectCompute具有时序性,支持对GPU缓存的无序访问,因此可避免数据交换中额外缓存的申请。

刘璐[24]等提出了基于DirectCompute加速的实时流体仿真框架,并利用GPU并行计算处理复杂的计算部分,结果证明流体仿真速度得到了有效的提高。水利计算中亦存在着大量的并行计算部分,同理于DirectCompute的流体仿真计算,DirectCompute框架亦可运用于水利计算之中。

3.2 OpenACC

OpenACC是一种指导语句方式的并行编程语言标准,它使用户不用考虑底层硬件架构,从而降低了异构并行编程的使用门槛。用户只要在有并行需要的代码段前写入OpenACC指导语句,然后通过对应编译器的编译,就可以自动生成相应的并行化中间代码,从而执行设备的初始化、管理和传输等操作。目前,OpenACC已经可以针对复杂的C/++或Fortran代码进行加速。OpenACC编译器具有强大、快速和可移植的特点,目前已经在各行业得以应用。曾文权等[25]利用基于中间层的OpenACC加速技术高效地改写了传统的串行代码,实现了基于GPU加速的高斯模糊算法。莫德林等[26]提出了一种基于OpenACC的遥感影像正射纠正快速实现方法,通过对源代码的较小改动,成功地将源代码移植到GPU中,并取得了较好的加速比。杨帅等[27]分别使用CPU、CUDA、OpenACC实现了一种素数的生成算法,通过对比发现,虽然OpenACC相比于CUDA性能略差一些,但相比于CPU有较大提升。

从事水利计算的从业人员大多对计算机底层硬件架构不太了解,因此所编写的程序一般不能够充分利用硬件资源。而OpenACC作为一种高级并行编程语言,使编程人员只用在高级层对设备进行并行编程,而无需直接对硬件进行操作。对于不熟悉硬件架构的水利计算人员来说,利用OpenACC加速计算是一个不错的选择。

3.3 CUDA

CUDA是NVIDIA公司提出的一种用于处理GPU并行计算的硬件和软件架构,该架构使GPU能够解决复杂的计算问题。CUDA程序的开发语言以C语言为基础,并对C语言进行扩展。基于GPU-CUDA的程序由串行代码和并行代码组成,串行代码在CPU上运行,而并行代码在GPU上运行。串行代码负责申明变量、变量初始化、数据传递和调用内核函数(Kernel Function)等工作。并行代码即为串行代码所调用的内核函数。在内核函数中,线程是以并行执行的线程块为单位在设备上执行的,而并行执行的线程块的集合用线程栅格来表示,关于CUDA的工作原理和硬件架构可进一步参考文献[28],相关应用研究可参考文献[29-31]。

与OpenACC相比,CUDA使用者需要对计算机底层硬件架构有深入的理解,只有这样才能充分发挥硬件的计算潜能。OpenACC在为使用者带来便利的同时,也牺牲了硬件的部分计算潜能,而CUDA则恰好相反。对于使用者来说,需要根据应用的需要来做选择。

3.4 CPU的MIC技术

MIC是Intel公司提出的一种新型架构,其功能是协助CPU进行计算。按MIC在CPU协助处理中充当角色的不同,MIC主要分为两种运行模式:一种是MIC与GPU进行有机的结合,此种模式下MIC与GPU面对计算任务各司其职,共同担负任务,MIC卡支持通过本地以启动程序,这种模式称之为native模式;另一种是MIC承担加速的任务,程序从CPU端启动,并选择性地将代码卸载(offload)到MIC端执行,此种模式称之为offload模式。每个基于MIC的协处理器可配备多个高频率的计算核心,并拥有专属的存储空间。每个计算核心可支持多个硬件线程,目前单MIC卡的双精度浮点计算峰值性能超过1TFlops[32]。采用CPU/MIC异构架构的高性能计算方式有广泛的应用空间,Lv[33]和张光辉等[34]实现了GPU/CPU异构协同计算的、可跨节点的、高效的高阶基函数矩量法;谭郁松等[35]基于CPU/MIC的异构架构实现了向量化K-Means算法,并且探索了MIC在非传统HPC(High Performance Computing)应用领域的优化策略;洪向共等[36]实现了基于CPU/GPU和CPU/MIC的异构架构上的Roberts算法,并证明在相同单精度浮点运算能力下,GPU处理低分辨率图像的速度更快、加速比更高,但处理高分辨率图像时MIC的加速效果比GPU略好(MIC加速比最高为23.52,GPU为21.43)。由于MIC的指令集和体系结构兼容性较好,相较于GPU编译方式,其可移植性更强,速度更快。一些较为简单的软件甚至可以在重新编译后直接在MIC上运行。在水利计算领域,具备拓展性强、计算性能好、加速效果佳的CPU/MIC异构架构同GPU一样有广阔的应用空间,对其在水利领域的研究也有待更进一步、更深层次的研究。

4 应用前景

4.1 水库调度中的应用

水库的联合调度、优化运行是一个相对复杂的优化问题,其具有多条件约束、维度高、非线性的特点。随着水库数量和水库调度目标的增加,维数灾阻碍了水库调度研究的发展。对此,研究人员从算法改进和硬件加速两个方面展开了研究。算法的改进和并行化在一定程度上解决了维数灾的问题,但对于大规模的水库调度,尤其是梯级水库群的优化调度,算法改进已经无法满足计算要求。在并行计算和计算机硬件快速发展的基础上,硬件加速成为解决水库优化调度计算问题的新思路。处理器多核时代的来临,为高性能并行计算创造了有利的条件,国内研究者将并行计算和动态规划进行有机地耦合,以OpenMP编程模式为计算平台来进行并行化的计算,这极大地提高了运行效率。如果将GPU并行优化技术引入调度的优化计算中,那么模型的计算效率将在OpenMP编程模式的基础上得到进一步提升。目前,基于GPU的优化并行技术尚未在水库调度领域推广,可以预见的是该技术将成为水库联合优化调度模型求解的新技术。

4.2 中长期水文预报中的应用

水文预报需要根据所取得的水文气象资料和方法,对未来的水文要素进行预测。其核心在于建立起已知的预报因子和未来预报水文要素之间的相关关系。建立相关关系的方法主要有四种[37]:物理成因法、数理统计法、综合预报法和智能方法。其中智能计算方法是一种新兴的水文预报方法,在其发展的过程之中,人们根据自然界或人类的普遍原理或过程将其模拟并改进出许多有效的智能计算方法,比如神经网络、支持向量机和混沌理论[38]等。张丽娟[39]将径向基神经网络运用到水文预报中,极大地提高了清河水库中长期水文预报的精度;张俊等[40]建立了基于蚁群算法的支持向量机中长期水文预报模型;王丽学等[41]建立了基于灰色系统与径向基函数神经网络的中长期水文预报模型,在提高预报精度的同时,提升了模型的运行速度;刘佩瑶等[42]使用LM算法改进了BP神经网络并建立了水文预报模型,通过闽江富屯溪流域上预报结果的对比,得到了模拟精度更优于新安江模型的改进BP神经网络模型;王鹏等[43]通过汇总分析水文预报模型的结构,提出了提高预报精度的改善方法。由于此类智能计算方法具有参数多且取值范围大、输入数据集或训练集大、训练次数和迭代次数多等特点,再加之水文要素具有高度的非线性和时变性[44]特点。因此,水文预报领域对于高效率、高精度、高灵敏度的运行与计算需求越来越迫切。

随着计算机技术的发展,越来越多的水文预报模型或者方法中用到了智能计算方法。作为智能计算方法的基础,许多智能算法中涉及到了神经网络算法[45]。由于神经网络算法的计算过程中运用到了大量的参数,如激活值、梯度值等,这些参数数据均会进过计算机缓冲区,并且在每一次训练迭代中均会被完全更新,这种计算模式对设备的内存以及带宽提出了更高的要求。GPU具有结构上的优势,其与CPU相比拥有可观数量的计算单元以及高带宽。当前在拥有多路GPU的计算机上,为使GPU的高效率计算特性和CPU的逻辑控制能力协同配合,已经能够实现CPU与GPU的协同配合运行,以便充分发挥GPU的计算能力。对于结构复杂多变的智能算法,可通过设计一套并行计算规则,将密集计算部分迁移到GPU中执行,剩余部分仍然由CPU来完成[46]。

4.3 水文模型中的应用

流域水文模型的参数一般都具有特定的物理含义,但鉴于直接进行参数测定相当困难且不准确,参数率定等系统识别的方式成为了较好的选择。目前水文参数率定方法主要有 Rosenbrock 法[47]、Simplex 法[48]、SCEUA[49-51]、遗传算法[52-54]、粒子群算法[55-56]等。随着计算机技术的快速发展,参数率定的自动化将得到长足发展。

水文模型参数率定的过程中需要不断地将参数带入模型进行演算,并将得到的结果运用特定的率定方法进行寻优,最后得到最优的参数,实际上这个过程的计算量是很大的。如果所需率定的参数较多,则参数空间的维数会变得更大;同时,取值范围太大也会导致高维度的参数空间。由于水文参数存在以上特点,使得现有参数率定方法耗时长,且容易陷入局部最优解。将GPU并行优化技术引入到参数率定中,能够很好地解决参数率定过程中维数多、维度大的问题。结合GPU的分布式计算性能,可将整个率定过程分配到各个计算单元或者多GPU并行计算中进行并行计算,以此来提高整体率定的效率,同时更有利于得到全局最优解。

分布式水文模型对流域水文过程的应用深度及广度不断加深,常与数值天气及气候预报相结合,在计算过程中面临巨大的计算量,因此具有加速计算的必要性。从模型结构特点来看,分布式模型具有天然的并行性,适宜采用GPU进行分布式的运算。分布式水文模型是今后水文发展一个趋势,随着数据体量的增加,计算负荷将呈几何倍数增加,基于GPU的并行优化技术将成为解决水文模型计算效率问题的新选择。

4.4 智慧水务大数据计算

智慧水务[57]是当前智慧城市发展的新热点,也是未来城市水务管理的必然趋势。将水利信息化与GPU并行计算相结合,将极大地发挥GPU在大数据时代的应用优势。大连和北京已经率先开始探索,就目前开展智慧水务的经验来看,所面临的主要问题是在数据采集以及数据存储和处理阶段所涉及的信息面过于广泛,包含海量的实时监测数据信息、社会经济信息、地理信息以及多媒体等数据。随着3S技术的发展,越来越多的信息获取方式被运用到数据采集上,水务信息的时空尺度和要素类型也随之拓宽。水务数据也逐渐呈现出多源、多维、大量和多态的大数据特性。

对于类型众多、特点各异的大数据,其分析和处理是一个亟待解决的问题。根据是否对数据预先进行存储,将大数据的计算模式[58]分为两种,一种是对数据预先进行存储,之后将批量数据进行统一的运算执行,这种方式称为批量计算;另一种方式是针对数据源到来时刻与顺序的随机性,将随机到来的数据暂时存放于内存中,并直接执行实时计算,这种计算方式能够将数据置于任务拓扑中执行计算,然后输出所需的信息和数据,这种方式称为流式计算。在批量计算中,Hadoop[59]是最常用的计算架构,通过HDFS(Hadoop Distributed File System)与MapReduce的配合,分别完成数据的静态存储和数据的分析计算。鉴于两种大数据的处理方式各自的特点,尤其是批量计算中的静态数据集中计算,GPU拥有更多的计算单元更适用于处理复杂且庞大的数据。以北京大学理论与应用地球物理研究所的集群为例[60],该集群由1个服务器、46个计算结点、3个刀片机箱组成。每个计算结点有2颗四核Intel XeonE5520(2.26 GHz,Nehalem-EP架构)处理器,共368个计算核心,满载功耗为12 kW。相比之下,价格更低的NVIDIA TITAN Xp型号的GPU拥有3 584个NVIDIA CUDA核心及12 GB的GDDR5X显存,且其额定功耗仅为250 W,在保证高效运算的同时,能够调整资源的使用,并对带宽、内存进行优化,使得个人用户和小型组织也能够进行高性能计算。

5 应用指导

5.1 计算框架

目前GPU的计算框架主要有以下几种:NVIDIA CUDA、C++AMP(C++Accelerated Massive Parallelism)、OpenCL(Open Computing Language)和 AMD APP(AMD Accelerated Parallel Processing)等四种。其中CUDA是NVIDIA自主开发的高效计算架构,与其他三种计算架构相比CUDA的应用最广泛。NVIDIA为CUDA提供了大量的辅助工具、教程和第三方库,加之CUDA的个人和组织用户在网络社区建立的问题交流与互动,CUDA已拥有良好的编程生态系统。经过多年的发展和实践,CUDA计算架构的技术已相对成熟,在GPU的API设计便捷性和实用性中位居前列。C++AMP[61]可与C++程序完美结合,并且可在支持D3D11(动态链接库)的显卡上顺利执行,由于其底层具有封装性极好的特点,使得对于GPUB不甚精通的编程人员也能够毫无障碍地使用。C++AMP不仅可用于GPGPU编程,更能提供一种基于异构平台的运行方法,例如可用于GPU和CPU的向量处理单元[62]。C++AMP为编程人员提供了类型安全的泛型—实数数组合和整数数组,进一步降低并行软件开发难度[63]。值得注意的是,C++AMP的GPU加速主要是针对C++,而不是C语言或类C语言,且目前主要应用于Windows平台的Visual Studio用户,其他平台的应用及其稳定性还有待考验,鉴于以上因素此计算框架尚存在一定的局限性。OpenCL[64]属于运用范围非常广的计算架构,既可跨操作系统(Windows和Linux)运行,又能兼容不同类型的GPU(NVIDIA和AMD),对于异构计算有很强的适应性。但由于缺少持续的维护和更新,使得其运行速度和稳定性都受到影响,根据D-Wave的报告,同一程序基于OpenCL的速度只有基于CUDA运行的三分之一。其次OpenCL的抽象层级较低,使得开发的难度较大。AMD APP是AMD针对旗下GPU所推出的通用并行计算技术,其前身为ATI Stream。

在GPU并行计算中,深度学习是目前应用最多也是通用性较强的应用领域,在前文提到的水利计算领域中,均可利用深度学习技术为水利计算注入强大的动力。目前主流的深度学习框架[65]主要有Caffe、TensorFlow、Microsoft Cognitive Toolkit(CNTK)、MXNet、Torch、Theano等六种,目前NVIDIA GPU已支持上述六种主流深度学习框架。此外在考虑兼容性的基础之上,增加了对基于Python的Chainer和KERAS、基于Java的DL4J(Deep Learning for Java)、基 于 MATLAB 的MatConvNet的全面支持。与此同时,NVIDIA GPU已实现对上述所有计算框架的优化,使GPU发挥出最佳性能。

5.2 开发环境

CUDA是NVIDIA提出的并行计算架构,是目前应用最广泛、最成熟的GPU并行计算解决方式。CUDA结合了CPU和GPU的优点,主要用来处理密集型及并行计算。CUDA环境的构建是使用NVIDIA GPU的第一步。目前CUDA能够在Windows、Mac和Linux中完美运行。详细的应用操作步骤如下:

孕妇激素水平的增高,致使静脉中的血流量增加,同时由于妊娠子宫压迫盆腔静脉,影响下肢静脉回流所致。持久站立位工作,妊娠晚期腹内压力的增加,都促使症状加重。当然,这种现象会随孕期的消失而消失。

(1)英伟达开发驱动程序。

(2)CUDA工具包。

(3)CUDA软件开发工具包。

(4)GPU计算软件开发工具包。

(5)并行Nsight调试器。

在Linux操作系统中,首先进行Linux的版本检查,当前支持的版本有Fedora 14、IRedhat 6.0和5.5/CentOS 6.2、Ubuntu 11.04和OpenSUSE 11.2。其次进行以下操作:

(1)将内核更新到最新。

(2)安装标准的GNU C++环境以及重新编译内核所需的内核源代码。

(3)安装OpenGL开发环境以便图形化的输出。

(4)内核驱动程序的安装。

(5)安装CUDA工具包。

Mac操作系统按照以下顺序进行安装:

(1)开发驱动程序。

(2)CUDA工具包。

(3)CUDA工具软件开发包和代码样例。

5.3 性能优化

对GPU性能上的优化共有七种策略:

(1)分析问题,并将问题正确分解为串行/并行的工作负载。

(2)基于具体问题,分析并优化内存带宽、延迟和缓存使用。

(3)理解GPU与主机端传输数据的原理,分析锁页内存、零复制内存的表现和某些硬件的带宽限制。

(4)理解线程结构和计算能力,并优化其对性能的影响。

(5)结合一些通用算法的优化实例,针对性实现算法优化。

(6)关注性能分析,定位应用程序的瓶颈所在及其来源。

(7)考察如何让应用程序根据各种硬件实现自我调优。

除此之外,GPU加速器也是可行且有效的选择。TensorRT是一款适用于CUDA GPU的优化神经网络编译器,其作用是为基于CUDA GPU的程序提供推理加速。随着NVIDIA公司对其进行更新换代,目前TensorRT已达到第三版本,其功率也从最终的250 W降低到低于1 W,加速性能成倍提升。以最常用的Tensor-Flow计算框架为例,在TensorRT 3的加速下,运行速度是未使用加速器时的18倍。TensorRT的兼容性强,能够兼容当前所有计算框架,并能加速现有和未来的计算架构。

6 结语

GPU并行优化是水利信息化在新形势下发展的趋势,也是GPU高性能计算的重要应用。一方面随着水利信息化进程的加快,水利行业中数字化技术的运用以及整体行业水平的逐渐提升。在此过程中积累了大量异构多源、独立分布的数据,如何加速处理这些数据,是当前水利信息化进程中面临的主要问题。随着NVIDIA推出专用于人工智能、深度学习的高性能GPU,越来越多的个人和组织能够使用到价格更低廉、性能更高效的GPU。

当前,GPU运用到水利计算的研究仍然处于起步阶段,需要研究和实践的方面还有很多。需要从国家层面制定长期发展战略,同时需要各级水利部门的通力合作,将GPU运用到更广泛的水利计算之中。在运用硬件的基础之上,研究基于GPU的加速算法,利用CUDA、TensorRT等可编程性的计算架构和加速器,完成对于GPU应用的源头级优化,使其在水利计算之中发挥更大的功用。

[1]叶秉如.水利计算[M].北京:水利电力出版社,1985.

[2]张蕾,杨波.并行粒子群优化算法的设计与实现[J].通信学报,2005,26(1):289-292.

[3]吕奕清,林锦贤.基于MPI的并行PSO混合K均值聚类算法[J].计算机应用,2011,31(2):428-431.

[4]周洪斌.基于OpenMP求解QAP的并行粒子群优化算法[J].微型机与应用,2010,29(10):84-86.

[5]Tewolde G S,Hanna D M,Haskell R E.Multi-swarm parallel PSO:Hardware implementation[C]//IEEE Swarm Intelligence Symposium,2009:60-66.

[6]左颢睿,张启衡,徐勇,等.基于GPU的并行优化技术[J].计算机应用研究,2009,26(11):4115-4118.

[7]朱宇兰.基于GPU通用计算的并行算法和计算框架的实现[J].山东农业大学学报:自然科学版,2016,47(3):473-476.

[8]李森,李新亮,王龙,等.基于OpenCL的并行方腔流加速性能分析[J].计算机应用研究,2011,28(4):1401-1403.

[9]Nieto J,Arcas G D,Vega J,et al.Exploiting graphic processing units parallelism to improve intelligent data acquisition system performance in JET’s correlation reflectometer[C]//Real Time Conference,2010.

[10]白玉川,冀自青,徐海珏.摆动河槽水动力稳定性特征分析[J].力学学报,2017,49(2):274-288.

[11]蒋昌波,刘洋,邓斌,等.出渗对均匀大粒径泥沙附近水动力特性影响[J].水科学进展,2017,28(1):67-75.

[12]陈俊鸿,刘小龙,王岗,等.基于一、二维耦合水动力模型的赣西联圩溃堤洪水风险分析[J].中国农村水利水电,2017(6):43-47.

[13]温婵娟,欧嘉蔚,贾金原.GPU通用计算平台上的SPH流体模拟[J].计算机辅助设计与图形学学报,2010,22(3):406-411.

[14]Wang Xian,Takayuki A.Multi-GPU performance of incompressible flow computation by lattice Boltzmann method on GPU cluster[J].Parallel Computing,2011,37(9):521-535.

[15]赵旭东,梁书秀,孙昭晨,等.基于GPU并行算法的水动力数学模型建立及其效率分析[J].大连理工大学学报,2014(2):204-209.

[16]Cohen R C Z,Hilton J E,Khan S H,et al.Swift:A GPU based coupled hydrodynamic/hydraulic framework for urban flood prediction[C]//Eleventh International Conference on CFD in the Minerals and Process Industries,2015.

[17]Herdman J A,Gaudin W P,Mcintoshsmith S,et al.Accelerating hydrocodes with OpenACC,OpeCL and CUDA[C]//SC Companion:High Performance Computing,Networking Storage and Analysis,2012:465-471.

[18]Hart A,Ansaloni R,Gray A.Porting and scaling OpenACC applications on massively-parallel,GPU-accelerated supercomputers[J].European Physical Journal Special Topics,2012,210(1):5-16.

[19]Pickering B P,Roy C J.Directive-based GPU programming for computational fluid dynamics[C]//Aerospace Sciences Meeting,2014.

[20]Shimokawabe T,Aoki T,Muroi C,et al.An 80-fold speedup,15.0 TFlops full GPU acceleration of nonhydrostatic weather model ASUCA production code[J].High Performance Computing,Networking,Storage&Analysis,2010:1-11.

[21]Brunelli C,Aho E,Berg H.OpenCL implementation of Cholesky matrix decomposition[C]//International Symposium on System on Chip,2011.

[22]刘永和,冯锦明,徐文鹏.分布式水文模型的GPU并行化及快速模拟技术[J].水文,2015(4):20-26.

[23]Chang J.异构计算:计算巨头的下一个十年[J].个人电脑,2011,17(11):82-88.

[24]刘璐,刘箴,何高奇,等.一种基于DirectCompute加速的实时流体仿真框架[J].系统仿真学报,2016,28(10):2467-2475.

[25]曾文权,胡玉贵,何拥军,等.一种基于OPENACC的GPU加速实现高斯模糊算法[J].计算机技术与发展,2013,23(7):147-150.

[26]莫德林,戴晨光,张振超,等.一种基于OpenACC的遥感影像正射纠正快速实现方法[J].影像技术,2014,26(2):47-49.

[27]杨帅.一种基于OpenACC指令加速的素数生成算法[J].信息与电脑:理论版,2016(20):97-98.

[28]董荦,葛万成,陈康力.CUDA并行计算的应用研究[J].信息技术,2010(4):11-15.

[29]钟庆.基于CUDA并行计算的三维形状变形编辑[D].辽宁大连:大连理工大学,2012.

[30]孔英会,王之涵,车辚辚.基于卷积神经网络(CNN)和CUDA加速的实时视频人脸识别[J].科学技术与工程,2016,16(35):96-100.

[31]李承功.流场的格子Boltzmann模拟及其GPU-CUDA并行计算[D].辽宁大连:大连理工大学,2013.

[32]Jeffers J,Reinders J.Intel Xeon Phi coprocessor highperformance programming[M].[S.l.]:Morgan Kaufmann Publishers Inc,2013.

[33]Lv Z,Lin Z,Yan Y,et al.Accelerated higher-order MoM using GPU[C]//International Radar Conference,2013.

[34]张光辉.CPU/MIC异构平台中矩量法与时域有限差分法的研究[D].西安:西安电子科技大学,2015.

[35]谭郁松,伍复慧,吴庆波,等.面向CPU/MIC异构架构的K-Means向量化算法[J].计算机科学与探索,2014,8(6):641-652.

[36]洪向共,陈威,熊镝.基于CPU_MIC_GPU异构架构的Roberts算法优化探究[J].科学技术与工程,2016,16(36):217-222.

[37]陈文爱.中长期水文预报方法的分析与展望[J].黑龙江科技信息,2016(13):240.

[38]李亚娇.基于现代分析技术的水文时间序列预测方法研究[D].西安:西安理工大学,2007.

[39]张丽娟.灰色径向基神经网络技术在水文预报中的应用[J].东北水利水电,2016,34(3):28-29.

[40]张俊.中长期水文预报及调度技术研究与应用[D].辽宁大连:大连理工大学,2009.

[41]王丽学,杨军,孙靓,等.基于灰色系统与RBF神经网络的中长期水文预报[J].人民长江,2015,46(17):15-17.

[42]刘佩瑶,郝振纯,王国庆,等.新安江模型和改进BP神经网络模型在闽江水文预报中的应用[J].水资源与水工程学报,2017,28(1):40-44.

[43]王鹏,李立,谢鹏.中长期水文预报神经网络模型结构的确定及应用研究[J].江苏科技信息,2017(3):27-31.

[44]李杨,黎光明.中长期水文预报方法措施[J].低碳世界,2016(12):84-85.

[45]卢宏涛,张秦川.深度卷积神经网络在计算机视觉中的应用研究综述[J].数据采集与处理,2016,31(1):1-17.

[46]戴春娥,陈维斌,傅顺开,等.通过GPU加速数据挖掘的研究进展和实践[J].计算机工程与应用,2015,51(16):109-116.

[47]Rosenbrock H H.An automatic method for finding the greatest or least value of a function[J].Computer Journal,1960,3(3):175-184.

[48]Nelder J A,Mead R.A simplex method for function minimization[J].Computer Journal,1965,7(4):308-313.

[49]Duan Q,Sorooshian S,Gupta V.Effective and efficient global optimization for conceptual rainfall-runoff models[J].Water Resources Research,1992,28(4):1015-1031.

[50]马海波,董增川,张文明,等.SCE-UA算法在TOPMODEL参数优化中的应用[J].河海大学学报:自然科学版,2006,34(4):361-365.

[51]于国荣,夏自强.混沌时间序列支持向量机模型及其在径流预测中应用[J].水科学进展,2008,19(1):116-122.

[52]Cheng C T,Ou C P,Chau K W.Combining a fuzzy optimal model with a genetic algorithm to solve multiobjective rainfall-runoff model calibration[J].Journal of Hydrology,2002,268(1):72-86.

[53]杨晓华,陆桂华,郦建强.混合加速遗传算法在流域模型参数优化中的应用[J].水科学进展,2002,13(3):340-344.

[54]武新宇,程春田,赵鸣雁.基于并行遗传算法的新安江模型参数优化率定方法[J].水利学报,2004,35(11):85-90.

[55]杨道辉,马光文,刘起方,等.基于粒子群优化算法的BP网络模型在径流预测中的应用[J].水力发电学报,2006,25(2):65-68.

[56]刘苏宁,甘泓,魏国孝.粒子群算法在新安江模型参数率定中的应用[J].水利学报,2010,41(5):537-544.

[57]田雨,蒋云钟,杨明祥.智慧水务建设的基础及发展战略研究[J].中国水利,2014(20):14-17.

[58]董杰.支持批量计算与流式计算的大数据系统研究与实现[D].西安:西北大学,2015.

[59]董新华,李瑞轩,周湾湾,等.Hadoop系统性能优化与功能增强综述[J].计算机研究与发展,2013,50(S2):1-15.

[60]丁科,谭营.GPU通用计算及其在计算智能领域的应用[J].智能系统学报,2015(1):1-11.

[61]邓力,陈晓翔,林嘉宇.基于GPU的CUDA应用开发环境构架[J].微处理机,2013,34(1):1-3.

[62]李银超.基于C++AMP的图像并行计算理论与技术研究[D].南京:南京邮电大学,2016.

[63]Howard P G,Vitter J S.Parallel lossless image compression using Huffman and arithmetic coding[J].Information Processing Letters,1996,59(2):65-73.

[64]詹云,赵新灿,谭同德.基于OpenCL的异构系统并行编程[J].计算机工程与设计,2012,33(11):4191-4195.

[65]孙志军,薛磊,许阳明,等.深度学习研究综述[J].计算机应用研究,2012,29(8):2806-2810.

猜你喜欢
水文架构水利
基于FPGA的RNN硬件加速架构
继往开来 守正创新——河北省水文工程地质勘查院
功能架构在电子电气架构开发中的应用和实践
为夺取双胜利提供坚实水利保障(Ⅱ)
为夺取双胜利提供坚实水利保障(Ⅰ)
水文
水利工会
水利监督
水文水资源管理
WebGIS架构下的地理信息系统构建研究