论文部分内容阅读
目前我国流域水文信息化的研究越来越受重视,但由于海量的数据处理和复杂的物理计算需要更多的时间开销,流域水文模型的模拟速度已不能满足流域水循环过程的精细化研究需求。基于多核的水文模型并行计算技术是提高模拟速度的主流方法,然而如何合理的设计并行算法应用于水文模型,以及如何高效利用CPU、GPU的计算能力已成为快速模拟中亟需解决的关键性问题。针对上述问题,本文基于WEP-L水循环模型的产流模块,选取OpenMP、MPI和CUDA三种具有代表性的并行技术,对模型进行了并行化设计,并对设计模型进行了效果分析,也在此基础上提出了进一步的优化措施。主要工作及成果如下:(1)基于OpenMP的模型并行计算设计与实现。本文对子流域循环采取指数调度方式,分配子流域处理个数由大到小的递减,进行CPU上多线程动态分配。以及对存在循环依赖关系的全局变量采取线程私有化设计,解决数据竞争问题。并行化的模型适用于多核的单主机。当线程数为20时,黄河流域产流模块计算的总时间达到最小,由单线程的9556秒缩短至1219秒。当线程数为18~20时,加速比峰值为7.8。(2)基于MPI的模型并行计算设计与实现。本文采用对等并行设计模式,全流域划分计算时间相对均匀的子区域,进行CPU上多进程静态分配。消息通信设计采取“点对点”和组通信相结合的方式,进行数据传递。并行化的模型适用于多核的单主机或多主机集群。当通信开销增量大于产流计算时间减少量时,并行计算达到瓶颈。此时,进程数为10,黄河流域产流模块计算的总时间达到最小,由单进程的5874秒缩短至1231秒,加速比峰值为4.8。(3)基于CUDA的模型并行计算设计与实现。本文划分全流域为子流域个数均匀的处理量,依次分配给GPU上数以千计的线程计算,进行多线程静态分配。线程块数采用流多处理器数量的两倍最优设置,充分利用计算资源。以及强迫限制单线程占用寄存器个数,增加内存存取时间换取更多的线程数运行,从限制前的最短5251秒再次缩短为3422秒,加速倍数为普通主机串行计算的2~3倍。