APP下载

RPC模型影像校正并行算法设计及优化

2023-08-18张战伟李增三

山西建筑 2023年17期
关键词:并行算法线程内存

张战伟,李增三,庞 坤

(山东明嘉勘察测绘有限公司,山东 淄博 255086)

0 引言

遥感大数据时代,卫星遥感数据量持续增长,数据来源呈多样化发展趋势且更新速度不断加快。对这些大量遥感影像数据进行快速、准确的处理和分析变得越来越重要。几何校正是对卫星影像进行位置精确度的修正,其目的是将影像中的每个像元与地球表面相应的地理位置对应,以消除地球曲率和地形变化等因素对影像位置精度的影响,为后续遥感数据的分析和应用提供准确的地理信息[1]。当前,来自不同传感器的遥感数据不断增加,快速几何校正可以使不同传感器获取的影像具有一致的地理坐标系,从而为遥感数据的融合分析创造条件。在环境变化、资源管理和城市规划等领域,研究者们需要对长时间序列的遥感数据进行分析,快速几何校正可以消除不同时间和空间的遥感数据之间的位置误差,使得时序数据具有可比性[2]。

RPC(Rational Polynomial Coefficients)模型是一种广泛应用于卫星影像几何校正的方法,通过多项式拟合实现像方坐标与物方坐标转换[3]。无法获得高精度数字正射影像等参考数据时,基于RPC模型对遥感影像进行校正能够获得可信的精度[4]。RPC模型具有较高的精度和通用性,在遥感领域的多种应用场景中发挥着重要作用。随着遥感数据量的快速增长,传统的串行处理方法已经难以满足实时性和高效性的需求。因此,针对RPC校正模型开发并行算法具有重要意义。并行算法可以充分利用多核处理器和GPU等并行计算资源,显著缩短遥感影像几何校正的处理时间,提高数据处理效率[5-6]。采用并行算法可以克服单机内存和计算能力的限制,支持大规模遥感数据的快速几何校正,为遥感大数据时代的应用需求提供技术支撑。

随着GPU和多核CPU技术的发展,它们在遥感影像处理中的应用得到了广泛的关注。研究人员在遥感影像分类[7]、正射校正[8]、特征匹配[9]、特征检测[10]、影像融合[11]等多个方面开发了并行算法。在海量遥感影像处理及分析任务中,GPU及多核CPU的应用提供了更高的计算效率,确保了数据的实时性。为了提高处理效率,一些研究人员对RPC校正的并行算法进行了研究。比如,刘宇等人为缩短影像校正时间,使用GPU实现了宽幅遥感影像的并行RPC校正,在高分二号多光谱影像和全色影像上的计算上获得了3.71及8.27的加速比[12]。

虽然GPU在RPC模型进行卫星影像校正并行算法方面具有优势,但目前的并行算法仍存在一些不足之处,缺少对内存限制、通信开销、负载均衡、资源利用率等方面的系统研究。因此,本文对GPU及多核CPU基于RPC模型卫星影像校正并行算法的设计及算法优化进行研究,以进一步提高并行算法的效率以及算法的适用性。

1 方法

1.1 RPC模型

基于 RPC(有理多项式系数)模型[13]的卫星影像校正是一种广泛应用的方法。RPC模型通过有理多项式函数描述地面坐标和像素坐标之间的映射关系。RPC模型通常包括两个有理多项式方程,一个用于计算像素的行坐标,另一个用于计算像素的列坐标。

假设地面坐标为(X,Y,Z),影像坐标为(x,y),RPC模型的基本形式如式(1)—式(6):

(1)

(2)

(3)

(4)

(5)

(6)

其中,Ox,Oy均为平移系数;Sx,Sy均为缩放系数;aijk,bijk,cijk,dijk均为PRC模型参数,i,j和k的取值范围为0~3。这些系数通常由卫星影像供应商提供,使用这些系数可以通过上述公式将地面坐标(X,Y,Z)转换为影像坐标(x,y)。然后,利用这些影像坐标进行影像校正。

1.2 GPU并行算法设计

CUDA(Compute Unified Device Architecture)是NVIDIA推出的一种并行计算框架,可以充分利用GPU的计算能力,加速影像处理过程。本文基于CUDA进行GPU并行算法及其优化研究,算法思路如图1所示。

以下是算法关键步骤的具体细节。

1)RPC读取:读取由卫星影像数据提供商提供的RPC模型参数文件(如*.rpb),获取平移系数、缩放系数及多项式参数数据。

2)CUDA核函数设计:核函数处理单元为单个像素,根据当前线程像素坐标和RPC模型参数计算地面坐标,然后将地面坐标转换为输出影像的像素坐标,最后将输入影像的像素值复制到输出影像的相应位置。

3)线程块和网格大小确定:为了充分利用GPU的计算能力,需要合理地选择线程块和网格大小。线程块大小通常为16×16或32×32,应确保每个线程块中的线程数量是warp大小的整数倍。网格大小根据影像尺寸和线程块大小来确定,以确保所有像素点都被处理。

4)GPU内存分配及数据拷贝:为输入影像和输出影像分配GPU内存,然后将输入影像从主机内存复制到GPU内存。

5)核函数调用:调用核函数进行RPC变换,核函数在GPU上并行执行,每个线程处理一个像素点。

6)GPU内存数据输出:核函数执行完成后,将输出影像从GPU内存复制回主机内存并保存至磁盘。

7)优化:使用共享内存、常量内存来加速内存访问,并进行多流优化、多线程多流优化、对边界和异常值进行处理。具体优化策略包括:

a.将RPC模型参数存储在常量内存中,以减少全局内存访问。

b.使用CUDA多流技术实现任务并行执行,将影像分割成多个子区域,并为每个子区域创建一个CUDA流。

c.针对大影像,影像分割为大小相等的子区域,以确保每个线程处理的任务量相似。

d.根据GPU的计算能力动态调整线程块和网格大小,充分利用GPU资源。

e.根据GPU内存容量采用拷贝数据最大化策略,在GPU上完成所有计算任务,再将输出影像复制回主机内存。

f.异步数据传输与计算策略,使用cudaMemcpyAsync函数实现异步数据传输,在数据传输过程中同时执行其他任务。

1.3 CPUs并行算法设计

OpenMP(Open Multi-Processing)是一种支持多平台共享内存并行编程API,它采用基于指令的方法简化并行程序的开发。OpenMP使用编译器指令(#pragma omp)来实现并行化,使得将串行代码转换为并行代码变得相对简单。通过在适当的位置添加指令,开发人员可以在不修改原始代码结构的情况下实现并行处理。此外,OpenMP还具有可移植性、兼容性、可扩展性、支持多种并行模式以及自动化并行任务管理等特点和优势,使得它成为多核CPU并行编程的理想选择。

RPC模型遥感影像校正的最小处理单元为像素,可以将不同的像素分配给不同的CPU线程进行处理,这种任务分解方法便于使用OpenMP的并行计算能力。由于OpenMP并行实现相对简单,以下通过伪代码的形式来说明本文的并行算法设计及优化方法,如图2所示。

在代码中,对于并行算法的优化主要采用以下策略:

1)使用高效数学库,提高数学运算性能。2)采用一维数组存储影像数据,通过计算索引值来访问像素,减少内存访问开销。3)设计RPC模型参数结构体来组织数据。4)使用OpenMP的“collapse”将嵌套循环合并为一个并行循环,以提高线程利用率。

2 实验及分析

2.1 实验数据及环境

采用高分一号卫星(GF-1)、高分6号卫星(GF-6)、高分7号卫星(GF-7)影像进行实验,高分系列卫星遥感影像标准产品中提供了全色及多光谱影像数据及*.rpb文件(RPC参数)。本文总计开展了4组实验,影像数据量介于0.69 GB~1.81 GB之间,如表1所示。

表1 实验数据情况

实验采用的计算机硬件如表2所示。

表2 实验采用的计算机硬件配置

2.2 实验结果

本文采用加速比评价并行算法的加速效果,加速比计算如式(7)所示。

(7)

其中,S为加速比;T1为单线程算法的执行时间;T为并行算法的执行时间。

表3为4组实验分别采用CPU、多核CPU,GPU进行计算的时长统计,以及多核CPU,GPU与单线程CPU计算的加速比统计情况。

表3 加速比统计情况

由表3可以看出,本文提出的并行算法在计算效率上提升明显,其中GPU的加速比介于22.9~71.5之间,多核CPU的加速比介于5.4~5.7之间;在综合效率上,GPU的加速比介于2.4~32.4之间,多核CPU的加速比介于2.1~5.0之间。其中第4组加速效果最为明显,主要原因是第4组数据为单波段数据,大幅缩短了数据I/O操作的时间,从而体现了并行算法在整体时间上的优势。为了优化数据I/O操作,本文针对波段数多于1的情况,对算法进行了进一步优化,按照波段逐一进行处理,然后再将各波段写入同一影像。表4是按照新的优化策略,GPU计算时间及总处理时间的统计情况。从表4可以看出,该策略取得了明显的数据处理效率提升效果。

表4 I/O优化后加速比统计

相对GPU并行,基于OpenMP进行多核并行的开发十分简单,仅用几行代码即可实现算法的并行,而且在读写密集型并行计算中,可以获得与GPU并行相当的加速比。为了进一步了解多核CPU并行加速的效果,本文对使用不同线程数量对加速结果的影响进行了实验,如图3所示。

由图3可以看出,线程数量较少时处理效率提升明显,当线程数量接近处理器核心数时,处理效率提升趋于平缓。因此,选择合适的线程数量十分重要,通常可以将线程数量设置为处理器核心数或者稍多于核心数以获得相对理想的性能提升。

3 结论

本文针对卫星遥感影像RPC几何校正问题,提出了基于GPU和多核CPU的并行算法并进行了优化。通过对比实验,验证了该算法计算性能的优势。具体来说,本文的主要贡献包括以下几点:

1)提出了一种基于RPC模型卫星影像几何校正的GPU并行优化算法,获得了22.9~71.5的计算加速比及2.4~32.4的综合加速比,加速效果明显。

2)提出了一种基于RPC模型卫星影像几何校正的多核CPU并行优化算法,获得了5.4~5.7的计算加速比及2.1~5.0的综合加速比。

3)针对多波段数据I/O操作压力大的情况,提出分波段处理的优化策略,进一步获得了1.8倍~2.0倍的加速效果。

提出的并行算法可大幅提升遥感影像计算速度,为诸如生态环境监测、城市应急、智慧农业、灾害监测等领域提供更快的数据处理支持。尽管本文所提出的并行算法在遥感影像RPC几何校正上取得了显著效果,但是仍有以下几个方面的改进空间:进一步优化负载均衡策略,提高多核CPU和GPU之间的协同效率;进一步研究遥感数据的I/O优化方法,降低I/O对整体处理效率的影响;针对特定应用场景和硬件配置进行算法定制,以满足不同用户的需求。

猜你喜欢

并行算法线程内存
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
地图线要素综合化的简递归并行算法
“春夏秋冬”的内存
浅谈linux多线程协作
一种基于动态调度的数据挖掘并行算法
基于GPU的GaBP并行算法研究
基于GPU的分类并行算法的研究与实现
基于内存的地理信息访问技术
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究