IDL并行计算技术在SAR风场反演中应用

2014-07-19 15:11卞小林张登荣张春燕王洁
计算机工程与应用 2014年18期
关键词:风场线程个数

卞小林,张登荣,张春燕,王洁

1.杭州师范大学遥感与地球科学研究院,杭州 311121

2.中国科学院遥感应用研究所,北京 100101

3.浙江省城市湿地与区域变化研究重点实验室,杭州 311121

IDL并行计算技术在SAR风场反演中应用

卞小林1,2,张登荣1,3,张春燕2,王洁1,3

1.杭州师范大学遥感与地球科学研究院,杭州 311121

2.中国科学院遥感应用研究所,北京 100101

3.浙江省城市湿地与区域变化研究重点实验室,杭州 311121

1 引言

多核技术、集群技术、混合体系结构等技术在飞速发展,特别是在近几年多核技术的快速发展,科学研究与工程技术领域应用对高性能计算应用需求越来越高[1-4]。ITT-VIS(ITT Visual Information Solutions,现已变更为EXELIS-VIS)公司开发并推向市场的第四代计算机语言IDL(Interactive Data Language),是进行科学数据分析、可视化表达和跨平台应用开发的理想工具。IDL现已经广泛应用于多个领域,目前基于IDL并行计算相关研究主要有Tech-X公司推出的商业软件FastDL与混合语言开发方式将IDL与MPI(Message Passing Interface)相结合在集群系统上实现并行,而基于单机并行计算相关的研究较少[5-6]。除了基于集群系统实现并行计算,如何发挥单机多核的优势,通过多进程、多线程技术来提高系统的效率,需要软件供应商、应用程序开发人员研发更多并行计算程序。在实际开发中,多核编程相对比较复杂,很难快速写出正确的并行计算代码[7]。ITT-VIS公司已经在IDL内部增加了对多进程、多线程的支持,降低了并行程序设计的困难,实现多处理器系统上数值运算加速[8]。本文将以IDL桥对象为例介绍基于多核计算机IDL并行计算技术。

2 IDL并行计算开发方式描述

并行计算是指同时使用多种计算机资源解决计算问题的过程,主要用于解决大型且复杂或者对时效性要求较高的计算问题。多核计算机可以将计算任务分摊到多个CPU核中同时执行,因此并行计算算法可以分为多线程与多进程两类。创建线程比进程开销小,且多线程间通信也比多进程间的通信过程简单和快速,但是需要对已有的串行程序进行大量的代码修改,把程序中适合并行计算的部分变为多线程来实现。多进程适合于多任务独立的并行计算,突出的优点是现有串行程序不需要大量修改[9]。因此充分利用多线程、多进程构建并行计算算法,可以进一步提高算法执行效率。

2.1 IDL到IDL桥解决方案

IDL程序有多种方式调用分布式计算资源,可以应用于专业的集群环境、简单的办公网络与工作站并行计算,实现加速运算。IDL线程池是多线程实现数值计算加速,它由程序根据处理数据元素数量、CPU可用性与算法中多线程可用性等自动评估当前任务是否需要使用线程池,也可以通过IDL程序设置参数判断处理。IDL到IDL桥技术是指IDL桥对象类在主控IDL进程创建并控制其他IDL进程,各个IDL进程之间相互独立,用于实现并行计算与异步操作。该方案主要基于进程实现,由于自IDL5.5版本内部多种数值运算已经增加了对多线程的支持,可以充分利用多核计算机中空闲处理器。

2.2 IDL桥并行开发方式

IDL允许编程使用线程池,线程池的使用主要包括以下方面:

(1)查看当前线程池设置。用法如下:HELP,/STRUCTURE,!CPU

(2)更改线程池设置。使用IDL自带CPU函数,主要有允许更改需处理数据元素的最大个数、最小个数与线程个数。用法如下:

CPU,[,TPOOL_MAX_ELTS=NumMax][,TPOOL_MIN_ ELTS=NumMin][,TPOOL_NTHREADS=NumThreads]

其中NumMax通常设置为大于0的整数,一旦需要处理数据个数大于NumMax,将不使用线程池计算,默认设置为0,没有处理元素最大个数限制。NumMin通常设置为大于0的整数,一旦需要处理数据个数小于NumMin,将不使用线程池计算,默认设置为100 000。NumThreads,默认设置为0,表示使用计算机CPU核心个数,1表示取消使用线程池,其他表示并行计算中使用线程个数。

IDL桥对象子进程主要为密集数值计算而设计,同时也可以应用于后台任务处理而IDL主程序继续执行当前操作。IDL_IDLBridge对象类支持如下操作:

(1)利用SetVar与GetVar方法复制变量实现父进程与子进程之间的数据交换。

(2)子进程中执行任意IDL命令。在同步操作中,父进程等待子进程完成指定任务后继续执行,在异步操作中,进程无需等待,并行执行。

(3)查询子进程异步执行IDL命令当前状态。

在我院档案管理工作中应用优秀计算机信息技术,实现信息全面交互,创建办公自动化大环境,提高自身工作效率。

(4)异步操作命令执行结束时调用注册的回调函数。

(5)终止子进程中当前执行的异步命令。

一旦主进程启动一个或多个IDL_IDLBridge子进程,进程相互间利用这些功能完成并行计算任务。

IDL_IDLBridge对象类拥有三个属性:CALLBACK、OUTPUT与USERDATA。异步命令执行完成的状态(已完成、终止或者由于出错而中断)由调用的CALLBACK属性说明。异步命令执行结束时自动调用用户定义的回收函数。OUTPUT属性提供文件的路径与名称,写入子进程产生的消息。USERDATA属性包含任何类型的数值信息,在异步命令完成后传递到CALLBACK程序中。IDL_IDLBridge对象类包含的方法如表1所示。

表1 IDL_IDLBridge对象类包含的方法

3 IDL并行计算应用

3.1 SAR影像反演风场过程

图1 SAR影像反演风场过程

海面风场是海洋学的重要物理参数,对大气、海洋以及全球环境变化的研究与预报都具有重要作用。SAR影像风场反演处理过程包括SAR影像数据预处理、风场反演、风场反演结果后处理。文中主要介绍风场反演处理子过程包括风向反演与风速反演。基于经过辐射定标的SAR影像反演风场串行处理过程如下:首先对读入的SAR影像数据进行分块处理,然后进行傅里叶变换,根据低频谱拟合风向,最后反演风速,其中迭代求解风速过程比较耗时,难以满足近实时处理发布需求。由于并行SAR影像反演风场处理是基于串行处理过程,因此并行处理过程可以采取局部并行反演或者整体并行反演。其中,局部并行处理流程主要是实现迭代求解风速,整体处理流程实现SAR影像数据块快速傅里叶变换(Fast Fourier Transform algorithm,FFT)、风向拟合与迭代求解风速。具体SAR影像反演风场过程如图1所示。

下面以风场反演整体并行过程为例,介绍IDL实现并行计算主要过程。

首先确定参与并行计算线程个数,执行(1),根据输入SAR影像的行列数,实现自动分块,确定IDL_IDLBridge对象数量,执行过程(2)与(3),创建并初始化IDL_IDLBridge对象;执行过程(4)与(5),设置输入参数;执行过程(6)与(7),编译并执行需要并行计算的函数;执行过程(8),输出参数;最后执行过程(9),销毁对象数组,释放资源。

下面利用一景ENVISAT-ASAR影像数据反演风场为例,分析IDL并行计算性能与效率。ENVISAT-ASAR影像为VV极化,大小为10 385行,8 098列,采用的风速反演模型为CMOD4,公式如下:

其中σ0为后向散射系数,函数F-(y)为分段函数:

U10为海面10 m高处的风速,φ为风向相对于雷达天线方位角的角度;a、b、c、b1、b2和b3可以展开为18个系数的Legendre多项式:修正因子br是入射角θ的函数。

根据SAR影像反演风场过程,基于IDL设计与编写了包含串行、局部并行与整体并行测试程序。由于IDL自7.0版本以后采用了全新的Eclipse框架为工作台,但是其稳定性还有待于进一步验证。因此采用IDL6.3版本实现并测试风场反演算法。测试采用了两台不同配置的计算机。配置1为:操作系统:Win7 SP1 32位,CPU:Inter®CoreTMi7-2600八核处理器,主频:3.4 GHz,内存:4 GB。配置2为:操作系统:Win XP SP2 32位,CPU:Inter®CoreTM2 Quad CPU Q6600四核处理器,主频:2.4 GHz,内存:4 GB。测试分块采用512×512,以每512行为一次并行处理过程,IDL_IDLBridge对象数目为SAR影像数据列数整除512减1(由于影像数据有黑边条带,因此减1),共计14个并行进程,测试结果如表2所示。

为了进一步验证IDL并行计算的性能,结合SAR影像风场反演的实际应用需求,设计以下三组实验。第一组将SAR影像按1 024×1 024分块,参与并行计算进程个数按数据块行处理分为6、36与60,分别表示1次处理1行数据块,共计6个进程;6行数据块,36个进程,60个进程(整个数据块),其中串行算法采用1个线程,并行计算采用8个线程。第二组将SAR影像按512×512分块,进程个数分为14、28、42与56,处理策略与第一组一样。第三组将SAR影像按256×256分块,进程个数分为30与90,处理策略同上。上述实验均在在配置1计算机上执行,在并行计算过程中采取了同步,通过适当降低执行效率确保了并行计算结果的正确性,实验结果如表3所示。

根据实验结果数据,可以得出如下结论:

表2说明IDL本身支持多线程,串行执行程序使用单个线程花费时间大于多线程,但执行相同任务时执行时间不会随着线程数目的增加而明显降低,线程个数超过CPU核心个数,计算时间反而可能会增加;线程数目的个数对并行计算而言,执行时间变化不大。

表2 并行实验测试结果

表3 验证实验测试结果

计算机配置1的性能相比配置2的性能有明显的提高,而表2说明配置2并行计算执行时间比配置1串行执行时间要低,说明通过并行计算实现加速是一种有效的解决方案。

表3实验组1三组数据表明对于相同数据块,参与并行计算的进程个数多,加速效果明显,但不是参与并行计算的进程越多越好。实验组2验证了进程的数目与加速效果的关系,当42个进程并行处理时,达到最优的加速比,而增加到56个进程时,由于并行资源分配与调度,过多进程数反而会降低执行效率。实验组3表明参与计算的数据块小,同时并行处理的数据块多,能够取得较好的加速比(3.667 31)。表3总体说明,并行计算的效率除了计算机资源以外,与参与并行计算的进程数目与处理数据块大小密切相关。在实践中,参与并行计算的程序运算量大,耗时,并行计算的进程数最好是CPU核心个数的倍数,数据块大小要适中,确保所有数据块能装入内存,才能实现高效并行计算,反之则会降低执行效率。

测试过程中发现并行计算的CPU使用率远高于串行计算。经过多次测试发现,并行计算结果与串行计算结果一致;三种执行方式(串行、局部并行、整体并行)每次执行时间均稍有不同,总体不超过执行时间的5%。

4 结束语

由基于IDL桥并行计算反演风场实例可知,通过并行计算确实提高了SAR影像风场反演的效率,其他数据需要快速处理也可以借鉴。IDL语言本身简单,支持多线程与进程间通信(数据共享),具有面向数组,科学数据格式的读写和高级图像的处理能力,能被迅速掌握并应用,快速实现数据处理与分析。基于IDL桥构建并行计算仅需要IDL代码,充分利用多线程与多进程的优势,无需其他应用程序或软件支持,对开发人员的要求与开发成本较低,是一种有效的技术方案。尽管基于IDL桥并行计算具有以上优点,可以充分发挥多核计算机的优势,但是其是有限部署,受计算机内存的限制,并且不支持交互式界面的异步交互。

IDL能够轻松地与其他软件工具集成,通过测试,在.NET环境下可以调用IDL桥并行计算反演风场算法,可以根据项目实际需要选择合适的集成方式。另外,IDL桥并行计算反演风场处理策略同样可以用于集群并行计算解决方案,如FastDL、MPI与可调用IDL相结合与J2EE的EJB(Enterprise Java Bean)Java桥等。

[1]张武生,薛巍,李建江,等.MPI并行程序设计实例教程[M].北京:清华大学出版社,2009.

[2]杜静,敖富江,王华兵,等.高性能SAR成像程序的并行粒度选择技术[J].计算机应用,2011,31(8):2079-2182.

[3]薛笑荣,曾琪明.并行计算在SAR图像处理中的应用[J].计算机应用,2006,26(增刊):1-2.

[4]沈占锋,骆剑承,陈秋晓,等.高分辨率遥感影像并行处理数据分配策略研究[J].哈尔滨工业大学学报,2006,38

[12]Han Xiongli,Hua Deng.An approximate internal modelbased neural control for unknown nonlinear discrete processes[C]//IEE Trans on Neural Networks,2006,17(3):659-671.

[13]魏东.非线性系统的神经网络参数预测及控制[M].北京:机械工业出版社,2008:25-32.

[14]戴文战,丁良,杨爱萍.内模控制研究进展[J].控制工程,2011,18(4):487-492.

[15]樊京,刘叔军,盖晓华,等.MATLAB控制系统应用与实例[M].北京:清华大学出版社,2008:162-178.(11):1969-1976.

[5]路兴强,余安喜,梁甸农.一种面向IDL的分布式并行方法[J].系统仿真学报,2006,18(S2):256-258.

[6]Parallel processing using IDL[2012-03-11].http://forum. inforest.gr/index.php?topic=12.0.

[7]于继江.基于多核多线程的并行计算组件设计[J].煤炭技术,2010,29(5):178-180.

[8]Multi-threading in IDL[2012-03-11].http://www.softbooks. com.pl/idl/files/download/IDL_MultiThread.pdf.

[9]仲悟之,宋新立,汤涌,等.基于多进程的电力系统频域特征值并行搜索算法[J].电力系统自动化,2010,34(21):11-16.

BIAN Xiaolin1,2,ZHANG Dengrong1,3,ZHANG Chunyan2,WANG Jie1,3

1.Institute of Remote Sensing and Earth Sciences,Hangzhou Normal University,Hangzhou 311121,China
2.Institute of Remote Sensing Applications,Chinese Academy of Sciences,Beijing 100101,China
3.Zhejiang Provincial Key Laboratory of Urban Wetlands and Regional Change,Hangzhou 311121,China

The progress of sea surface wind field retrieval from SAR(Synthetic Aperture Radar)images contains iterative solution of the retrieval model,which is difficult to meet the demand for near real-time forecasting.IDL(Interactive Data Language)parallel computing technology in multi-core computers is used to implement it.The method of parallel computing programming based on IDL bridge according to IDL program design features is analyzed.It proposes a parallel computing algorithm of wind field retrieved from SAR images based on IDL bridge object according to retrieval process. Its practicability is verified.The results show that the proposed technique improves the computation efficiency which also provides a solution for other data processing.

Interactive Data Language(IDL);parallel computing;multi-core;wind field retrieval;Synthetic Aperture Radar(SAR)image

SAR影像反演海面风场需要对反演模型进行迭代求解,难以满足近实时预报的需求。利用IDL并行计算技术在多核计算机实现SAR风场反演。基于IDL程序设计特点,分析IDL桥并行计算程序设计方法,根据SAR风场反演流程,提出基于IDL桥对象构建的风场反演并行计算算法,验证了其实用性。结果表明,基于IDL桥对象构建的并行计算算法提高了计算效率,为其他数据快速处理提供了解决方案。

交互式数据语言;并行计算;多核;风场反演;合成孔径雷达(SAR)影像

A

TP302

10.3778/j.issn.1002-8331.1210-0342

BIAN Xiaolin,ZHANG Dengrong,ZHANG Chunyan,et al.Wind field retrieval from SAR images based on parallel computing technology in IDL.Computer Engineering and Applications,2014,50(18):261-264.

杭州师范大学遥感与地球科学研究院开放基金(No.PDKF2012YG04)。

卞小林(1982—),男,助理研究员,主要研究方向为微波遥感及其应用开发;张登荣(1966—),男,博士,教授,主要研究方向为遥感地质、GIS开发应用;张春燕(1983—),女,博士生,助理研究员,主要研究方向为生态环境变化、GIS应用与开发;王洁(1981—),通讯作者,女,博士,讲师,主要研究方向为海洋遥感。E-mail:wangjiesl@126.com

2012-10-31

2012-12-20

1002-8331(2014)18-0261-04

CNKI网络优先出版:2013-01-11,http://www.cnki.net/kcms/detail/11.2127.TP.20130111.0954.027.html

猜你喜欢
风场线程个数
基于FLUENT的下击暴流三维风场建模
怎样数出小正方体的个数
基于国产化环境的线程池模型研究与实现
等腰三角形个数探索
怎样数出小木块的个数
怎样数出小正方体的个数
“最美风场”的赢利法则
浅谈linux多线程协作
侧向风场中无人机的飞行研究
线程池技术在B/S网络管理软件架构中的应用