一种基于GPU并行加速的预条件共轭梯度区域网平差方法与流程

文档序号:11172128阅读:824来源:国知局
一种基于GPU并行加速的预条件共轭梯度区域网平差方法与流程
本发明涉及测绘科学与技术领域,具体涉及一种基于GPU并行加速的预条件共轭梯度区域网平差方法,主要应用于超大规模测区摄影测量等领域。

背景技术:
区域网平差技术经过几十年的发展,其方法和流程已经相对成熟,并且在测绘领域得到了广泛的应用。然而随着科技的加速进步,新的传感器不断涌现,如航天领域的高分辨率卫星,立体测绘卫星,航空领域的规则航空摄影系统,倾斜航空摄影系统,无人机、飞艇摄影系统等。同时,全世界范围内三维建模应用需求不断增加,也使得大量地面车载摄影系统,近景摄影系统,普通数码相机,甚至是智能手机,网络图片库等采集的影像被用于三维建模。影像数据源越来越丰富的同时,其分辨率也不断提高,以前数十米的卫星影像如今可以达到最高0.35米(WorldView-3),航空影像的分辨率更是进入了厘米级时代。分辨率的增加必然会带来数据量的增大,摄影时的航线设计也不再满足传统的条带式规则分布,给相应的数据处理方法带来了一定挑战,受法方程大小的限制,传统的区域网平差技术流程已经不能满足大规模数据处理需求。特别是当测区数据大小超过1万张影像时,传统的区域网平差方法对内存的需求急剧增大,即使有少部分图形工作站内存容量足够大,但大量的内存占用使得计算效率大幅降低,同时,数据处理的硬件成本也随之增大,上述问题均阻碍了各类新型传感器数据的广泛应用。

技术实现要素:
为了解决上述问题,本发明在区域网平差中,引入预条件共轭梯度法求解大规模线性方程组(法方程),避免存储大规模法方程系数矩阵,使得对大规模测区(1万至10万张影像,下文中统称此类测区为大规模测区)数据的区域网平差成为可能,其流程也更加易于并行化设计。预条件共轭梯度法是一个迭代求解的过程,每一次迭代都需要遍历所有的像点观测值数据,每一次区域网平差迭代内部又包括N次预条件共轭梯度法迭代,N是预条件共轭梯度法迭代收敛次数,因而计算量较传统的摄影测量区域网平差流程要大很多,为此,本发明采用GPU并行计算框架,将区域网平差的任务细分成若干部分,分别交由GPU中不同计算线程来完成,以保证处理精度,节省硬件成本,提高数据处理容量,加快处理效率。本发明所要解决的技术问题是提供一种基于GPU并行加速的预条件共轭梯度区域网平差方法,能够解决现有技术的不足。本发明解决上述技术问题的技术方案如下:一种基于GPU并行加速的预条件共轭梯度区域网平差方法,包括以下步骤:S1、在CPU端启动主程序,检测并初始化可用GPU设备,获取GPU设备信息,若存在可用GPU设备,则继续下一步,否则退出;S2、在CPU端导入区域网平差计算需要的原始数据,且将导入的原始数据进行时空基准统一,得到初始数据,所述原始数据至少包括初始内外方位元素数据以及点位数据;S3、将初始数据从CPU端拷贝至GPU内存中,并在GPU端为各类中间数据分配内存空间,根据GPU的计算能力和初始数据的容量大小,在GPU端为第一核函数分配线程块个数n1,每个块包含的线程数m1,得到总线程个数N1=n1*m1;为第二核函数分配线程块个数n2,每个块包含的线程数m2,得到总线程个数N2=n2*m2;为第三核函数分配线程块个数n3,每个块包含的线程数m3,得到总线程个数N3=n3*m3;确定N1、N2和N3的值,为多任务并行计算做准备;S4、进入区域网平差迭代流程:启动GPU端的第一核函数计算法方程常数项向量c,所述第一核函数分为n1个线程块,每个线程块拥有m1个线程,组成共n1*m1=N1个线程,每一个线程分别读取一个或多个像点对应的初始数据,各线程并行计算得到对应的法方程常数项向量c的一个分量,并在GPU端将各个法方程常数项向量c的分量累加,得到完整的法方程常数项向量c,然后将其拷贝回CPU端,作为步骤S6中残差向量s的初值;S5、启动GPU端的第二核函数计算矩阵-向量积M-1c,第二核函数分为n2个线程块,每个区块拥有m2个线程,组成共n2*m2=N2个线程,每一个线程分别读取一个或多个像点对应的初始数据,计算预条件矩阵M对应的分量,并将该分量求逆并乘以法方程常数项向量c得到矩阵-向量积M-1c的一个分量,在GPU端将各个矩阵-向量积M-1c的分量累加,得到完整的矩阵-向量积M-1c,然后将其拷贝回CPU端,作为步骤S6中方向向量d的初值;S6、进入预条件共轭梯度法迭代流程:对未知数改正数向量u、残差向量s以及方向向量d进行初始化;S7、启动GPU端的第三核函数计算矩阵-向量积Bd,第三核函数分为n3个区块,每个区块拥有m3个线程,组成共n3*m3=N3个线程,每一个线程分别读取一个或多个像点对应的初始数据,各线程并行计算得到对应的法方程系数矩阵B的分量,并将该分量乘以方向向量d,得到法方程系数矩阵B与方向向量d的矩阵-向量积Bd分量,在GPU端将各矩阵-向量积Bd分量累加,得到完整的矩阵向量积Bd;S8、根据预条件共轭梯度算法,以及本次迭代中的未知数改正数向量u,残差向量s,方向向量d,预条件矩阵M以及法方程系数矩阵B,计算新的未知数改正数向量u、新的残差向量s以及新的方向向量d;S9、判断此次预条件共轭梯度迭代是否符合预定收敛条件,若符合,则结束预条件共轭梯度迭代,输出新的未知数改正数向量u,执行步骤S10;否则,返回步骤S7;S10、判断此次区域网平差迭代是否符合预定收敛条件,若符合,则结束区域网平差迭代,执行步骤S11,否则,将更新后的未知数改正数向量u从CPU拷贝至GPU,返回步骤S4;S11、根据步骤S9中输出的新的未知数改正数向量u,更新所有的未知数数值,并输出所有的未知数数值。本发明的有益效果是:本发明提供的基于GPU并行加速的预条件共轭梯度区域网平差方法,在传统的区域网平差流程中引入了预条件共轭梯度法求解大规模法方程,避免了对法方程的存储以及直接求逆运算,并使得区域网平差流程适用于并行化设计方案,同时采用GPU并行计算框架,将区域网平差的任务细分成若干部分,分别交由GPU中不同计算线程来完成,以保证处理精度,节省硬件成本,提高数据处理容量,加快处理效率。本发明特别适用于超大规模测区(10万张影像以上,如全省、全国乃至全球作为一整个测区)的区域网平差计算。附图说明图1为本发明实施例一的基于GPU并行加速的预条件共轭梯度区域...
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1