| 对吉林一号光学卫星的应急快速处理方法研究 |
国内应急应用领域中,传统的光学卫星串行处理方式没有顾及到计算效率,无法跟上目前海量数据光学卫星遥感影像的快速处理需求[1]。目前,国内外相关学者对使用GPU提高计算密集型遥感数据处理算法的效率开展了一些研究[2-4]。在国内,虽然多数学者将各类遥感影像处理算法映射到GPU上进行高性能并行处理,取得了传统串行算法无法比拟的性能优化,但是缺少对于遥感光学影像预处理算法的高性能优化研究,以及GPU映射后算法的进一步优化研究的讨论[5-10]。
本文在CPU/GPU协同处理架构上,提出了一种更高性能的光学卫星遥感预处理方法。
1 相关原理 1.1 基于CPU/GPU的光学卫星快速预处理流程光学卫星数据地面处理流程的输入为卫星下传后经地面控制接收站解调解压后的原始数据,经过数据解析、严格成像模型构建、传感器辐射处理、传感器几何校正、系统几何校正、控制点匹配、几何精校正等算法的相应处理,按需输出1~3级产品,整体流程图如图 1所示。本文重点围绕1~2级产品处理流程及并行算法映射的算法展开讨论。
![]() |
| 图 1 光学遥感影像高性能预处理流程图 Figure 1 Flow Chart of High Performance Optical Image Preprocessing |
国内光学卫星预处理流程依照产品层次可以划分为0~4级产品,以LANDSAT和SPOT数据产品分级为标准,0级产品是最初级的原始二进制数据,从地面站接收的原始数据经格式化、同步、分帧等处理后生成的数据集;1级产品是辐射校正产品,经过辐射校正处理;2级产品是系统几何校正产品,经过辐射校正处理和系统几何校正处理;3级产品是几何精校正产品,采用地面控制点进行几何精校正;4级产品是高程校正产品,采用地面控制点和数字高程模型进行校正的产品,2~4级产品的生产均基于1级产品。其中,2级产品包含地理坐标,是较完整且应用广泛的卫星产品,是后续高级产品的基础,2级产品的精度初步反映卫星影像处理过程的优劣。
在整个CPU/GPU处理框架中,计算量小或不具备并行优化性的算法过程映射到CPU上执行,计算量大且耦合程度高的算法映射至GPU上进行处理。单个算法的映射规律为:在一个线程网格上统一处理整个算法,与CPU之间的交换数据统一一次性进行,减少通信带来的时间损耗。
1.2 异构并行计算模式及CUDA算法优化策略CUDA程序优化是通过优化程序算法、存储器使用和程序指令等使CUDA程序运行时间更短,进一步提高CUDA程序串并行加速比的过程,此过程能够明显提高程序性能。CUDA程序优化方向主要围绕执行配置优化、存储器优化和指令优化三个部分进行。
1.2.1 执行配置优化在利用GPU执行任何计算任务时,都需要为其配置若干个处理内核来对所要处理的问题进行划分。在CUDA中,设置内核执行规模的参数格式为 < < < dimGrid,dimBlock,ShareSize,Streambool>>>,分别表示格网尺寸、线程块尺寸、共享内存大小、使用流否。一个线程格网根据任务规模由程序员设定,同一线程块内的线程可彼此协作,通过共享存储器来共享数据,并利用syncthreads()函数进行线程同步,以协调存储器访问。需要遵循以下优化原则:
1) 尽量减少CPU和GPU的切换,以避免切换时较大的时间开销和带宽开销。本文使用流来隐藏主机-设备通信时间。
2) 合理设计block和grid的维度,保证设备满载,提升设备利用率。最优线程配置需要遵循以下原则:① 每个SM至少要有192个激活的thread(相当于6个活动的warp),才可以高效使用寄存器;② 每个block含有线程数是64的倍数,才能将寄存器的bank冲突降到最低;③ 通常让block的数量是SM数量的2倍以上,以便能使在SM处于不同状态的block(闲置或不闲置)在时间轴上重叠,否则至少使block数量与SM数量一致;④ 当每个thread占用寄存器过多时,不宜在block上分配过多线程,否则会减少在多处理器上激活的block数量,从而使资源占有率降低。
1.2.2 全局存储器对齐优化访问全局存储器距离运算执行单元SP最远,且没有缓存机制,所以全局存储器具有较高的访存延迟,需要400~600个时钟周期,所以全局内存的访问需要满足对齐化访问要求。
CUDA架构中是以一个half-warp(16个thread)为单位发射的,在计算能力为1.1和1.2的CUDA设备上,在加载指令之时,如果该half-warp对全局存储器读取连续单元时,将是一次性加载,否则是16次或多次(计算能力1.2以上的设备)的串行访问。如果每个thread每次存取的数据并不是32 bit、64 bit或128 bit,那就无法符合对齐访问的条件。基于以上分析,本文采取以下措施对代码进行改写:① 使用__align(n)__限定符来定义结构体,编译器会将结构体补足空字节,以满足对齐到段的要求;② 共享存储器在GPU上进行调整,将数据从全局存储器转移到共享存储器上,避开对齐访问的要求。
1.2.3 共享存储器优化共享存储器的优化主要是bank冲突优化。对共享存储器的访问是以半个warp为单位的,当16个连续thread所访问的数组元素分属不同的bank,则不会产生冲突;而当半个warp的多个线程访问的数组元素处于同一个bank时,它们的读写操作就不能同时进行,这几个对同一个bank访问的线程将串行化进行。为了解决bank冲突,本文在代码的变量类型设置中选择,如将double变量(8 byte)变换为float类型(4 byte),以满足half-warp的访问要求。另外,必要时使用数据补白和间隔访问等有效策略。
1.2.4 指令优化GPU主要负责对计算量大且并行程度高的任务进行处理,不涉及过多的控制和逻辑操作,因此片上控制单元较少。一些高级语言中常使用的逻辑操作,如分支语言、循环语句等,在GPU上执行效率会明显降低(如#pragmaunroll控制循环展开)。
1.3 软件性能优化对于软件优化而言,强大的编译器的优化支持越来越强大,而且利用自动优化选项而不是手动修改代码进行优化,可以大大减少程序员在优化中花费的时间和精力。自动优化也便于移植,以后编译器或者硬件升级之后就不需要对代码做修改就可以直接运行。
1.3.1 编译器优化Intel提供了特别针对Intel处理器进行优化的编译器Intel C++ Compiler(简称ICC),针对CPU流水线、微架构等设计细节进行细致的优化,支持的语言包括C++和Fortran等,支持的操作系统包括Linux、Microsoft Windows和MacOSX操作系统。目前,CPU高频化热潮不减,利用CPU高频优势加快代码运行速度是软件优化的重要方式之一,ICC在Windows环境下编译器对C++程序的优化效果明显,且具有与obj、lib的二进制兼容、兼容cl和支持pdb调试的优点。经过ICC重新编译过的算法程序的CPU高频化优势明显,CPU多核运算效率大幅提升。本文使用ICC在2.4 GHz CPU环境下能够超频33%进行高速运算。
1.3.2 I/O运算优化遥感数据及产品的读写具有数据量大、读写缓慢、中间产品多的特点,在光学遥感影像预处理过程中,将严重影响算法软件的执行效率。许多学者利用RAM的高速低延迟性来代替I/O运算的低速高延迟性,取得了良好进展[11, 12]。Ramdisk技术利用系统多余的内存建立磁盘分区,由于其基于物理内存,读写速度基本上等同于系统对内存的操作速度。相比于传统机械硬盘和固态硬盘,Ramdisk的读写速度都要快得多,在建立这样的磁盘分区之后,将操作系统的虚拟内存和临时文件夹从硬盘移动到这个分区里,可以极大改善系统的运行速度,减少硬盘的数据吞吐量。
本文使用Qsoft Ramdisk软件设立内存盘Z,根据主机硬盘容量调整内存盘空间,根据实验需求设置为4 GB,足以处理单景多光谱和全色影像产品。使用CryStaldiskmark测试普通硬盘与内存盘的读写能力,结果如图 2所示。
![]() |
| 图 2 内存盘Z与普通硬盘读写能力 Figure 2 Ability of Read and Write Between Ramdisk Z and Ordinary Harddisk |
2 实验结果与分析 2.1 实验数据与环境
2015年10月7日,我国首颗自主研发的商用高分辨率遥感卫星吉林一号成功发射升空,该星包含1颗光学遥感卫星、2颗视频卫星和1颗技术验证卫星。卫星运行在656 km轨道高度上,可以获取全色0.72 m分辨率、多光谱2.88 m分辨率的图像,幅宽近11.6 km,重量为430 kg。吉林一号全色相机和多光谱相机均采用10 bit量化,标准景影像1级多光谱产品尺寸为4 070像素×4 588像素(约106 MB), 2级多光谱产品尺寸为5 014像素×5 468像素(约156 MB)。本文将吉林一号卫星的一个条带划分为标准景为单位进行处理,同一条带相邻景共有200个像素行的重叠区域,一个条带包含10~12景,单景的覆盖范围约为15 km×15 km。标准景影像1级全色产品尺寸为16 290像素×19 120像素(约594 MB),2级全色产品尺寸为20 230像素×22 643像素(约874 MB)。
本文选择吉林一号3个不同轨道的2个标准景(每景包括全色和多光谱2副影像)共12幅影像作为实验数据。实验环境为:CPU:Mobile Quad Core Intel Core i7-4700MQ,含4颗计算核心,主频2.4 GHz;GPU:NVIDIA GeForce GT 755M,GPU内存频率1 350 MHz,带宽1 020 MHz,Windows操作系统。基于此环境从光学遥感影像原始数据处理至2级影像产品,部分影像产品如图 3所示。
![]() |
| 图 3 全色正射校正影像和多光谱正射校正影像的局部影像 Figure 3 Panchromatic Orthographical Correction Image and Local Image of Multispectral Orthographical Correction Image |
2.2 方法性能
本文首先测得在实验环境下未经优化的GPU上对吉林一号卫星CCD标准景影像(接收CCD数据和MSS(multispectral scanner)数据分为四块原始pxl文件,总计数据量分别约444 MB、89 MB)进行预处理至1级产品和2级产品的时间,包含了数据解析、传感器辐射校正、系统几何校正等算法操作。原始算法未经GPU及多线程并行设计优化,且未经过软件自动优化策略,需要的解算时间很长,成为制约算法处理效率的瓶颈。
因此,本文在现有的光学遥感影像预处理算法基础上,在CPU/GPU协同计算框架下,进行高性能多核计算优化,以提高预处理计算速度,满足影像产品的应急需求。首先将部分串行算法改写为多线程并行算法,即将MTF影像复原、波段配准、CCD拼接以及正射影像几何纠正算法改写为GPU上的CUDA并行程序,在保证精度的同时大大提升了计算效率;然后在CUDA优化方法下改进GPU环境下的并行运行效率。另外,I/O运算缓慢是影像处理的一大瓶颈问题,本文利用Ramdisk技术优化这一问题。Intel C++ Compiler框架改进是对CPU高频计算优化,也带来明显的效率提升。实验验证,以上技术手段在提升运算性能的同时并未对产品精度产生影响。经过实验发现:
1) 执行配置优化,即线程块大小由32×32改为16×16,并没有减少算法的处理时间,在实验环境下,正射校正算法处理时间基本在27~29 s之间,因此选择保持线程块大小为32×32。
2) 由于采用了内存盘优化方法,读写数据的速度大幅提升,中间产品的赋值删除过程加快,对比普通硬盘,内存盘读写速度的加速比达到60倍以上,算法加速时间缩短了10 s。
3) 在算法程序一样的情况下,ICC编译器的优化效果强于GCC编译效果,优化时间达到5倍左右,将算法计算时间从5 min缩短到了1 min以内。实验结果表明,1级CCD影像处理时间在34~38 s之间,1级MSS影像处理时间在30~35 s之间。
4) GPU加速的系统几何校正耗费时间在10 s左右。
传统串行算法中I/O运算速率并没有得到考虑,在本地硬盘中影像和中间产品的读取和复制过程占用了相当长的时间。另外,ICC编译器优化可以使得整个算法软件的串行程序部分的运行速度大大提升。本文利用Qsoft软件开辟了4 GB的内存盘空间,经计算比较,其读写速度提升了60倍以上。使用ICC编译器重新编译了整个算法软件,其运算效率得到了巨大提升。基于吉林一号卫星数据,使用未经以上两种软件优化措施的算法和传统算法进行了对比,结果如表 1所示,本文算法对比于传统算法,达到了11.216的加速比;对比于未经优化的算法,达到了3.53的加速比。
| 表 1 不同算法的2级产品的实验运行时间 Table 1 Runtime of Level2 Product for Different Algorithms |
![]() |
本文实验运行时间如图 4与图 5所示。不同数据量对加速处理的影像集中在GPU和CPU之间的数据传输过程,而在GPU并行加速算法中的影响被大大弱化。实验中,标准景CCD数据量约为MSS数据量的4倍,其数据传输会慢一些,约1~4 s的差异。
![]() |
| 图 4 辐射校正影像生产时间 Figure 4 Production Time of Radiation Correction Image |
![]() |
| 图 5 影像预处理实验测试时间 Figure 5 Test Time of Image Preprocessing Experiment |
2.3 精度测试及正确性
利用自动匹配技术在生成的正射影像和相应区域的参考影像之间选取同名点,用两者的坐标差评定精度,测试数据选取3景影像,参考影像资料选用Google提供的0.5 m高精度遥感影像。测试精度如表 2所示,其中mdx、mdy是影像无控制点x方向与y方向误差,mx、my是影像有控制点的x方向与y方向误差,mdxdy是影像综合误差。实验表明,2级产品的精度达到了CCD影像23.422 m、MSS影像28.411 m的水平。
| 表 2 2级影像产品测试精度 Table 2 Accuracy Statistics of Level2 Image Products |
![]() |
将经CPU处理得到的影像和由GPU处理得到的影像进行逐像素对比,发现两者完全相同,方法的正确性得到了验证,说明选择基于Kepler架构的GPU可完全保证计算结果的精度和正确性。
3 结束语本文系统地探讨了光学遥感影像高性能处理方法,设计了将光学遥感数据处理映射至GPU并行计算的框架。在实验环境下对吉林一号卫星全色及多光谱影像进行光学影像数据预处理生产,与传统CPU串行算法相比,加速比达到了分钟级的近实时处理,可以满足在应急应用领域中对海量光学卫星遥感影像数据进行快速生产发布的要求。
目前,大多数光学遥感影像加速算法的基础是基于单个标准景的并行处理,在多核CPU和多GPU环境下,多景遥感影像并行处理可以进一步提升遥感数据的处理速度,极大地缩短单轨甚至多轨遥感影像的预处理工作,这是本文进一步的研究方向。未来将结合GPU集群、MPI并行通信等技术与多CPU/GPU的加速处理平台结合,深入研究遥感图像的并行处理算法及相关的实现技术。
| [1] | Fang L, Wang M, Li D, et al. CPU/GPU Near Real-time Preprocessing for ZY-3 Satellite Images: Relativer Adiometric Correction, MTF Compensation, and Geocorrection[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2014, 87(1): 229–240 |
| [2] | Yang H, Du Q, Chen G. Unsupervised Hyperspectral Band Selection Using Graphics Processing Units[J]. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, 2011, 4(3): 660–668 DOI: 10.1109/JSTARS.2011.2120598 |
| [3] | Reguera-Salgado J, Calvino-Cancela M, Martin-Herrero J. GPU Geocorrection for Airborne Pushbroom Imagers[J]. IEEE Transactions on Geoscience and Remote Sensing, 2012, 50(11): 4 409–4 419 DOI: 10.1109/TGRS.2012.2192938 |
| [4] | Mielikainen J, Huang B, Huang H A. GPU-Accelerated Multi-Profile Radiative Transfer Model for the Infrared Atmospheric Sounding Interferometer[J]. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, 2011, 4(3): 691–700 DOI: 10.1109/JSTARS.2011.2159195 |
| [5] | 肖汉, 张祖勋. 基于GPGPU的并行影像匹配算法[J]. 测绘学报, 2010, 39(1): 46–51 |
| [6] | 方留杨, 王密, 李德仁, 等. 负载分配的CPU/GPU高分辨率卫星影像调制传递补偿方法[J]. 测绘学报, 2014, 43(6): 598–606 |
| [7] | 杨靖宇, 张永生, 李正国, 等. 遥感影像正射纠正的GPU-CPU协同处理研究[J]. 武汉大学学报·信息科学版, 2011, 36(9): 1 043–1 046 |
| [8] | 李朋龙, 邓非, 何江, 等. GPU-CPU协同航空影像快速正射纠正方法[J]. 测绘地理信息, 2016, 41(2): 44–47 |
| [9] | 刘鹏, 何雯, 肖巍巍. 基于GPGPU技术快速提取数字表面模型[J]. 测绘地理信息, 2014, 39(2): 81–84 |
| [10] | 方留杨, 王密, 李德仁. CPU和GPU协同处理的光学卫星遥感影像正射校正方法[J]. 测绘学报, 2013, 42(5): 668–675 |
| [11] | Wickberg T, Carothers C. The RAMDISK Storage Accelerator: A Method of Accelerating I/O Performance on HPC Systems Using RAMDISKs[C]. The 2nd International Workshop on Runtime and Operating Systems for Supercomputers, New York, USA, 2012 |
| [12] | 龚辉, 徐学洲, 曹荣禄. 基于Ramdisk的全内存式Linux系统的设计与实现[J]. 微机发展, 2005, 15(4): 75–77 |
2017, Vol. 42








