● 摘要
地震层析是利用大量地震观测数据反演研究区域三维结构的一种物理方法。菲涅尔地震层析成像算法(Fresnel Seismic Tomography,FST)是地震层析的一种实现方法。传统的并行菲涅尔地震层析成像算法是在传统的高性能多核CPU集群上实现的,其对层析成像效率的提高起到了至关重要的作用。然而,近年来出现的GPU和MIC众核处理器架构的计算机比传统的高性能多核CPU具有低能耗比的特点,为了降低菲涅尔地震层析算法的计算成本,设计并开发基于众核处理器的菲涅尔地震层析成像算法具有实际意义。本文旨在研究与实现一个基于GPU和MIC众核处理器的高效的菲涅尔地震层析成像算法。首先本文阐述了GPU和MIC众核处理器的体系结构和编程模型,并针对不同的体系结构和编程模型,给出了相应的移植策略和优化方法。其次,本文介绍了地震层析的研究现状和菲涅尔地震层析的物理学原理与算法流程,对核心算法进行了性能分析,总结了地震层析成像算法的程序特点。在此基础上,本文根据菲涅尔地震层析算法本身的程序特点,改进了核心算法设计,使用CUDA编程模型将菲涅尔地震层析算法移植到GPU众核处理器上,并且针对核心函数的特点,优化访存和指令流,使得优化后运行效率是未优化时运行效率的4.8315倍。继而本文提出并实现了三种协同计算方案,提高计算资源利用率。同时,本文根据MIC众核处理器的编程模型,完成了基于MIC众核处理器的菲涅尔地震层析算法设计,然后提出了共享竞争队列、静态任务分配、基于任务偷取的parallel_invoke方案和炮间并行的方案,优化了菲涅尔地震层析算法在MIC众核处理器上的运行时间,使得优化后运行效率是之前的22.53倍。最后,通过对比GPU众核处理器和本机CPU单核处理器的运行时间,以及对比MIC众核处理器与本机CPU单核处理器的运行时间,对基于GPU和MIC众核处理器的菲涅尔地震层析成像算法进行了评价;最后从代码修改量的角度分析了GPU和MIC的编程模型特点。