论文部分内容阅读
船舶操纵运动数学模型是航海模拟器的核心技术,局部加权学习算法(Locally Weighted Learning,LWL)是一种新的船舶操纵运动建模方法,作为非参数辨识建模方法,输入数据样本数量决定了模型的精度,样本数量与LWL辨识算法求解时间成正比,增加了工程实现难度,本文以并行计算技术对局部加权学习算法进行并行化研究从而提升算法整体性能。1.针对局部加权学习算法实际工程需求,跨平台C语言实现LWL算法,依次对LWL算法的训练与预测过程进行C程序设计。分析了高性能计算中两种并行结构OpenMP和CUDA的相关并行执行方式,以及并行计算在多个领域中的实现及应用。分别在CPU和GPU两种并行平台上对局部加权算法展开研究。2.针对局部加权学习算法预测与训练耗时问题,根据OpenMP并行算法开发的特点和LWL算法数据分布的特性,对LWL算法的加权函数、距离函数、最小二乘求解进行了 OpenMP并行化设计。以Mariner轮整体型数学模型为研究对象进行仿真研究,仿真结果表明,并行算法与串行精度一致,并行的加速效果与处理算法紧密相关,即便在并发线程不超过计算机核心数的情况下,也并非并发线程越多越好。当采用静态调度方式并选取线程数量为8时,并行LWL算法平均训练时间的加速比达到1.6倍,预测时间缩短了 33.0%,OpenMP并行算法具有较好的并行效率。3.针对LWL算法距离测度训练时间过长问题,提出两种基于CUDA的GILWL算法和GOLWL算法。在并行实现GOLWL算法时,将加权函数、距离函数、最小二乘求解等过程与GPU并行算法结合。各函数之间数据传输在GPU内部,降低了 GILWL算法计算过程中CPU与GPU频繁的通信开销。GOLWL算法对并行实现采用任务并行与数据并行相结合的方式,利用GPU线程块与线程分别映射船舶操纵运动样本点的预测值,在CPU端计算目标函数并选取最小目标函数所对应的距离测度。以Mariner轮整体型数学模型为仿真研究对象,GILWL算法并行效果不符合预期设定,GILWL算法运行时间是标准LWL算法的4.38倍,GOLWL算法与LWL算法相比训练时间缩短了 63.8%。仿真结果表明GOLWL算法在与串行LWL算法求解精度一致的前提下,能有效学习船舶操纵运动特性。