式中,vC=[v1v2]T;AC=[A1A2]T;lC=[l1l2]T。
在最小二乘准则下可以建立它们的联合观测法方程,如式(7)所示
(7)
式中,PC为数据的权阵。
当数据L1和L2不相关时,式(7)中权阵PC=
,其中w1和w2分别为数据L1和L2的加权因子,此时有[18-19]
(8)
由式(8)可知,当数据L1和L2不相关时,使用最小二乘联合平差方法联合数据L1和L2构建的法方程和直接将各类观测数据构建的法方程按照加权因子相加形成的法方程相同[18-19]。即当观测数据不相关时,直接把法方程加权相加就可实现多源数据的最小二乘联合处理,这种方法简单有效。
在最小二乘联合平差中的一种特殊情况是数据L1和L2求解的参数x1和x2可能不完全一样,它们构建的法方程的参数和维数不同,这样不能直接将法方程相加。此时可以分别由数据L1和L2构建参数x1和x2的参数集合xC的误差方程。此时建立的参数xC的误差方程与原来参数x1和x2的误差方程的区别在于设计矩阵中增加了0元素,这些0元素是与观测量无关的参数的系数。进而建立参数xC的法方程,此时将法方程相加可以得到它们对参数xC的联合观测法方程。
2 基于OpenMP技术的块对角最小二乘软件模块设计及验证
构建超高阶重力场模型需要求解的参数较多,虽然BDLS方法的计算量远小于LS方法,但是一般计算机在单核单进程下使用BDLS方法求解2160阶重力场模型的时耗仍很长。为提高BDLS方法的计算效率,本文将OpenMP并行计算引入BDLS方法的解算中,在高性能计算平台上实现超高阶重力场模型的快速解算。
并行计算是指同时使用多种计算资源完成计算任务,是缩短计算时间的有效手段。常用的并行计算有OpenMP多线程技术和MPI多进程技术。OpenMP可为程序中的并行计算区域开辟多个线程,每个线程独立运行,多个线程协同完成并行计算区域的计算任务[20-21]。
使用BDLS方法求解超高阶重力场模型时,需要依次构建法方程矩阵N中的块对角部分和U中与其对应的部分,并对其单独求解。法方程的每个块对角部分的构建和求解可单独进行,在程序设计时一般用DO循环完成。OpenMP技术可以为相互独立的DO循环开辟多个线程,将多个循环分配到多个线程上运行,充分利用高性能计算平台的计算资源,以提高计算效率。
根据BDLS方法和OpenMP技术的特点,本文设计了求解超高阶重力场模型的OpenMP并行计算软件模块。为验证BDLS方法和编写软件模块的正确性,设计了以下模拟试验:使用EGM2008模型(截断到2159阶)模拟计算了半径为6 378 136.3 m球面上分辨率为5′×5′的格网重力异常平均值数据,基于该数据使用编写的BDLS并行计算软件模块求解了2159阶的重力场模型,命名为TestModel,它的系数阶误差RMS如图 2所示(见后文)。试验使用的计算机为HP服务器,所用计算节点上有20个主频为2.4 GHz的Intel Xeon CPU,在单节点上运行,使用了80个线程,计算耗时7 h。从图 2可以看出,求解的模型系数的误差小于10-11量级,试验结果验证了BDLS方法和相应软件模块的正确性,可以高效精确地求解超高阶重力场模型。