技术开发 频道

优化双基地雷达定位精度分析

  【IT168 技术】

  注:本文为IT168&NVIDIA联合举办的“如何并行化我的应用”方案征集活动参赛作品。本次方案征集活动详情见:http://cuda.itpub.net/thread-1299715-1-1.html。近期活动的大部分方案,将会逐步与大家分享,不可错过哦!

  CUDA ZONE专区:http://cuda.it168.com

  CUDA技术论坛:http://cuda.itpub.net

  处理雷达数据时,常常会碰见数据量太大,处理时间相当长,达不到工程上的需求。这时就必须仔细分析算法,采用优化循环处理和对数据分块等方法来进行并行程序设计提高处理速度。目前并行程序设计的状况是:①并行软件的发展落后于并行硬件;②和串行系统的应用软件相比,现今的并行系统应用软件甚少且不成熟;③并行软件的缺乏是发展并行计算的主要障碍; 至今并行算法范例不能被很好地理解和广泛地接受;并行程序设计是建立在不同的计算模型上的,而它们没有能像冯诺依曼模型那样被普遍的接受和认可。绝大部分被使用的并行程序设计语言都是Fortran和C的推广,他们都不能够充分地表达不同并行结构的特点,既不成熟也不通用。并行程序设计工具依赖于具体的并行结构和计算机代的更迭,既不通用也不稳定,在某个并行平台上开发的并行程序很难移植到别的或将来的并行机上。

  项目要求对双基地雷达跟踪定位精度分析。其特点是双基雷达探测范围较远,故对雷达探测范围平面定位误差分析时数据量很大。而利用数据冗余提高定位精度算法运算量巨大,采用串行作业,若对影响定位精度的因子分析时,计算机往往需要较长时间处理,影响实时应用。

  按照开发流程的顺序,可以把并行程序设计分成以下四个阶段:

  1.可行算法的描述和分析;

  2数据分解和工作分解;

  3选择编程的类型;

  4性能优化检查

  首先,对双基地雷达探测范围分析,并研究跟踪时定位精度算法和利用数据冗余提高定位精度的算法。

  其次仔细对基础算法分析,将之分解为若干相对独立的部分;进而可以把这些相对独立的部分分配到多个执行单元执行。数据分解是将一个比较大的待处理的数据集,如数组分割为若干子集,从而可以的不同部分的成员实施同时的运算或操作。对双基地雷达探测范围进行分析,由于探测范围的对称性,可以根据布站位置把探测范围分块来并行处理每块的数据。可以探测范围分为4块区域,分别命名为A~D,如下图所示:

如何并行化我的应用方案

  然后分别按照顺序存储在4个矩阵里。任务分解便是分析算法里可以并行处理的子函数。可以采用两种方法对双基地雷达进行定位,这样就可以把这两种方法分别编成子函数进行并行处理。

  然后通过VC++的openMP进行处理,这主要是用的硬件是单机多核,而openMP是针对共享内存的编程技术,是多线程,适合于单机多核或多处理器环境,编写相对简单,并且可以将一个串行程序逐步改造成并行程序。

  通过对比串行作业和优化后的并行处理,加速比S=3;可以看出并行后运行时间大大减少,有利于工程实现。

0
相关文章