本发明涉及大规模gnss站网观测数据的解算处理,具体涉及一种gnss站网观测数据处理的并行最小二乘递推参数估计方法。
背景技术:
1、随着我国北斗系统全球覆盖进程的加快推进,以及地基基准站网的加密和升级大规模gnss网迎来了新的发展机遇。作为国家的重要地面基础设施,目前已有多个国家和区域建立了由数百个甚至上千个连续运行参考站组成的gnss(global navigationsatellite system)基准站网。大规模全球gnss站网观测数据提供了丰富的计算资源,但也带来了数据处理上的巨大挑战。随着gnss站网观测数据量的增加,涉及到的大量大型线性矩阵运算,所以数据处理解算耗时随gnss网规模的扩大呈几何级数增加,全球gnss站网观测数据处理面临计算效率低下甚至无法解算的难题,迫切需要与之对应的高效率数据处理模型与方法作为支撑,以充分发挥gstar大网的优势,提升大网服务的精度、可靠性和实时性。寻求大规模gnss网数据的高效快速处理成为目前热点方向之一,受到越来越多的关注和重视。
2、分布式计算技术以其高效的资源利用效率和计算效率,正逐步应用到大地测量领域。由于高性能计算技术的本质是并行计算,因此将传统的gnss站网观测数据处理技术分解并设计合理的并行算法是实现gnss站网观测数据快速处理的首要问题。现有技术中大部分优化方法都是从矩阵运算和高性能计算上出发,或利用矩阵分块可以对计算效率有所提升,但仅从这些角度提升效率有限,基本都没有考虑从程序运行角度进行优化,没有很好的利用计算机资源。面对gnss站网观测数据处理的高计算成本,传统的策略之一是子网解决方案,将庞大网络处理的繁重工作量拆分为几个较小的任务。显然,从理论上讲,子网解决方案不能保证与综合解决方案相比得到最全面的结果。传统的gnss站网观测数据处理程序多是针对单处理器体系架构编写的串行模式,对当前数据处理的硬件平台性能的利用效率很低。对于gnss估计器,目前主流程序都是使用传统的最小二乘算法运算,程序都是串行运行,但根据最小二乘递归算法的数学推导,矩阵前后数据依赖性较强,无法大面积进行并行化编程处理。所以由于估计器算法原因,很少有人从程序的运行结构研究,从最小二乘在导航算法中的数学公式推导出发,找出每一步需要的矩阵和参数表达式,再结合gstar程序进行并行化。由于最小二乘中涉及到数据的迭代计算,无法直接大范围并行,难度较大,需要从每一步细分的部分找到数据可以共享并行的部分,分摊cpu和内存之间的移动成本,提高效率。作为最基本的线性代数核之一,基本线性代数子程序(blas)提供了一组具有可移植接口的矩阵-矩阵运算,为了分摊现代微处理器在处理器和内存之间移动数据的成本,但仍然是从计算角度出发,还有优化的空间。
3、综上,现有技术中存在对硬件资源的利用效率低、矩阵运算效率低、数据处理时间长的问题。
技术实现思路
1、鉴于上述问题,本发明提供了一种gnss站网观测数据处理的并行最小二乘递推参数估计方法,解决了现有技术中对硬件资源的利用效率低、矩阵运算效率低、数据处理时间长的问题。
2、本发明提供了一种gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,利用并行最小二乘递归算法进行时间更新和量测更新;其中,时间更新包括如下步骤:
3、步骤s1.gstar程序运行开始,根据.cfg配置文件,读取第n个历元的gnss观测数据并进行预处理;
4、步骤s2.利用并行最小二乘递归算法对预处理后第n个历元的gnss观测数据进行处理,计算获得计算参数;
5、根据计算参数的维度,获得观测值系数矩阵n(n);对观测值系数矩阵n(n)进行初始化分块,然后通过for循环并行为其赋值;
6、步骤s3.进行第一次写入和读取的并行操作;其中,第一次写入包括存储递归表达式的方程,以及存储根据该递归表达式通过时间更新由第n个历元产生的方程系数信息;递归表达式用于表示计算参数和对观测值系数矩阵n(n)的初始化分块之间的函数关系;
7、第一次读取包括通过调用计算函数对第n个历元产生的方程系数信息进行计算得到时间更新后的观测值系数矩阵包括时间更新后的第n个历元产生的方程系数信息和时间更新后的递归表达式的中间值参数;
8、步骤s4.进行第二次写入和读取的并行操作;其中,第二次写入包括存储时间更新后的第n个历元产生的方程系数信息和时间更新后的递归表达式的中间值参数至中间文件;第二次写入还包括判断中间文件的大小,并进行中间文件的划分;
9、第二次读取包括根据时间更新后的递归表达式的中间值参数对时间更新后的观测值系数矩阵进行分块,再通过重新赋值对进行更新;
10、步骤s5.继续利用并行最小二乘递归算法对预处理后第n个历元的gnss观测数据进行处理,直到第n+1个历元的时间更新,对n值进行累加,重新回到步骤s1直至对gnss观测数据处理完毕。
11、进一步地,利用并行最小二乘递归算法进行时间更新通过removexdata()函数进行并行化处理实现。
12、进一步地,步骤s2,计算参数具体包括常量参数y和随机参数x(n);其中,常量参数y是不随历元更新而改变的参数,包括轨道根数及力模型参数、站坐标和系统间偏差参数;随机参数x(n)是第n个历元的随机参数,包括钟差参数、电离层参数、对流层参数和模糊度参数。
13、进一步地,步骤s2,观测值系数矩阵n(n)为对称矩阵;对观测值系数矩阵n(n)进行初始化分块,具体获得上三角矩阵n11(n)、n22(n)和矩阵n12(n),情况如下:
14、基于初始的误差方程构建初始的法方程;其中,
15、初始的误差方程表示为:
16、v=ay+bx(n)-l;
17、其中,a是y的系数矩阵,b是x(n)的系数矩阵,l是观测值矢量;
18、初始的法方程表示为:
19、
20、其中,p是真实观测值的精度;
21、对观测值系数矩阵n(n)进行初始化分块,得到:
22、
23、其中,w1(n)为atpl;w2(n)为btpl。
24、进一步地,步骤s2,通过for循环并行为观测值系数矩阵n(n)的初始化分块赋值,具体包括从n(n)中读取n11(n)、n22(n)和n12(n),读取过程创建三个子进程thread,并将赋值代码,建立三个for循环封装成函数,n11(n)、n22(n)、n12(n)、w1(n)和w2(n)利用结构体传入子线程,同时运行子线程。
25、进一步地,步骤s3,递归表达式基于最小二乘算法构建,具体为:
26、
27、其中,φ(n)为参数的状态转移矩阵,即历元间参数x(n)和x(n-1)之间的递推关系;pw为虚拟观测值的精度,即x(n)和x(n-1)参数之间的过程噪声;
28、第n个历元产生的方程系数信息为:
29、
30、递归表达式的中间值参数为:
31、
32、进一步地,步骤s3,第一次读取从blas库中调用计算函数,具体包括矩阵求逆和矩阵乘法。
33、进一步地,步骤s3,进行第一次写入和读取的并行操作时,找到冲突的数据,创建一个临时变量,用memcpy拷贝该临时变量的指针地址以及数值,再用临时变量传入子线程。
34、进一步地,步骤s4,进行第二次写入和读取的并行操作时,对于写入阶段,新建指针变量,指向数据内存空间,直接进行修改,保证数据一致性。
35、进一步地,步骤s5,对第n个历元的时间更新进行收尾具体包括对removexdata()函数中的分块矩阵n11(n)、n22(n)和n12(n)分配的空间进行回收,使得在第n+1个历元的时间更新阶段,分配新分块矩阵的内存空间时,正确使用第n个历元的参数信息。
36、与现有技术相比,本发明至少具有现如下有益效果:
37、(1)本发明对估计器的并行化优化,从最小二乘在导航算法中的数学公式推导出发,多线程并行工作目前完成对各历元数据矩阵处理的cpu并行优化,提高了对硬件资源的利用效率和矩阵运算效率,优化效果显著,每个历元相比源程序约有5%-30%左右的效率增长,根据硬盘不同,优化效果不同;解算时间越长,即历元数越多,优化效果越好。
38、(2)本发明缩短了数据处理时间,以30秒间隔,一天的实验结果来说,总时间相比源程序约有5%-15%左右的效率增长,且优化后计算结果保持完全一致,优化效果非常稳定。
39、(3)本发明从传统导航算法的另一个角度,即从数据结构以及代码逻辑角度出发,在效率上对计算程序进行改进。从最小二乘在导航算法中的数学公式推导出发,找出每一步需要的矩阵和参数表达式,实现了gnss估计器的多线程并行化,将gstar的技术特点结合多线程优化,拓展方向较多,具有通用性,方便移植不同系统。
1.一种gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,利用并行最小二乘递归算法进行时间更新和量测更新;其中,时间更新包括如下步骤:
2.根据权利要求1所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,利用并行最小二乘递归算法进行时间更新通过removexdata()函数进行并行化处理实现。
3.根据权利要求2所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,步骤s2,计算参数具体包括常量参数y和随机参数x(n);其中,常量参数y是不随历元更新而改变的参数,包括轨道根数及力模型参数、站坐标和系统间偏差参数;随机参数x(n)是第n个历元的随机参数,包括钟差参数、电离层参数、对流层参数和模糊度参数。
4.根据权利要求3所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,步骤s2,观测值系数矩阵n(n)为对称矩阵;对观测值系数矩阵n(n)进行初始化分块,具体获得上三角矩阵n11(n)、n22(n)和矩阵n12(n),如下:
5.根据权利要求4所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,步骤s2,通过for循环并行为观测值系数矩阵n(n)的初始化分块赋值,具体包括从n(n)中读取n11(n)、n22(n)和n12(n),读取过程创建三个子进程thread,并将赋值代码,建立三个for循环封装成函数,n11(n)、n22(n)、n12(n)、w1(n)和w2(n)利用结构体传入子线程,同时运行子线程。
6.根据权利要求5所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,步骤s3,递归表达式基于最小二乘算法构建,具体为:
7.根据权利要求6所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,步骤s3,第一次读取从blas库中调用计算函数,具体包括矩阵求逆和矩阵乘法。
8.根据权利要求7所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,步骤s3,进行第一次写入和读取的并行操作时,找到冲突的数据,创建一个临时变量,用memcpy拷贝该临时变量的指针地址以及数值,再用临时变量传入子线程。
9.根据权利要求8所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,步骤s4,进行第二次写入和读取的并行操作时,对于写入阶段,新建指针变量,指向数据内存空间,直接进行修改,保证数据一致性。
10.根据权利要求9所述的gnss站网观测数据处理的并行最小二乘递推参数估计方法,其特征在于,步骤s5,对第n个历元的时间更新进行收尾具体包括对removexdata()函数中的分块矩阵n11(n)、n22(n)和n12(n)分配的空间进行回收,使得在第n+1个历元的时间更新阶段,分配新分块矩阵的内存空间时,正确使用第n个历元的参数信息。