利用CUDA加速连续波雷达测速算法

时间:2022-10-16 07:44:14

利用CUDA加速连续波雷达测速算法

摘要:针对连续波雷达中事后分析系统的运算数据量大,运算时间长的特点,提出了一种利用CUDA平台的GPU进行加速运算的方法,它利用GPU的并行运算功能来完成FFT算法。实验结果表明,相比以往用CPU进行事后分析,利用CUDA平台进行事后分析的速度有明显提升。

关键词:连续波雷达; CUDA; FFT; 事后分析

中图分类号:TN957.5234文献标识码:A文章编号:1004373X(2011)23001403

A New Approach to Accelerate Velocity Measurement Algorithm of

Continuous Wave Radar Based on CUDA

XIONG Chao, CHENG Zhu, WANG Zhuang

(School of Electronic Science and Engineering, National University of Defense Technology, Changsha 410073, China)

Abstract: The process of velocity measurement algorithm based on CPU takes much of time because of the complexity of computing, a velocity measurement algorithm based on CUDA is introduced. The experimental results show that the proposed method is more efficient than CPU for accelerating velocity measurement algorithm of continuous wave (CW) radar.

Keywords: continuous frequency radar; CUDA; FFT; expost analysis

收稿日期:201106130引言

随着现代武器装备的发展,使得人们对靶场雷达测量设备的要求不断提升,要求雷达不但能测量单个目标的距离、速度、方位角、俯仰角,给出目标的三维立体信息,还要能在较远距离上对多个目标进行捕获、跟踪和测量。连续波体制雷达以其设备简单,发射功率低的特点,且在雷达探测范围内它都能精确测速而没有速度模糊。另外,连续波雷达还具有相同的峰值功率下探测距离远、易于采用现代数字信号处理的优点,被广泛应用于现代靶场高精度目标参数测量。它是基于FFT频谱分析技术进行参数测量的。本文主要针对连续波精测雷达事后分析系统的测速部分进行研究。该系统的主要任务是完成对零中频多普勒信号的实时采集和存储,并对所存储的数据进行事后分析,最后得到精确的测量结果。

由于人们对连续波雷达的性能的高要求及人机交互短延时,使得雷达的事后分析系统要求的数据处理量和处理速度较以往有了很大的提高。现在的事后分析系统一般都是用标准的台式计算机进行事后分析,近几年CPU的处理能力受到现有物理工艺和自身架构的限制,发展比较缓慢已不能完全满足用户的需求。而桌面计算机中GPU由于其并行架构,使得其依然能够按照摩尔定律的速度向前发展。目前桌面计算机中GPU的并行运算能力已经超越了CPU的运算能力[1]。连续波雷达的事后分析系统的主要运算集中在对所采集的数据进行FFT运算,由于FFT算法的内在并行性使得其在CUDA架构的GPU上取得一定的加速成为可能。

1连续波雷达测速原理

在连续波雷达中,当目标相对于雷达有径向运动时,就会产生多普勒效应,如图1所示。这样就可以在频域通过频谱分析的方法提取因目标运动产生的多普勒频率,然后通过多普勒频移与速度的关系计算出目标的径向速度。

图1雷达多普勒效应测速示意图对多普勒频率的估计大致有两种方法:第一种方法是用一些特殊的方法如时频分析,这类方法适合用于分析非平稳信号,但是运算量非常的大;第二种是利用谱估计的方法在频域内实现多普勒频率估计,这类方法在测量精度和运算量上都取得了较好的效果[2]。

测速技术的基本原理如图2所示。

图2测速原理图给定模拟回波信号xa(t),在时刻nTs(n=0,1,2,…,N-1)进行采样,可获得一个N点的数字信号序列:x(n)=xa(nTs),n=0,1,2,…,N-1式中:Ts为采样时间间隔,其倒数fs=1/Ts为采样频率。

对该序列进行离散傅里叶变换(DFT)变换,因为其计算量比较大,现在大都采用它的快速算法快速傅里叶变换(FFT)来计算:X(k)=∑N-1n=0x(n)w(n)WnkN,k=0,1,2,…,N-1式中:w(n)为窗函数,它可以用来抑制频谱泄漏的影响;WN为旋转因子。由X(k)可计算出在N个频率:fk=kfs/N,k=0,1,2,…,N-1处的信号功率谱:p(k)=X(k)2,k=0,1,2,…,N-1它们等效于信号x(n)通过N个中心频率为fk的数字滤波器组合后的输出。当目标的多普勒信号频率fd落在第m个滤波器的通带内时,对应的功率谱p(m)就表现为一个峰值,它表明目标的多普勒频率为:fd=mfs/N由于FFT的栅栏效应,在此基础上的多普勒频率估计精度不高。用FFT只是给出频谱的采样值,这时可能得不到实际的谱峰位置。这样就会带来一定的测速误差。因此要通过其他的办法来进一步提高精度,这点在参考文献[3]中已得到很好的解决。

根据目标的运动速度和因其运动产生的多普勒频率fd可求出目标的径向速度为:vr=fdλ/22CUDA架构

2.1CUDA编程模型

CUDA是NVIDIA公司开发的一种将GPU作为数据并行计算设备的软硬件体系。现在的GPU都是以一种CPU+GPU的异构模式来工作的,CUDA编程模型将CPU作为主机,GPU作为协处理器或者设备。CPU负责控制整体的串行逻辑和任务调度,GPU则用于执行一些能够被高度线程化的并行计算任务,即让GPU与CPU协同工作,更确切的说是CPU控制GPU工作。GPU只有在计算高度数据并行任务时才发挥作用。CPU和GPU各自拥有相互独立的存储器空间:分别为主机端(Host)的内存和设备端(Device)的显存。CUDA对内存的操作与C语言的操作基本相同,而显存的操作则需要调用CUDA中API函数库的存储器管理函数,这些管理函数操作包括开辟、释放和初始化显存空间,以及主机端和设备端之间的数据传输等。一旦划分好了程序中的并行部分,就可以把这部分计算任务交给GPU。运行在GPU上CUDA并行计算函数称为Kernel(内核函数)。一个完整的CUDA程序是由一系列设备端Kernel函数并行步骤和主机端串行处理步骤共同组成的。如图3所示,这些步骤按照程序中相应语句的顺序依次执行,满足顺序一致性。

设备端的Kernel是以线程网格(Grid)的形式进行组织的,每一个网格由若干个线程块(Block)组成,而每个线程块又可以划分为若干个线程(Thread)。在设备端运行的线程之间是并行执行的,其中的每个线程会按照指令的顺序串行执行一次Kernel函数。每一个线程有自己的BlockId和ThreadId,用于与其他线程相区分。

图3CUDA编程模型2.2CUDA存储器模型

在CUDA编程结构中线程在执行时变量可能会存储在多个不同位置存储器中。不同的存储器因其位置和作用不同,在访问速度和大小上有所不同,因此在编写程序的时候应该根据需要合理划分数据的存储区域。在以运算为主的CUDA程序中,应该避免让存储器访问和通信成为性能的瓶颈;而在以存储器访问为主的应用中,应该尽可能增大程序的可用带宽。灵活地利用各种存储器特性,实现最大可用带宽。表1列出了CUDA中各种存储器基本属性。

2.3CUFFT库函数

CUFFT库函数是NVIDIA公司为CUDA平台设计的用于计算傅里叶变化的优化函数库,它具有较高的运算效率。它提供了与FFTW库相类似的接口。与之不同的是FFTW的操作数据是存储在内存中,而CUFFT的操作数据是存储在显存中。本文测速算法中FFT运算是运用CUFFT进行的。

表1CUDA存储器基本属性

存储器位置缓存速度访问层次空间RegisterGPU片内否快Thread私有很小Local Memory板载显存否慢Thread私有小Shared MemoryGPU片内否快Block内Thread共用很小Constant Memory板载显存有较慢All Thread共用小Texture Memory板载显存有较慢All Thread共用大Global Memory板载显存否慢All Thread共用大Host Memory主机内存否慢Host程序使用大Pinned Memory主机内存否慢Host程序使用大

3基于CUDA雷达测速流程

利用CUDA实现的基于GPU的连续波雷达的流程图如图4所示,连续波事后分析系统中原始数据经过以下几个步骤的处理:

(1) 把数据从信号分析器的中零中频信号数据从硬盘或内存传输至GPU显存上;

(2) 利用CUDA中的CUFFT函数库对原始数据进行FFT运算;

(3) 利用GPU并行搜索FFT运算后的最大谱峰即谱峰搜索;

(4) 把GPU运算得到的最大谱峰值及其附近的值送回CPU进行谱峰校正并计算出目标的径向速度。

图4测速流程图4实验结果及分析

为了验证基于CUDA算法的连续波雷达测速算法的实际性能,本文在Windows XP操作系统上实现了该算法。所用的硬件配置如下:CPU:Intel Core(TM)2 Duo CPU 2.33 GHz;内存:2 GB;显卡:NVIDIA Geforce 8800GTS。本文提出的应用程序使用扩展的C语言进行编写。编译环境:Visual studio 2008和NVCC 3.2。实验数据采用模拟的雷达回波数据,雷达工作频率为10 GHz,采样频率为0.25 MHz。对CPU和GPU运算时间进行记录,其中CPU采用的是FFTW函数库,GPU端采用的是CUFFT函数库。运算结果见表2。

表2CPU与GPU运算时间比较

数据点数CPU运算时间 /msGPU运算时间 /ms4 0960.296 80.69516 3841.387 60.132 565 5366.387 90.306 9262 14431.531 61.649 31 048 576162.057 34.770 4

从表2中可以看出,在点数较少时,CPU的运算速度会快一些,但是在数据点数较多时,GPU的并行计算能力得以发挥,运算时间明显缩短。

5结语

本文研究了利用CUDA实现基于GPU的连续波雷达测速算法。从实验结果可以看出,相比于传统的基于CPU的测速算法,该算法的速度有明显提升。因此利用CUDA来加速连续波雷达的事后处理系统将会有很好的应用前景。

参考文献

[1]钟联波.GPU与CPU的比较分析[J].技术与市场,2009,16(9):1314.

[2]江志红.多频连续波雷达跟踪控制器算法研究及DSP实现[D].长沙:国防科学技术大学,2003.

[3]袁俊泉.连续波测距雷达信号分析器设计及相关理论与算法研究[D].长沙:国防科学技术大学,2004.

[4]NVIDIA Corporation. NVIDIA CUDA programming guide version 2.0. \[M\]. \[S.l.\]: NVIDIA Corporation, 2008.

[5]NVIDIA Corporation. CUDA programming guide version 1.0. \[M\]. \[S.l.\]: NVIDIA Corporation, 2008.

[6]张舒,褚艳利.GPU高性能运算之CUDA[M].北京:中国水利水电出版社,2009.

[7]曹延伟.多频连续波雷达跟踪控制器设计及相关理论和算法研究[D].长沙:国防科学技术大学,2005.

上一篇:嵌入式环境下Web Service技术的实现 下一篇:改进UKF算法及其目标跟踪性能研究