快速检索
  气象   2025, Vol. 51 Issue (10): 1226-1236.  DOI: 10.7519/j.issn.1000-0526.2025.080301

论文

引用本文 [复制中英文]

沃伟峰, 赵昶昱, 顾小丽, 等, 2025. OpenMP在天气雷达基数据压缩/解压和解码中的应用[J]. 气象, 51(10): 1226-1236. DOI: 10.7519/j.issn.1000-0526.2025.080301.
[复制中文]
WO Weifeng, ZHAO Changyu, GU Xiaoli, et al, 2025. Application of OpenMP to Compression/Decompression and Decoding for Weather Radar Base Data[J]. Meteorological Monthly, 51(10): 1226-1236. DOI: 10.7519/j.issn.1000-0526.2025.080301.
[复制英文]

资助项目

宁波市公益性科技计划项目(2024S090)、宁波市气象科技计划项目(NBQX2024003A、NBQX2024005B)、浙江省气象局科技计划项目(2024ZD26)和浙江省“尖兵领雁+X”科技计划(2025C02258)共同资助

第一作者

沃伟峰,主要从事天气雷达数据处理和系统开发. E-mail:winterwisperer@hotmail.com

文章历史

2025年3月5日收稿
2025年8月6日收修定稿
OpenMP在天气雷达基数据压缩/解压和解码中的应用
沃伟峰 1,2,3,4, 赵昶昱 1,3,4, 顾小丽 1,3,4, 陶岚 2,5, 王国荣 2,6    
1. 宁波市气象局,宁波 315012
2. 华东区域相控阵天气雷达应用联合实验室,上海 200030
3. 宁波市智慧气象重点实验室,宁波 315012
4. 宁波市气象台院士工作站,宁波 315012
5. 上海中心气象台,上海 200030
6. 浙江华盛雷达科技有限公司,绍兴 312035
摘要:以常规的PC工作站为基准,采用OpenMP技术,针对压缩/解压过程,设计了一种并行分块处理方案,在12核/24线程的CPU下,当分块数量达到16块时,数据的压缩、解压时间分别能减少至单线程的1/5和1/8左右;针对解码过程,比较了按PPI、径向和距离库不同颗粒下并行处理的结果,发现在径向上并行处理的方案最优,能够将解码时间缩减至单线程的1/8左右。通过上述两项并行优化技术的应用,可以显著降低雷达基数据在数据传输、预处理环节中的压力,也能提升雷达软件的数据载入性能,改善基于基数据的雷达分析软件的交互体验。
关键词天气雷达    基数据    并行处理    压缩    解压    解码    
Application of OpenMP to Compression/Decompression and Decoding for Weather Radar Base Data
WO Weifeng1,2,3,4, ZHAO Changyu1,3,4, GU Xiaoli1,3,4, TAO Lan2,5, WANG Guorong2,6    
1. Ningbo Meteorological Bureau of Zhejiang Province, Ningbo 315012;
2. East China Phased Array Weather Radar Application Joint Laboratory, Shanghai 200030;
3. Ningbo Key Laboratory of Smart Meteorology, Ningbo 315012;
4. Academician Workstation of Ningbo Meteorological Observatory, Ningbo 315012;
5. Shanghai Central Meteorological Observatory, Shanghai 200030;
6. Zhejiang Whole Sense Radar Co., Ltd., Shaoxing 312035
Abstract: In this paper, a parallel chunking processing scheme is designed for the compression/decompression process by adopting OpenMP technology based on a conventional PC workstation as a benchmark. The compression and decompression time of the data can be reduced to about 1/5 and 1/8 of the single-threaded one when the number of chunks reaches 16 under a 12-core/24-threaded CPU. For the decoding process, the results of parallel processing by PPI, radial and distance banks are compared, and it is found that the parallel processing scheme on radial is optimal, for it can reduce the decoding time to about 1/8 of the single-threaded one. Through the application of the above two parallel optimization techniques, the pressure of radar base data in data transmission and preprocessing can be significantly reduced, and the data loading performance of the radar software can also be enhanced to improve the interactive experience of the radar analysis software based on base data.
Key words: weather radar    base data    parallel processing    compression    decompression    decoding    
引言

随着观测技术和预报业务需求的发展, 气象雷达提供的探测要素越来越多, 时空分辨率不断提高, 数据量急剧增长, 给网络传输和存储带来极大的挑战, 也严重制约了雷达产品业务应用的时效性(张德玉等, 2010; 叶开等, 2020; 冯乙新等, 2024)。如何在雷达基数据传输、预处理环节进行优化是高时空分辨率雷达应用需要解决的关键问题之一。

与同时代的其他观测设备相比, 天气雷达在单位时间内产生的数据量更大, 对实时处理、存储和传输的要求更高(赵瑞金和张进, 2018)。以S波段天气业务雷达为例, 双偏振升级后的雷达径向数据分辨率统一提升至250 m, 尤其精细化模式扫描下可达62.5 m, 一次体积扫描产生的基数据增至120~130 MB。在目前的业务体系中, S波段单站雷达数据的传输及其产品的计算尚能在一个观测周期(6 min)内完成。随着X波段相控阵雷达的布网建设及业务运行(程元慧等, 2020; 苏永彦和刘黎平, 2022; 施红等, 2023), 该类型的雷达扫描周期被缩短至1 min左右, 虽其观测半径远低于S波段双偏振天气雷达, 但数据分辨率提高到30 m, 因而单位时间产生的数据量要远远大于S波段雷达。以纳睿雷达的X波段相控阵雷达为例, 单部雷达单次扫描产生的基数据约300 MB, 6 min的数据量达1800 MB左右, 单位时间产生的数据量是S波段雷达精细化扫描的10多倍, 多部X波段相控阵雷达组成阵列后产生的数据量是常规天气雷达的几十倍甚至上百倍。因此, 随着天气雷达在单位时间内获取的数据量不断增大、处理时效要求不断提高, 除了雷达产品、拼图等产品计算过程需要进一步优化(王红艳等, 2009; 鲁德金等, 2024), 基数据传输、预处理环节的性能优化也应得到更多的关注。

1 雷达基数据压缩/解压和解码的效率问题

雷达数据从采集端到产品处理端的传输通常有两种方式, 分别是流传输和文件传输方式(甄廷忠等, 2020; 李恒昶等, 2023; 程飞军, 2023), 由于流传输方式需要厂家的技术支持以及更高的开发门槛, 基数据的文件传输方式在业务平台中有着更广泛的应用。国家级气象部门、天擎数据库和大量的第三方天气雷达二次产品生成系统, 例如灾害性天气短时临近预报业务系统(SWAN), 大都采用基数据文件对接雷达数据, 在每次体扫完成后雷达数据采集端会保存一个基数据文件, 经过压缩后传输给产品处理系统。

在雷达数据的传输中, 数据压缩是必不可少的技术, 不仅能够减少数据量, 还可以节省传输时间和存储时间。在压缩模式下, 压缩文件的传输时间及其压缩、解压时间的总和若能短于未压缩文件的直接传输时间, 意味着该压缩模式使得数据处理时效得到提高。一些学者根据雷达数据的特点设计了针对雷达数据的专有压缩方法(魏应植, 1990; 何红生, 1991; 楚志刚等, 2010; 黄云仙等, 2012; 沈邦跃等, 2023)。Zeng et al(2018)提出基于时间和空间预测的CINRAD天气雷达数据的无损压缩算法; 曾强宇等(2019)提出适用于双线偏振天气雷达数据压缩算法(DPRC), 使用径向预测减小天气雷达数据相关性, 实现天气雷达基数据的高效无损压缩; 胡林宏等(2023)提出时空预测的相控阵雷达数据压缩算法(PARDC), 使用径向预测压缩数据, 减少相关冗余。在PARDC下, S波段双偏振雷达、X波段相控阵雷达数据样本的压缩率分别为5.62和7.17, bzip2通用压缩算法下的压缩率分别为4.6和5.98。上述的数据压缩指标为数据的压缩率, 即如何把雷达数据压缩的更小, 但对于实时处理系统而言, 除了要考虑压缩率, 还要考虑数据压缩的处理时间。一般而言, 压缩时间往往和压缩率成反比, 压缩率越高, 压缩时间越长; 且不同算法之间压缩率差距不会呈倍数的差异。那么, 在保持现有压缩率水平下, 缩短压缩/解压所耗费的时间是提高雷达基数据传输效率的重要手段。

此外, 天气雷达初始观测数据在保存成雷达基数据前需经过编码处理。编码可视为一种有损的数据压缩过程, 初始观测数据通过乘以一个缩放值再加上一个偏移值后取整, 将浮点数据转为一个短整型整数或字节型整数, 单个观测记录存放空间从4 byte减小到2 byte或1 byte, 从而实现数据量的显著减少。

目前在业务应用中, 雷达基数据在传输前通常会经过bzip2程序压缩。针对大范围的强对流天气, 以S波段雷达精细化扫描为例, 一次体积扫描的数据经bzip2压缩后约25 MB, 其中压缩和解压过程分别耗时约2 s和1 s, 解码过程耗时约600 ms, 不考虑网络传输耗时, 单个站点处理时间接近4 s; 再以纳睿达的X波段相控阵雷达为例, 一次体积扫描的数据经bzip2压缩后60~70 MB, 压缩/解压和解码过程的耗时约8 s, 若阵列由8部及以上雷达组成, 不做优化的情况下, 前置处理耗时便超出1 min的扫描周期。为了尽量缩短雷达数据在上述过程的处理时间, 雷达厂家使用了大量高性能的并行化硬件, 并做了大量封闭性的优化策略, 这也是当前X波段阵列雷达处理系统很难开放接口给第三方业务平台的原因。因此, 减少压缩/解压和解码过程的耗时, 对于提高当前的雷达产品系统的时效性有着显著的意义。

2 并行处理技术的选择和OpenMP简介

并行处理是一种计算机的任务执行方式, 是指在多个处理器或者核心上同时执行任务, 需要相应硬件设备的支持, 如高性能计算机、多核中央处理器(CPU)、图形处理器(GPU)等, 这些技术已经被广泛应用于现代计算环境中(王慕华, 2018; 肖汉等, 2023), 成为提高数据处理效率的有效手段。在雷达数据处理系统中并行方案也得到广泛的应用, 胡鹏宇等(2022)分别采用Kafka(分布式发布订阅消息系统)、Cassandra数据库对以TITAN为基础的雷达拼图处理框架进行优化, 实现雷达数据的分布式并发处理、存储, 将雷达数据预处理时间从原来的40 s缩短至10 s, 将拼图时间从原来的1 min缩短至15 s。韩丰等(2023)基于CUDA设计了一种CPU和GPU并行的全国雷达组网拼图算法, 可以在40 s内完成全国500 m分辨率拼图的实时计算, 为高分辨率雷达资料在业务中的应用提供了一种更高效的解决方案。

常见的用于并行处理的软件框架有Hadoop、MPI(message passing interface)、OpenMP(open multi-processing)、OpenCL(open computing language)等, 是不同硬件环境下并行处理的代表性解决方案。Hadoop通过MapReduce并行处理框架来扩展计算节点进行大规模集群运算(肖卫青等, 2015), MPI通过消息传递实现在高性能计算机不同节点之间的并行任务的方式, 而OpenMP是一种在对称多处理系统(symmetric multi processing)中基于共享内存的并行计算方案, 通过线程的创建、任务分配、同步实现并行计算, 适合2~4个CPU的小规模PC服务器或工作站的并行数据处理。OpenMP也可与MPI混合并行, 用于优化单个节点的计算效率, 应用于多种计算架构平台(杨森和周小珊, 2003; 蒋沁谷和金之雁, 2014; 范培勤等, 2021), 当前最新的OpenMP标准甚至支持GPU卸载技术, 可将矩阵运算卸载到GPU上运行, 能够充分发挥GPU的并行优势(庞文豪等, 2024)。因此, 本文采用了OpenMP作为雷达压缩/解压和解码计算过程中并行优化的处理技术。图 1体现了在混合架构中, 支持GPU卸载的OpenMP和MPI的混合架构方案, 其中CPU、共享内存和GPU构成了基本的OpenMP处理单元。

图 1 支持GPU卸载的OpenMP和MPI混合架构 Fig. 1 Hybrid OpenMP and MPI architecture with GPU offloading support

OpenMP是一种应用程序接口(API), 其依赖的共享内存模型是指所有并行的线程在同一个地址空间中共享数据, 每一个线程都可以访问相同的内存位置以及共享变量, 这是一种效率很高的并行机制, 适合计算密集型的数据处理。OpenMP通过被称为fork-join的模型进行并行处理, 程序主流程运行到并行区域时, 会对并行代码分解(fork)成若干个子线程并行处理, 在所有线程执行完后合并(join)回到主线程。图 2展现了一个典型的OpenMP多段处理模型。

图 2 OpenMP的fork-join模型 Fig. 2 The fork-join model of OpenMP

OpenMP代码中, 并行区域是核心的代码段, 由#progma omp parallel声明, 其后大括号内的代码会使用多个线程同时处理, 更常见为使用#progma omp parallel for声明, 将代码下一行的for循环使用多线程执行, 从而充分利用多核CPU, 极大提高处理效率。如下代码所示:

OpenMP对for循环的并行处理可以通过schedule子句声明三种调度方式: static(静态)、dynamic(动态)和guided(指导性)。static是默认方式, OpenMP会为每个线程静态分配指定次数的循环迭代计算, 并且相邻的迭代会被分配在同一个线程, 这种分配方式在逻辑上可以预见; dynamic迭代的分配依赖于运行状态, 在执行时分配迭代, 每当一个线程完成当前分配的迭代时, 它会动态获取下一个块的迭代。这种方式下, 无法事先预料哪些迭代会在哪些线程上运行, 但可以根据实际运行调度资源, 有空的线程会动态分配任务; guided类似于dynamic, 但循环迭代的分配次数从大到小逐渐减少。由于dynamic可以更有效利用空余资源, 在颗粒度适中的情况下, 如果不同分支之间计算量差异较大, dynamic可能比static更优, 但在颗粒度过细的情况下, dynamic分配也会造成严重的内存竞争关系, 反而降低效率。

并行设计时, 当多个线程同时修改同一个区域(即公共变量), 需要通过同步机制来避免数据竞争问题, OpenMP的同步指令包括: #pragma omp single可以指定代码块只由第一个到达的线程执行, 其他线程跳过该代码块; #pragma omp critical则定义一个临界区, 保证代码块在同一时刻只被一个线程执行, 并行域外声明的变量如果在并行域中需要更改, 则必须设置临界区保护, 以防止竞争条件; #pragma omp barrier强制所有线程在此处同步, 确保所有线程都执行到这一步后, 才继续执行后续代码(吴贯锋等, 2019; 葛优等, 2023)。由此可见, OpenMP通过在代码中添加额外指令, 能够简单地将串行代码并行化, 只需要编译器支持OpenMP特性, 不需要深入底层硬件或复杂的多线程管理。在不支持OpenMP特性或关闭OpenMP支持的情况下, 这些额外指令不会造成编译错误, 仅仅改为以串行方式执行。

3 并行优化方案设计 3.1 压缩和解压的方案设计

从压缩算法的原理可以获知, 压缩过程是需要对数据进行扫描, 构建编码表或预测其数据特征, 以此减少冗余的数据, 常见的通用算法例如LZ77/LZ78(Lempel-Ziv, 由Abraham Lempel和Jacob Ziv发布于1977/1978)、LZMA(Lempel-Ziv-Markov chain-Algorithm, 一个Deflate和LZ77算法改良和优化)、Huffman Coding(David Albert Huffman于1952年发明)、Burrows-Wheeler变换(Michael Burrows和David Wheele于1994年发明)等(韩强等, 2019)。压缩过程中输入的数据是流式处理的, 即过程本身是串行的, 因此单个数据块的压缩过程很难实现并行, 要缩短压缩时间, 最有效的手段是将数据通过分块压缩, 实现压缩过程的并行化。

压缩格式是指压缩程序在一定的压缩算法基础上, 将压缩后的数据按特定方式存为文件的规则, 常见的如bzip2程序的bz2格式、WinZip程序的zip格式、GZip程序的gz格式、7-Zip程序的7z格式以及WinRAR程序的rar格式。在这些压缩格式中, 有的使用一种压缩算法, 有的兼容多种压缩算法。例如, GZip程序采用一种基于LZ77和Huffman Coding算法的压缩, bzip2程序采用基于Burrows-Wheeler变换算法压缩(李冰等, 2015), 这两个压缩程序是将二进制数据流输入, 编码得到压缩流后直接存放, 压缩文件并不包含数据原始的文件、路径等信息, 通常和多文件打包的tar程序联合使用以支持目录压缩; 7-Zip程序与WinZip程序的压缩格式则存在一个文件信息表, 压缩文件中能够存放原始数据的目录结构, 因此支持文件夹的压缩。

从功能上看, 7z和zip格式的文件包含了压缩的文件和目录信息, 可以同时处理多个文件, 多个文件压缩时具备并行能力, 而bz2和gz格式的文件只有单个数据块, 无法利用并行机制进行优化处理。由于bzip2官方程序是一个流式的压缩解压处理器, 若仅仅将多个分块的bz2格式数据合并在一起, 官方程序是能够将其依次解压还原获得正确的原始数据。从这个思路出发, 有开发者开发了pbzip2程序, 通过将数据分块, 并行压缩再合并的方式, 其解压过程需要扫描整个文件, 获得分段信息, 再并行解压, 该压缩方式的数据能够很好地兼容原始bzip2程序, 同样, GZip程序也存在一个并行压缩的版本pigz。

参考现有的技术, 要并行化压缩过程, 同时需要兼容未来优选的压缩算法, 本文设计了一种存储格式命名为pz格式, 以pz作为后缀名。在压缩的方式上, 同样采用了分块压缩的思路, 通过添加压缩描述信息来加快解压过程并支持用户指定某种压缩算法: 在压缩信息中记录用户选择算法的代称字符, 如“GZIP”或“BZIP”, 压缩过程中将二进制数据等分成若干个块, 利用并行机制同时对这些数据块进行压缩, 再将压缩后的数据块合成一个整体, 由此使压缩过程得以加速, 最终在压缩信息中存有压缩算法代称、数据的分块数量和数据压缩前后的大小, 在进行解压操作时, 能够为并行处理快速定位数据和申请空间。假设数据被分为N个压缩块, 则压缩信息结构如图 3所示。

图 3 数据压缩信息的存储结构 Fig. 3 Storage structure for data compression information

该方案的特点是允许选择不同压缩算法, 为将来拓展更高效率的算法保留空间, 比如合理分块的PARDC等算法, 若采用bzip2程序的压缩算法, 在压缩时, 可以获得和pbzip2等同的性能; 在解压时, 可以省去类似pbzip2对文件进行扫描的消耗时间, 压缩文件仅比bz2文件多一个可忽略大小的压缩信息。图 4流程图举例说明了压缩的处理过程: 假设原始雷达基数据的大小是2566 byte, 被划分为4块, 则前3块数据的大小均为640 byte, 第4块数据的大小为646 byte, 假设经过压缩后4个数据块大小依次为64、100、124和146 byte, 压缩后的总数据量为4块之和(434 byte), 并将压缩信息作为文件头附加在压缩数据的前方。解压(图 5)与压缩的处理过程相反, 通过文件中附带的压缩信息能够并行处理时快速定位数据和申请空间, 方便快速解压。

图 4 压缩过程流程图 Fig. 4 Flow of compression process

图 5 解压过程流程图 Fig. 5 Flow of decompression process

在具体实现中, 压缩解压过程通过OpenMP指令实现对各个数据块并行处理, 以此减少压缩和解压过程的耗时, 同时若在不支持OpenMP的编译器下, 也能保证串行处理数据。

3.2 解码的方案设计

在实际雷达基数据的存储过程中, 会将32位浮点数值通过缩放系数和偏移系数编码为8位byte型数值。在雷达二次产品生成系统中, 需要针对每个距离库的数据进行大量的运算, 一些旧的算法为了节省内存空间, 不做预先解码处理, 在计算时实时解码8位byte型数值。当前处理系统的内存已经有了极大的提高, 随着雷达观测要素的增多和精度的提高, 并且二次产品的算法不断增多, 统一解码且对解码进行优化能减少大量的时间。

为了缩短雷达二次产品生成前的数据解码时间并为算法提供一致的数据接口, 本方案对不同的雷达数据格式做统一处理, 设计一个基于浮点数的数据容器, 该容器可根据PPI、径向角度、距离库、观测要素四个参数访问观测数据, 不同的数据格式通过对应的解码函数实现数据的解码并存放到容器中, 后续的算法基于数据容器接口访问数据, 从而让算法兼容各类雷达格式, 且避免了不同算法重复解码的问题。

天气雷达基数据有多种格式, 不同的雷达数据格式总体遵循径向数据集合的原则, 包含PPI、径向、距离库、观测要素四个维度, 有些格式具有文件头, 包含不同PPI层次的数据定位信息, 有些则只是存粹的径向数据集合(比如SA雷达格式), 每种格式的解码过程首先需要定位各个径向的入口, 然后根据径向划分出PPI的层级, 再根据不同并行颗粒进行解码对比, 从而获得一个最优的颗粒度。观测要素从属于距离库, 因此本方案测试了距离库、径向、PPI三个颗粒度的并行, 具体流程如图 6所示。

图 6 并行解码测试方案 Fig. 6 Scheme of parallel decoding test
4 方案的测试与应用

针对上文介绍的压缩/解压、解码过程的并行优化方案, 选取宁波双偏振S波段精细化扫描下的雷达基数据进行测试。由于相对于晴空条件, 对流天气过程中数据压缩率较低, 因此随机挑选2024年2月21日对流天气过程中七个时次的基数据作为测试样本, 按压缩前文件大小从小到大依次编号, 压缩前平均为120 MB, 压缩后平均为23 MB。为了提供一个性能基准参考, 本文方案的测试数据均在AMD Ryzen 9 7900x的CPU上进行处理, 该CPU有12个核心、24线程, 属于中端性能的桌面CPU; 测试程序由标准C++语言开发, 编译器为Visual C++ 17(Visual Studio 2022), 测试环境为Windows 11。

4.1 压缩/解压测试

根据CPU支持的线程数上限, 分块数量分别设置成1、4、8和16块, 根据上文设计的压缩/解压方案进行测试。从压缩和解压结果来看, 分块数量对处理效率有着较大的影响。当分块数量达到16块时, 数据的压缩时间平均能减少到单个线程的1/5以下(图 7), 数据的解压时间平均能减少到单个线程的1/8以下(图 8), 部分的数据压缩耗时在8块和16块时相差不大, 甚至有所倒置, 有可能是数据本身压缩率问题或者其他程序运行干扰问题, 从样本的对比来看, 16块时能够在24核CPU上取得较为理想的加速效果。

图 7 不同并行方案下的压缩时间 Fig. 7 Compression time for different parallel schemes

图 8 不同并行方案下的解压时间 Fig. 8 Decompression time for different parallel schemes

结合传输过程可见(表 1), 传输速率与带宽相关, 但带宽的影响是独立可计算的, 测试环境以独占100 Mbps带宽为例, 样本数据非压缩前平均120 MB, 在百兆网络下传输约9.6 s; 压缩后平均23 MB, 在百兆网络下传输约1.8 s。结合压缩和解压的数据的时间, 取样本平均值, 按照四舍五入规则精确到一位小数, 单块和并行均使用bzip2的压缩算法(单块等同于普通bzip2程序压缩), 则单块压缩时间平均为2.2 s, 解压时间平均为1.1 s, 16块并行压缩时间平均为0.4 s, 解压时间平均为0.1 s, 可以得出传输时间: 非压缩模式平均9.6 s, 单个压缩模式平均5.1 s, 16块并行压缩模式平均2.3 s, 可见普通bzip2压缩节省不到1/2的时间, 而16块并行压缩仅为非压缩的1/4, 在资料的传输效率方面具有较大的优势。

表 1 有无压缩下的文件传输时间 Table 1 File transfer time with or without compression

在对业务中不同压缩软件的兼容性测试中, 本文也尝试了将压缩信息的存放位置从文件头部改为文件尾部, 依旧以bz2后缀命名, 测试发现bzip2和WinRAR两款软件能够正确解压还原出原始数据, 尾部的压缩信息数据则被丢弃, 但是使用7-Zip程序解压时则会出现错误。因此, 在业务中若将压缩信息存放在文件尾部, 且采用bzip2程序的算法压缩, 不仅可以较好地兼容原始bzip2的解压程序, 还能通过并行获得快速解压的性能。

4.2 解码测试

对于基数据的解码方案的测试, 依旧沿用了压缩/解压测试中的数据, 在PPI、径向和距离库三个层级进行了并行化测试, 三个层级的并行方案默认使用dynamic调度。通过不同并行方案下的解码测试(表 2), 可以发现按距离库并行方案的处理时间反而比不并行方案的长得多, 最大的可能是因为距离库的点数较多, 导致并行颗粒度过细, 动态模式下分配资源的竞争较大的原因。因此, 在距离库层级上, 又增加了static调度方式进行测试。比较测试结果可以发现, 在径向上并行处理是最优的解码方式, 能够将一个雷达基数据的解码时间缩减至单线程处理时间的1/8以下, 可见在径向上并行是处理雷达基数据的最佳方案。

表 2 不同并行方案下的解码处理时间(单位: s) Table 2 Decoding processing time (unit: s) for different parallel schemes
4.3 成果应用

实验表明, 通过并行压缩程序把实时的双偏振雷达和X波段相控阵雷达的基数据压缩为pz格式供数据处理系统使用, 在二次产品处理系统中, 使用并行解压模块和径向并行处理方案, 从结果上看, 能够使数据的处理效率提高到单线程的5~8倍。

在实际业务中, 本文的方案应用到了笔者开发的《雷达基数据结构分析软件》以及《多波段雷达拼图软件》中。数据压缩均以16块为标准。在《雷达基数据结构分析软件》(沃伟峰等, 2022; 2024)中, 原先使用bzip2进行整体压缩和非并行优化的解析时, 打开一个本地双偏振精细化扫描的基数据文件并处理显示PPI图像的时间需要4~6 s, 经过并行优化后, 这一时间缩短至平均0.5 s, 而针对X相控阵数据, 平均处理也在1 s以内, 比原先提高了8~10倍。原先打开一个基数据需要等待数秒, 经优化后基本能够及时响应用户的切换资料操作, 极大地优化了用户体验。从《多波段雷达拼图软件》在X波段拼图中的表现看, 使用宁波地区9部X波段雷达基数据, 用pz格式的雷达基数据作为输入, 单站处理均使用径向并行, 处理流程包括9个站的基数据文件读取、解压、解码、杂波的简单质量控制、生成各个站点的组合反射率, 最后用9个组合反射率拼成宁波地区约100 m左右分辨率的拼图数据, 网格大小为2400×2400, 整个流程能够在20余秒内计算完成, 初步达到了可用状态。

5 结论和展望

本文针对天气雷达基数据的压缩/解压和解码处理过程, 设计了一套基于OpenMP并行技术的优化方案。从实际应用效果来看, 对雷达数据的传输和处理效率有5~8倍的提高。

在压缩/解压环节, 本文开发了可选择压缩算法的分段并行处理程序, 通过分块压缩再合并整体的方式, 并在压缩文件中添加包含压缩算法、压缩块数等描述信息, 使得解压过程可以快速定位数据和申请空间, 从而压缩/解压过程得以加速。相比单一格式的pbzip、pigz等并行压缩方式, 该方案不仅提高了处理效率, 也为未来针对雷达径向数据特定优化的压缩算法保留了扩展空间。通过一次对流天气过程随机资料的测试, 在12核/24线程的CPU下, 使用bzip2相同的压缩算法, 当分块数量达到16块时, 雷达基数据的压缩、解压时间分别能减少至bzip2程序的1/5和1/8左右。在解码环节, 通过测试比较了PPI、径向、距离库三种不同颗粒度的并行处理速度, 发现以径向为并行颗粒的计算方式, 能够获得最佳的加速效果, 可以将解码时间缩减至单线程的1/8左右。该结论不仅可以用于解码过程上, 而且适用于一切基于体扫的径向数据产品处理策略。

综上所述, 通过对雷达基数据压缩/解压以及解码过程的并行优化, 充分利用了多核CPU的处理能力, 不仅能够为雷达数据前端的传输处理节省大量时间, 缓解天气雷达数据量激增带来的时效性问题, 而且大幅提高基数据文件的载入速度, 优化相关软件的用户交互体验。通过天气雷达观测数据的增量情况, 可以预见, 随着气象业务数据量的增加和技术的发展, 未来的大数据处理将更加依赖于高性能CPU和GPU等不同硬件的异构并行处理能力, 并行程序设计将作为业务化气象算法开发的基本技能, 当前传统的预报员整体上对并行编程技术的了解仍较为缺乏, 基于大数据的科研和业务应用距离有着进一步拉大的趋势, 如何通过合理的分工来降低算法团队并行开发的技术门槛, 对于未来的气象算法的研发工作和成果的业务应用具有重要意义。

参考文献
程飞军, 2023. VB读取天气雷达标准格式基数据的方法[J]. 气象水文海洋仪器, 40(2): 123-125. Cheng F J, 2023. Methods of reading out the base data of standard format from weather radar by VB[J]. Meteor Hydrol Mar Instrum, 40(2): 123-125 (in Chinese).
程元慧, 傅佩玲, 胡东明, 等, 2020. 广州相控阵天气雷达组网方案设计及其观测试验[J]. 气象, 46(6): 823-836. Cheng Y H, Fu P L, Hu D M, et al, 2020. The Guangzhou Phased-Array Networking Scheme set-up and observation test[J]. Meteor Mon, 46(6): 823-836 (in Chinese). DOI:10.7519/j.issn.1000-0526.2020.06.009
楚志刚, 顾松山, 郑建星, 2010. 天气雷达基数据有损压缩方案的设计与实现[J]. 微计算机信息, 26(7): 231-232, 235. Chu Z G, Gu S S, Zheng J X, 2010. Design and implementation of lossy compression proposal based weather radar raw data[J]. Micro-comput Inform, 26(7): 231-232, 235 (in Chinese).
范培勤, 过武宏, 唐帅, 2021. 基于MPI+OpenMP的水声传播并行预报方法[J]. 海洋技术学报, 40(3): 52-57. Fan P Q, Guo W H, Tang S, 2021. Parallel forecast method of underwater acoustic transmission based on MPI+OpenMP[J]. J Ocean Technol, 40(3): 52-57 (in Chinese).
冯乙新, 华连生, 邓壮壮, 等, 2024. 气象信息网络传输中数据压缩与传输效率优化研究[J]. 黑龙江科学, 15(14): 74-77. Feng Y X, Hua L S, Deng Z Z, et al, 2024. Data compression and transmission efficiency optimization in meteorological information network transmission[J]. Heilongjiang Sci, 15(14): 74-77 (in Chinese).
葛优, 金大海, 宫云战, 2023. 基于OpenMP的并行Fortran程序数据竞争静态检测方法[J]. 小型微型计算机系统, 44(11): 2377-2383. Ge Y, Jin D H, Gong Y Z, 2023. Static analysis method for detecting data race of parallel Fortran based OpenMP program[J]. J Chin Comput Syst, 44(11): 2377-2383 (in Chinese).
韩丰, 高嵩, 薛峰, 等, 2023. 基于CUDA的并行雷达拼图算法研究[J]. 气象, 49(10): 1246-1253. Han F, Gao S, Xue F, et al, 2023. Study of algorithms for radar networking based on CUDA[J]. Meteor Mon, 49(10): 1246-1253 (in Chinese). DOI:10.7519/j.issn.1000-0526.2023.080301
韩强, 郑江平, 赵瑞, 2019. 基于北斗卫星传输的预警影响区域数据压缩算法[J]. 科学技术与工程, 19(23): 156-162. Han Q, Zheng J P, Zhao R, 2019. Data compression algorithm of early warning affected area issued by Beidou satellite[J]. Sci Technol Eng, 19(23): 156-162 (in Chinese).
何红生, 1991. 数字化雷达回波资料的一种高效压缩方法[J]. 气象, 17(11): 34-35, 21. He H S, 1991. An efficient compression method for digital radar echo data[J]. Meteor Mon, 17(11): 34-35, 21 (in Chinese). DOI:10.7519/j.issn.1000-0526.1991.11.008
胡林宏, 周红根, 沈邦跃, 等, 2023. 相控阵天气雷达数据压缩技术[J]. 气象科技, 51(3): 356-365. Hu L H, Zhou H G, Shen B Y, et al, 2023. Data compression technology for phased-array weather radar[J]. Meteor Sci Technol, 51(3): 356-365 (in Chinese).
胡鹏宇, 陈传雷, 徐爽, 等, 2022. 一种基于分布式的雷达拼图处理系统框架[J]. 气象科技, 50(5): 630-635. Hu P Y, Chen C L, Xu S, et al, 2022. A radar mosaic framework based on Kafka distributed system[J]. Meteor Sci Technol, 50(5): 630-635 (in Chinese).
黄云仙, 马烁, 艾未华, 2012. 一种新的多普勒天气雷达回波数据无损压缩[J]. 解放军理工大学学报(自然科学版), 13(2): 232-236. Huang Y X, Ma S, Ai W H, 2012. Novel lossless compression of Doppler weather radar data[J]. J PLA Univ Sci Technol (Nat Sci Ed), 13(2): 232-236 (in Chinese).
蒋沁谷, 金之雁, 2014. GRAPES全球模式MPI与OpenMP混合并行方案[J]. 应用气象学报, 25(5): 581-591. Jiang Q G, Jin Z Y, 2014. The hybrid MPI and OpenMP parallel scheme of GRAPES global model[J]. J Appl Meteor Sci, 25(5): 581-591 (in Chinese).
李冰, 龙冰洁, 刘勇, 2015. 一种基于后缀排序快速实现Burrows-Wheeler变换的方法[J]. 电子与信息学报, 37(2): 504-508. Li B, Long B J, Liu Y, 2015. A fast algorithm for Burrows-Wheeler transform using suffix sorting[J]. J Electron Inform Technol, 37(2): 504-508 (in Chinese).
李恒昶, 陈庆亮, 张玉洁, 等, 2023. 新一代多普勒天气雷达基数据解析软件设计与实现[J]. 气象水文海洋仪器, 40(3): 102-105. Li H C, Chen Q L, Zhang Y J, et al, 2023. Design and implementation of base data analysis software for new generation Doppler weather radar[J]. Meteor Hydrol Mar Instrum, 40(3): 102-105 (in Chinese).
鲁德金, 胡姮, 吴蕾, 等, 2024. 天气雷达间一致性评估算法影响因子分析及改进[J]. 气象, 50(4): 475-487. Lu D J, Hu H, Wu L, et al, 2024. Influence factors analysis and improvement of consistency evaluation algorithm between weather radars[J]. Meteor Mon, 50(4): 475-487 (in Chinese). DOI:10.7519/j.issn.1000-0526.2023.121201
庞文豪, 王嘉伦, 翁楚良, 2024. GPGPU和CUDA统一内存研究现状综述[J]. 计算机工程, 50(12): 1-15. Pang W H, Wang J L, Weng C L, 2024. Survey on GPGPU and CUDA unified memory research status[J]. Comput Eng, 50(12): 1-15 (in Chinese).
沈邦跃, 何建新, 曾强宇, 2023. 基于超分辨率的相控阵天气雷达数据压缩算法[J]. 成都信息工程大学学报, 38(6): 621-629. Shen B Y, He J X, Zeng Q Y, 2023. Data compression algorithm of phased array weather radar based on super resolution[J]. J Chengdu Univ Inform Technol, 38(6): 621-629 (in Chinese).
施红, 顾松强, 黄兴友, 等, 2023. 上海浦东X波段双线偏振雷达衰减订正效果分析[J]. 气象, 49(4): 487-494. Shi H, Gu S Q, Huang X Y, et al, 2023. Analysis of attenuation correction to an X-band dual-polarization Doppler weather radar at Pudong, Shanghai[J]. Meteor Mon, 49(4): 487-494 (in Chinese). DOI:10.7519/j.issn.1000-0526.2022.112001
苏永彦, 刘黎平, 2022. S波段双偏振雷达和X波段相控阵天气雷达中气旋识别结果对比[J]. 气象, 48(2): 229-244. Su Y Y, Liu L P, 2022. Comparison of mesocyclone identification results between S-band dual polarization radar and X-band phased array weather radar[J]. Meteor Mon, 48(2): 229-244 (in Chinese). DOI:10.7519/j.issn.1000-0526.2021.120101
王红艳, 刘黎平, 肖艳娇, 等, 2009. 新一代天气雷达三维数字组网软件系统设计与实现[J]. 气象, 35(6): 13-18. Wang H Y, Liu L P, Xiao Y J, et al, 2009. Design and implementation of the CINRAD 3D digital mosaic system[J]. Meteor Mon, 35(6): 13-18 (in Chinese). DOI:10.7519/j.issn.1000-0526.2009.6.002
王慕华, 唐卫, 丰德恩, 等, 2018. 基于消息驱动的气象图形产品加工系统[J]. 气象, 44(5): 692-698. Wang M H, Tang W, Feng D E, et al, 2018. The message-driven making system of meteorological graphic products[J]. Meteor Mon, 44(5): 692-698 (in Chinese). DOI:10.7519/j.issn.1000-0526.2018.05.010
魏应植, 1990. 数字化雷达回波资料二次处理及其图象数据压缩技术[J]. 气象, 16(3): 22-26. Wei Y Z, 1990. Secondary processing and image data compression technology of digital radar echo data[J]. Meteor Mon, 16(3): 22-26 (in Chinese). DOI:10.7519/j.issn.1000-0526.1990.03.005
沃伟峰, 王岩, 赵昶昱, 等, 2024. 晕渲图技术在气象模式数据可视化上的应用[J]. 气象科技, 52(3): 318-329. Wo W F, Wang Y, Zhao C Y, et al, 2024. Application of relief shading method in meteorological model data visualization[J]. Meteor Sci Technol, 52(3): 318-329 (in Chinese).
沃伟峰, 赵昶昱, 段晶晶, 等, 2022. 基于VTK的雷达基数据交互式三维重建功能及其业务应用[J]. 气象科技, 50(3): 449-458. Wo W F, Zhao C Y, Duan J J, et al, 2022. Functional realization and operational application of interactive 3D reconstruction for radar base data via VTK[J]. Meteor Sci Technol, 50(3): 449-458 (in Chinese).
吴贯锋, 徐扬, 常文静, 等, 2019. 基于OpenMP的并行遗传算法求解SAT问题[J]. 西南交通大学学报, 54(2): 428-435. Wu G F, Xu Y, Chang W J, et al, 2019. Parallel genetic algorithm for SAT problems based on OpenMP[J]. J Southwest Jiaotong Univ, 54(2): 428-435 (in Chinese).
肖汉, 肖诗洋, 李焕勤, 等, 2023. 基于GPU加速的全源对最短路径并行算法[J]. 云南大学学报(自然科学版), 45(5): 1022-1032. Xiao H, Xiao S Y, Li H Q, et al, 2023. All-source pair shortest path parallel algorithm based on GPU acceleration[J]. J Yunnan Univ (Nat Sci Ed), 45(5): 1022-1032 (in Chinese).
肖卫青, 杨润芝, 胡开喜, 等, 2015. Hadoop在气象数据密集型处理领域中的应用[J]. 气象科技, 43(5): 823-828. Xiao W Q, Yang R Z, Hu K X, et al, 2015. Application of Hadoop in data-intensive processing of meteorological data[J]. Meteor Sci Technol, 43(5): 823-828 (in Chinese).
杨森, 周小珊, 2003. 应用OpenMP在Linux下实现MM5多线程运行[J]. 气象, 29(1): 52-54. Yang S, Zhou X S, 2003. Using OpenMP to realize multi-threads run of MM5 under Linux[J]. Meteor Mon, 29(1): 52-54 (in Chinese). DOI:10.7519/j.issn.1000-0526.2003.1.014
叶开, 杨玲, 马舒庆, 等, 2020. 阵列天气雷达高分辨率强度场融合方法研究[J]. 气象, 46(8): 1065-1073. Ye K, Yang L, Ma S Q, et al, 2020. Research on high-resolution intensity field fusion method of array weather radar[J]. Meteor Mon, 46(8): 1065-1073 (in Chinese). DOI:10.7519/j.issn.1000-0526.2020.08.006
曾强宇, Chandrasekar V, 何建新, 等, 2019. 基于预测的双线偏振天气雷达数据无损压缩算法[J]. 气象学报, 77(2): 346-357. Zeng Q Y, Chandrasekar V, He J X, et al, 2019. A lossless compression algorithm for dual-polarization weather radar data based on prediction[J]. Acta Meteor Sin, 77(2): 346-357 (in Chinese).
张德玉, 魏荣妮, 王伏村, 2010. 多普勒天气雷达数据管理及运行保障系统[J]. 气象科技, 38(3): 332-335. Zhang D Y, Wei R N, Wang F C, 2010. Data management and operation supporting system of Doppler weather radar[J]. Meteor Sci Technol, 38(3): 332-335 (in Chinese).
赵瑞金, 张进, 2018. 雷达数据传输方式的改进及时效性分析[J]. 气象科技, 46(2): 257-261. Zhao R J, Zhang J, 2018. Mode improvement and timeliness analysis of radar data transmission[J]. Meteor Sci Technol, 46(2): 257-261 (in Chinese).
甄廷忠, 唐学军, 张琪, 等, 2020. CC天气雷达数据流传输业务台站级监控报警系统的设计与实现[J]. 气象科技, 48(3): 368-373. Zhen T Z, Tang X J, Zhang Q, et al, 2020. Design and implementation of monitoring and alarm system for data stream transmission of CC weather radar[J]. Meteor Sci Technol, 48(3): 368-373 (in Chinese).
Zeng Q Y, He J X, Shi Z, et al, 2018. Weather radar data compression based on spatial and temporal prediction[J]. Atmosphere, 9(3): 96. DOI:10.3390/atmos9030096