论文部分内容阅读
由于大地电磁(MT)对浅地层的目标体反演效果有限,而可控源音频大地电磁(CSAMT)对浅地层的目标体反演效果较好;同时可控源音频大地电磁对深部的反演效果有限,而大地电磁对深部的反演效果较好。为了提高MT对浅地层目标体和CSAMT对深部目标体的反演效果。本文采用了MT与CSAMT的联合反演。通过对合成数据的联合反演,取得了较好的计算结果。由于联合反演中使用的数据量较大,导致计算时间较长,所以本文还对联合反演开发了MPI并行算法,获得了非常好的加速效果。大地电磁非线性共轭梯度反演算法(NLCG)是大地电磁二维反演的有效方法之一,通过该方法能避免直接计算雅克比矩阵,通过一次正演两次”拟正演”能完成一次模型更新,节约大量的计算时间,提高了反演的计算效率。由于大地电磁频带较宽,当二维模型为较大网格时,其正演和拟正演的时间耗费较大,为了保持NLCG的这一优势,使其在大量的数据和网格计算中充分发挥其算法特性,我们在NLCG算法中加入并行算法。很多学者只针对某个串行算法研究单一的并行算法,比如MPI或GPU,而本文研究非线性共轭梯度MPI和GPU的混合并行反演算法。大地电磁中的各个频率都要进行正演和”拟正演”求解,并且求解过程相互独立,所以在正演和”拟正演”时利用MPI将其多个频率分配在不同的进程中进行计算,并在计算过程中的解方程部分使用GPU并行。MPI并行算法解决了并行程序中文件读、写需互斥的问题。采用MPI_Gatherv数据收集方法,使收集数据更加灵活;使程序更加便于编写,便于维护。通过与串行程序计算效率对比,获得了较好的加速效果。在GPU并行算法中,我们采用了两种方法:自行编程的CUDA算法和调用CULA Sparse函数库算法。在使用Cula Sparse并行库的过程中,需对矩阵进行存储格式转换,格式转换的效率至关重要,通过优化转换算法,节约了总的运行时间。在将MPI和GPU应用于NLCG算法的过程中,MPI+Cula sparse的效果不太稳定,用库的过程中出现内存不够等错误。在混合算法中本算法采用的是MPI+CUDA的算法。最后,开发了一套用于大地电磁反演的非线性共轭梯度MPI+GPU混合并行反演程序和一套大地电磁和可控源音频大地电磁联合反演MPI并行程序。