主权项 |
一种基于GPU架构的分段归一化最小均方误差杂波对消方法,其特征在于包括如下步骤:(1)在CPU主机端对归一化最小均方误差NLMS滤波器的参数进行初始化:(1a)将雷达目标信号、杂波信号和噪声信号作为归一化最小均方误差NLMS滤波器主通道的接收信号sig;将杂波信号和噪声信号作为归一化最小均方误差NLMS滤波器辅助通道的接收信号ref,这两种信号sig、ref的数据长度S根据接收信号的采样率设定,并根据杂波强度设定杂波对消阶数的值C;(1b)把归一化最小均方误差NLMS滤波器主通道信号sig分为两段,记为sig1、sig2,把辅助通道信号ref分为两段,记为ref1、ref2;sig1、sig2、ref1、ref2数据长度均为S1,sig1和sig2及ref1和ref2重叠的数据长度均为L;(1c)在CPU主机端分配杂波对消所需的内存、显存资源;(1d)设归一化最小均方误差NLMS杂波对消分段后,杂波对消权向量w1<sub>C×1</sub>、w2<sub>C×1</sub>的初始值均为[0 0 … 0 0]<sub>C×1</sub>;(1e)设杂波对消初始时刻迭代初值l<sub>1</sub>、l<sub>2</sub>均为0;(1f)设归一化最小均方误差NLMS杂波对消分两段后,误差信号初始值分别为:e1=sig1、e2=sig2;(1g)在CPU主机端,把主通道信号sig、辅助通道信号ref的数据加载到CPU内存中;(2)在CPU主机端上创建两个杂波对消的工作线程;(3)选择两块能支持计算统一设备架构CUDA的图形处理器GPU,并将两块图形处理器GPU与两个工作线程进行连接;(4)分别确定调用一次图形处理器GPU内核函数所能计算出的数据点数M,调用GPU内核函数的次数N及分段后的数据长度S1;(5)每个CPU工作线程在图形处理器GPU设备端加载各自分段后的主通道、辅助通道信号数据,分别存入sig1、ref1、sig2、ref2中,即:sig1=sig[1 2 … S1‑1 S1]<sub>S1×1</sub>,ref1=ref[1 2 … S1‑1 S1]<sub>S1×1</sub>,sig2=sig[S1‑L+1 S1‑L+2 … S‑1 S]<sub>S1×1</sub>,ref2=ref[S1‑L+1 S1‑L+2 … S‑1 S]<sub>S1×1</sub>;(6)在两块图形处理器GPU设备端上,分别调用内核函数进行归一化最小均方误差NLMS杂波对消处理:(6a)设两个内核函数的线程格grid均为(1,1),线程块block均为(C,1),其中(1,1)表示内核函数由一个线程块block组成,(C,1)表示线程块block由C个图形处理器GPU线程组成;(6b)在两块图形处理器GPU设备端上,分别设置各自迭代初值为:k<sub>1</sub>=0、k<sub>2</sub>=0;(6c)在第一块图形处理器GPU设备端上,获取k<sub>1</sub>+l<sub>1</sub>×M时刻的主通道信号<img file="FDA0000800462060000021.GIF" wi="286" he="106" />和辅助通道参考信号<img file="FDA0000800462060000022.GIF" wi="115" he="90" />(6d)在第二块图形处理器GPU设备端上,获取k<sub>2</sub>+l<sub>2</sub>×M时刻的主通道信号<img file="FDA0000800462060000023.GIF" wi="316" he="107" />和辅助通道参考信号<img file="FDA0000800462060000024.GIF" wi="129" he="92" />(6e)在两块图形处理器GPU设备端上,利用k<sub>1</sub>+l<sub>1</sub>×M时刻和k<sub>2</sub>+l<sub>2</sub>×M时刻的主通道信号<img file="FDA0000800462060000025.GIF" wi="640" he="108" />和辅助通道参考信号<img file="FDA0000800462060000026.GIF" wi="275" he="88" />分别计算这两个时刻的误差信号<img file="FDA0000800462060000027.GIF" wi="529" he="102" />(6f)在两块图形处理器GPU设备端上,利用k<sub>1</sub>+l<sub>1</sub>×M时刻和k<sub>2</sub>+l<sub>2</sub>×M时刻的辅助通道参考信号<img file="FDA0000800462060000028.GIF" wi="272" he="93" />分别计算步长因子μ1、μ2;(6g)在两块图形处理器GPU设备端上,利用k<sub>1</sub>+l<sub>1</sub>×M时刻和k<sub>2</sub>+l<sub>2</sub>×M时刻的误差信号<img file="FDA0000800462060000031.GIF" wi="522" he="102" />和步长因子μ1、μ2,分别更新杂波对消权向量w1<sub>C×1</sub>、w2<sub>C×1</sub>;(6h)在两块图形处理器GPU设备端上,分别更新各自的迭代值:k<sub>1</sub>=k<sub>1</sub>+1,k<sub>2</sub>=k<sub>2</sub>+1;(7)重复迭代步骤(6c)~步骤(6h)共M次,在两块GPU设备端上,分别得到M点杂波对消后的误差信号数据,并存入e1、e2中的对应位置;(8)在CPU主机端两个工作线程中分别更新各自的迭代值:l<sub>1</sub>=l<sub>1</sub>+1、l<sub>2</sub>=l<sub>2</sub>+1;(9)重复迭代步骤(6)~步骤(8)共N次,在每个GPU设备端上,得到进行杂波对消后的误差信号e1、e2;(10)将e1、e2的数据传输至CPU主机端内存中;(11)设置CPU与GPU同步,等待两块GPU显存中的数据全部传输完成后,在CPU主机端上,将误差信号e1、e2拼接成长度为S的误差信号e并保存,保存后释放进行杂波对消所分配的内存、显存资源。 |