基于Matlab的高光谱遥感数据降维并行计算分析

适意信息理论砷究

本单位,消息传递是指这些信息在进程间的相互交换,是实现进程间通信的唯一方式。最基本的消息传递操作:发送消息(send)、接受消息(receive)、进程同步(barrier)、规约(reduction)。共享内存常用干消息侉涕的实现。

图1串并行进程示意图

2.2MPI并行环境

在消息传递库方法的并行编程中,一组进程所执行的程序是用标准串行语言书写的代码加上用于消息接收和发送的库函数调用。目前,MPI(Mes-sagePassingInterface)[10]是比较流行的并行计算开发环境之一。MPI是一个并行计算消息传递接口标准,由MPI论坛(MPIForum)推出,制定该标准的目的是提高并行程序的可移植性和开发效率。MPI论坛是由欧美主要的并行计算机生产商、大学、政府实验室和工厂研究人员组成的一个非官方组织。MPI论坛在1994年6月正式推出了MPI的第一个版本MPI1.0,又于1995年6月推出了MPI1.1,对原有的版本进行了修改、完善和补充[1¨。1997年7月推出的MPl2.0版本中,又加入了远程存储访问、并行I/0、动态进程管理等内容。MPI现在已经成为产业界广泛支持的并行计算标准[121。

在基于MPI编程模型中,计算是由一个或多个彼此通过调用库函数进行消息收、发通信的进程所组成。在绝大部分MPI实现中,一组固定的进程在程序初始化时生成,一般情况下,一个处理器只生成一个进程。这些进程可以执行相同或不同的程序(相应地称为单程序多数据(SPMD)或多程序多数据(MPMD)模式)。进程间的通信可以是点到点的,也可以是集合的。

MPI是目前应用最广的并行程序设计平台,几14乎被所有并行计算环境(共享和分布式存储并行机、MPP、机群系统等)和流行的多进程操作系统(UNIX、WindowsNT)所支持,基于它开发的应用程序具有最佳的可移植性。Matlab2007b开始推出并行计算的函数便是基于MPI开发的,随后Matlab2008a正式推出基于MPI的并行计算工具箱(ParallelComputingToolboxTM)。

3Matlab并行计算实现

Matlab2008a开始推出的ParallelComputingToolboXTM是基于MPI开发的用于加强硬件多线程处理能力,解决密集数据处理和并行计算的工具箱。该工具箱拓展了Matlab高性能并行处理的能力,用户可以根据这些工具箱提供的功能,针对过去基于串行计算的代码,不需要做很大修改就可以使原代码满足并行处理的要求,大大提高数据处理能力和效率。ParallelComputingToolboxTM在单个处理工作站上执行并行程序,如果联合Matlab的分布计算服务器(DistributedComputingServerTM)就可以实现在一个计算机簇中进行分布式并行计算,这对于海量数据和复杂计算来说,是一个很经济实用的解决方案。

3.1并行模式

在并行处理过程中,首先要确定并行编程模型是任务并行还是数据并行。任务传递编程模型主要进行任务的并行作业,相对而言可以有更广泛的应用范围;数据并行编程模型编程相对简单,一般适用于数据并行问题。

(1)任务并行

一般情况下,实现任务并行有两种方法,分别是修改并行的for循环和生成并行工作计划提交。前者,是修改现有串行程序中的循环语句为并行循环语句。其基本的格式为图2(a)所示。而后者是把一个复杂的程序作为工作提交给并行任务管理器,从而实现任务并行。例如一个复杂计算程序downsam-ple.m,完成并行作业,可如图2(b)所示。

任务并行通过消息传递即各个并行执行的部分之间通过传递消息来交换信息、协调步伐、控制执行。任务并行一方面为编程者提供了灵活性,另一方面,它也将各个并行执行部分之间复杂的信息交换和协调、控制的任务交给了编程者,这在一定程度上增加了编程者的负担,因此目前大量的并行程序

设计仍然是并行编程的主要模式。

适寤信息理论硼究

定范围的k重复上述过程,并取结果的平均值,将得到更准确的全局本征维数,即

1,:L^

dt一二≥:d^(x;)

咒=i

4.2并行处理分析

为了论证并行计算的可行性,现对一幅高光谱图像(如图5所示)进行本征维数的求解。该高光谱数据来源于经JPL校正过的美国内华达州Cuprite地区的AVIRIS影像,像元值代表辐射亮度,共包含50个波段(1.99/xm--2.48/1m),每个波段上均有一幅400X350的图像。为了计算该图像的本征维数,将每幅图像存储为一个列向量,即该列向量共有400×350行。

图5高光谱实验数据因此,50个波段便组成了一个有50列的矩阵。

MLE方求解本征维数计算过程中用到了循环语句。因此,将现有串行程序中的循环语句修改为并行循环语句,即利用parfor语句并行循环计算。

由于高光谱数据量大的特点,使得求解所需时间过长。现分别取其中的10000行(即大小为100×100)和20000行(即大小为200×100)的部分图像依次进行以下实验:

(1)串行计算for循环(0labs)

(2)并行计算parfor循环(1labs)

(3)并行计算parfor循环(2labs)

(4)并行计算parfor循环(3labs)

(5)并行计算parfor循环(4labs)

各种实验所得到的得到的结果如图6所示,不难看出,并行计算在计算效率方面有明显的提高,当开启2labs时,计算时间比使用for循环语句缩短了25%~35%,但同时需要指出的是,开启更多的labs并没有得到预期的效果,没有更明显的提高效率,有的甚至出现了效率的降低,而过多的开启labs又造成了计算机资源的浪费。从实验的结果上看,同一台计算机上的并行计算,开启2labs是比较有效的。

(a)不同并行数量用时比较(b)不同并行数量效率增幅比较

图6本征维数计算效率比较图

5结束语

对于大型且复杂的计算,串行计算往往不能适应高效的运行需求,而并行计算是解决问题的有效途径,而且必定是一种趋势。

目前许多并行计算软件都基于MPI的运行标准在得以应用。在此基础上,发掘和利用现有串行算法中的并行性,直接将串行算法改造为并行算法,是并行算法设计的常用的方法之一,也是本文主要

】6的工作目标。此外,基于Matlab是一门高效性的工具语言,本文介绍了Matlab的并行模式以及在不作很大的修改的前提下将串行运算改造成并行运算的详细流程。

作为实验数据,波段数多和数据量大的高光谱影像数据作为实验分析对象,采用Matlab2008a版本中新推出的ParallelComputingToolboxTM工具箱并行计算高光谱影像数据的本征维数。在实验分

析中,将高光谱数据按波段划分成若干个矩阵,把原

相关文档
最新文档