CN109491796B - 基于累积和并行化的机载雷达运动速度估计方法 - Google Patents
基于累积和并行化的机载雷达运动速度估计方法 Download PDFInfo
- Publication number
- CN109491796B CN109491796B CN201811402737.0A CN201811402737A CN109491796B CN 109491796 B CN109491796 B CN 109491796B CN 201811402737 A CN201811402737 A CN 201811402737A CN 109491796 B CN109491796 B CN 109491796B
- Authority
- CN
- China
- Prior art keywords
- vector
- airborne radar
- thread
- gpu
- blockidx
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Radar Systems Or Details Thereof (AREA)
Abstract
本发明公开了基于累积和并行化的机载雷达运动速度估计方法,解决了机载雷达运动速度估计中计算效率不高、硬件资源利用不足的问题。实现步骤有:生成GPU内机载雷达运动加速度向量;设计GPU内核函数的线程配置;生成机载雷达运动速度变化量向量;线程块内并行累积和计算,得到GPU各线程块内的机载雷达运动速度临时向量;GPU块间并行累积和计算,得到机载雷达运动速度向量。本发明根据硬件资源容量结合初始数据量,设置合理的线程配置;构建了适于并行计算平台的累积和求解模型;对线程块内及线程块间数据并行计算。使算法复杂度降低,运行效率提高,硬件资源利用更合理有效,整体提高数据处理速度和硬件资源利用率。用于SAR成像中的机载雷达快视成像。
Description
技术领域
本发明属于雷达数据处理技术领域,涉及GPU并行加速技术,具体是基于累积和并行化的机载雷达运动速度估计方法,用于SAR成像中的机载雷达运动速度估计。
背景技术
在机载合成孔径雷达速度估计中,主要用累积和方式对雷达运动加速度向量积分得到雷达运动速度向量。
传统基于CPU平台的串行方法是依次序将向量中元素逐个叠加,这种方法虽然简单易行,但由于该方法的运算次数与向量长度成正比,算法复杂度较高,因此在性能较普通的CPU上执行该方法时会耗时很长,影响了机载合成孔径雷达的实时成图速度,特别是在初始的加速度向量尺寸较大,对SAR快视出图的速度要求较高时、传统的累积和串行方法效率低、运行慢的缺点就更加明显地暴露出来;另外,在传统的累积和串行方法当中,前后两次的叠加计算之间具有依赖性,数据之间不能采用并行处理,因此只能单核计算,导致硬件资源占用率很低,则在大部分高校、企业中的多核CPU平台上,不能发挥底层硬件的性能优势。
现有技术中使用CPU平台串行计算累积和完成机载雷达运动速度估计,存在运算速度不快和硬件运算单元使用不足等问题,不能满足机上实时成图要求。
发明内容
针对现有技术中机载合成孔径雷达运用累积和在估计运动速度向量时运算速度不快、硬件运算单元使用不足这一问题,本发明提出一种加速效果显著、资源利用率高的基于累积和并行化的机载雷达运动速度估计方法。
本发明是基于累积和并行化的机载雷达运动速度估计方法,其特征在于,包括有以下步骤:
步骤1生成GPU内机载雷达运动加速度向量:在机载雷达对地面场景连续成像过程中,采集雷达回波数据,将前期雷达算法估计出的机载雷达等时间间隔Δt的运动加速度集合从CPU内存复制到GPU全局内存,形成GPU全局内存中的机载雷达运动加速度向量A;
步骤2设计GPU内核函数的线程配置:在GPU硬件资源限制范围内,根据机载雷达运动加速度向量A的长度,确定GPU需要划分的线程块数量及尺寸,形成GPU内核函数执行时的线程配置;
步骤3生成机载雷达运动速度变化量向量:运动加速度向量A中每一元素与等时间间隔Δt相乘,生成GPU全局内存中的机载雷达运动速度变化量向量ΔV={ΔV0,ΔV1,…,ΔVBlockIdx,…,ΔVGridNum-1},将ΔV中所有子向量顺序复制至各对应线程块内共享内存中,参与并行累积和计算;
步骤4线程块内并行累积和计算,得到GPU各线程块内的机载雷达运动速度临时向量:在GPU内核函数的线程配置下,对ΔV中一个子向量并行数据求和,从0次开始,直到次结束,0次求和时,使2*ThreadIdx处数据叠加至其后紧邻1个数据上,1次求和时,使4*ThreadIdx+1处数据叠加至其后紧邻2个数据上,依次类推,k次求和时,使2k+1*ThreadIdx+2k-1处数据叠加至其后紧邻2k个数据上,直至次求和完成,得到一个机载雷达运动速度临时子向量VBlockIdx',ThreadIdx是线程编号;使GPU内所有线程块均执行上述计算,得到机载雷达运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'},其中一个子向量对应一个线程块;
步骤5GPU块间并行累积和计算,得到机载雷达运动速度向量:在GPU内核函数的线程配置下,对机载雷达运动速度临时向量V'进行块间并行累积和计算,针对V'中一个子向量,取该子向量之前所有子向量中的最后一个元素并求和,将和值叠加至该子向量中每一元素,得到一个机载雷达运动速度子向量VBlockIdx;GPU内所有线程块均执行上述计算,得到机载雷达运动速度向量V={V0,V1,…,VBlockIdx,…,VGridNum-1},其中一个子向量对应一个线程块,机载雷达运动速度估计结束,估计出的机载雷达运动速度向量参与机载雷达成像处理中的运动补偿。
在用累积和进行机载雷达运动速度估计时,客观上需要一种能够加快数据处理速度、提升硬件资源利用率、将计算工作负载转移到高性能并行平台中的累积和加速新方法。
本发明与现有方法相比,具有以下优点:
1.降低算法复杂度:本发明对机载雷达运动速度估计中的累积和方法进行创新,设计了基于累积和并行化的机载雷达运动速度估计方法,本发明转换传统对数据逐个叠加的串行处理方法,构建了适于并行计算平台的累积和求解模型,该模型将初始数据中每个元素作为子组,依次对相邻子组两两合并成新组,重复合并操作直至组数为1,每次成组均使组内元素相叠加,使算法复杂度大大降低,从O(n)缩减至
2.提高运算速度:本发明基于并行计算平台的累积和求解,具体是对机载雷达运动加速度展开线程块内及线程块间的并行计算,提高累积和运算速度。
3.提高硬件资源利用率:本发明利用GPU数以千计小而高效的硬件核心,根据硬件资源容量结合初始数据量,设置合理的线程配置,将机载雷达初始加速度数据有效分配至各线程块及块内线程,使累积和并行计算得到最大限度的开展,较之CPU单核计算平台,本发明对硬件资源的调度率更高。
附图说明
图1为本发明的基于累积和并行化的机载雷达运动速度估计方法流程框图;
图2为本发明的GPU内核函数的线程配置示意图;
图3为本发明的累积和并行化方法示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作详细说明。
实施例1
机载合成孔径雷达成像过程中,由于受气流的影响,运动不稳定性很大,如若不采取运动补偿,则所录取的数据受到不稳定因素的影响会有较大失真,使成像质量下降,甚至不能成像。在运动补偿之前,运动参数的估计必不可少,而若要对前期估计出来的加速度向量进行时间积分获得速度向量,以供机上实时成像,需要快速的累积和求解,但是,目前的累积和串行求解方法达不到这一速度要求。为此,本发明经过创新,提出基于累积和并行化的机载雷达运动速度估计方法,参见图1,包括有以下步骤:
步骤1生成GPU内机载雷达运动加速度向量:在机载雷达对地面场景连续成像过程中,采集雷达回波数据,将前期雷达算法估计出的机载雷达等时间间隔Δt的运动加速度集合从CPU内存复制到GPU全局内存,形成GPU全局内存中的机载雷达运动加速度向量A,A的长度为l=2n,n是正整数。
步骤2设计GPU内核函数的线程配置:在GPU硬件资源限制范围内,根据机载雷达运动加速度向量A的长度,确定GPU需要划分的线程块数量及尺寸,形成GPU内核函数执行时的线程配置,其中,线程块数量对应网格配置,线程块尺寸对应线程块配置,该线程配置用于线程块内共享内存分配、并行计算累积和,进而估计出机载雷达运动速度向量。本发明根据硬件资源容量结合初始数据量,设置合理的线程配置。
步骤3生成机载雷达运动速度变化量向量:根据GPU内核函数的线程配置,为每个GPU线程块分配共享内存,运动加速度向量A中每一元素与等时间间隔Δt相乘,生成GPU全局内存中的机载雷达运动速度变化量向量ΔV={ΔV0,ΔV1,…,ΔVBlockIdx,…,ΔVGridNum-1},将ΔV中所有子向量顺序复制至各对应线程块内共享内存中,参与机载雷达运动速度变化量的并行累积和计算,BlockIdx是线程块编号,GridNum是GPU网格所包含的线程块数量。
步骤4线程块内并行累积和计算,得到GPU各线程块内的机载雷达运动速度临时向量:在GPU内核函数的线程配置下,对ΔV中一个运动速度变化量子向量诸如ΔVBlockIdx并行数据求和,从0次开始,直到次结束,0次求和时,使2*ThreadIdx处数据叠加至其后紧邻1个数据上,1次求和时,使4*ThreadIdx+1处数据叠加至其后紧邻2个数据上,依次类推,k次求和时,使2k+1*ThreadIdx+2k-1处数据叠加至其后紧邻2k个数据上,直至次求和完成,得到一个机载雷达运动速度临时子向量VBlockIdx',ThreadIdx是线程编号,2k+1*ThreadIdx+2k-1是线程编号的变形形式,BlockNum是每个线程块所包含的线程数量;使GPU内所有线程块均执行上述计算,得到机载雷达运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'},其中每个子向量对应一个线程块。本发明用线程编号的变形形式来索引运动参数向量在内存中的偏移地址,以此使每个线程处理对应索引处的数据元素,线程与线程间、线程块与线程块间依据底层硬件的调度,有次序地分拨进行并行计算。
步骤5GPU块间并行累积和计算,得到机载雷达运动速度向量:在GPU内核函数的线程配置下,对机载雷达运动速度临时向量V'进行块间并行累积和计算,针对V'中一个运动速度临时子向量诸如VBlockIdx',取该子向量之前所有子向量中的最后一个元素并求和,将和值叠加至该VBlockIdx'中每一元素,得到一个运动速度子向量VBlockIdx;GPU内所有线程块均执行上述计算,得到机载雷达运动速度向量V={V0,V1,…,VBlockIdx,…,VGridNum-1},其中一个子向量对应一个线程块,机载雷达运动速度估计结束,估计出的机载雷达运动速度向量参与机载雷达成像处理中的运动补偿。
本发明基于GPU平台,对机载雷达运动速度估计中的累积和求解方法进行创新,设计了基于累积和并行化的机载雷达运动速度估计方法,针对机载雷达初始运动加速度,在内核函数的线程配置下,在GPU中对机载雷达运动加速度向量进行积分估计,与传统基于CPU平台对数据逐个叠加的串行处理方法不同,本发明对线程块内及线程块间数据并行计算,设计线程块内及线程块间的数据并行叠加方法,使运行过程中的消耗时间更加短暂,硬件资源利用得更加合理有效。
实施例2
基于累积和并行化的机载雷达速度估计方法同实施例1,参见图2,图2为本发明的GPU内核函数的线程配置示意图,步骤2中所述的设计GPU内核函数的线程配置的过程包括有:
2a)分析硬件资源容量:受硬件资源限制,GPU能够开辟的线程块数量及每个线程块的尺寸存在上限,GPU网格允许开辟的线程块数量最多为GridMax,每个线程块内允许开辟的线程数最大为BlockMax。在本例中,GridMax=2147483647*65535*65535、BlockMax=1024。
2b)分析待计算向量,并确定计算原则:机载雷达运动加速度向量A的长度为l,l=2n,n为正整数,计算原则:计算中保证GPU每个线程处理运动加速度向量A中两个数据,即每个线程块处理运动加速度向量A中2*BlockNum个数据,其中BlockNum是每个线程块所包含的线程数量。
2c)设计线程配置:确定GPU需要划分的线程块数量及尺寸,形成GPU内核函数执行时的线程配置,参见图2,图2为本发明的GPU内核函数的线程配置示意图,图2上方显示的是GPU网格中所包含的线程块,图2下方显示的是其中一个线程块所包含的线程。线程块数量对应GPU网格配置(GridNum,1),线程块尺寸对应GPU线程块配置(BlockNum,1),GridNum是GPU网格所包含的线程块数量。具体的线程配置包括有:
2c1)若机载雷达运动加速度向量A的长度l≤2BlockMax,则GPU网格配置为(1,1),GPU线程块配置为(l/2,1);
2c2)否则,即运动加速度向量A的长度l>2BlockMax,则GPU网格配置为(l/(2*BlockMax),1),GPU线程块配置为(BlockMax,1)。
在本例中,n=15、l=32768,则GridNum=16、BlockNum=1024,即GPU网格配置为(16,1),线程块配置为(1024,1),也就是在GPU网格(Grid)中开辟16个线程块(Block),每个Block中开辟1024个线程(Thread)。该线程配置用于线程块内共享内存分配,并行计算累积和,进而估计出机载雷达运动速度向量。
本发明为GPU硬件运算单元设计了线程配置,这是启动内核函数前的必要过程,为并行处理机载雷达运动速度变化量向量提供运行框架,进而完成GPU中机载雷达运动速度估计。
实施例3
基于累积和并行化的机载雷达速度估计方法同实施例1-2,步骤3中所述的生成机载雷达运动速度变化量向量的过程包括有:
3a)分配GPU共享内存:根据GPU内核函数的线程配置,为每个线程块分配GPU共享内存,每个线程块内共享内存大小为2*BlockNum*sizeof(type),共GridNum个线程块,type是机载雷达运动参数的数据类型,sizeof(type)表示一个该数据类型变量所占用的字节长度。在本例中,GridNum=16、BlockNum=1024,雷达运动参数的数据类型是单精度浮点型(float),sizeof(type)=4。
3b)生成机载雷达运动速度变化量向量:在GPU内核函数的线程配置下,依据步骤2中的计算原则,计算中保证GPU每个线程处理运动加速度向量A中两个数据,即每个线程块处理运动加速度向量A中2*BlockNum个数据,将GPU全局内存中的机载雷达运动加速度向量A中每一元素与各元素间对应的等时间间隔Δt作乘,形成全局内存中的机载雷达运动速度变化量向量ΔV={ΔV0,ΔV1,…,ΔVBlockIdx,…,ΔVGridNum-1},其中每个子向量对应一个线程块,子向量一般形式表示为ΔVBlockIdx,ΔVBlockIdx={Δv0,Δv1,…,Δv2BlockNum-1},BlockIdx是线程块编号。在本例中,机载雷达运动速度变化量向量ΔV由16个机载雷达运动速度变化量子向量组成,每个子向量的长度是2048,BlockIdx的范围是[0,15]。
3c)复制运动速度变化量向量ΔV至各对应线程块的共享内存中:将ΔV中所有子向量顺序复制至各对应线程块内共享内存中,参与线程块内和线程块间的并行累积和计算,共享内存中数据供本线程块内所有线程所共享。
本发明在GPU内将机载雷达运动变化量向量从全局内存复制至线程块内共享内存,使同一个线程块中的线程能够通过共享内存共享信息、交换数据,作为GPU内片上存储器,共享内存中的数据调用较全局内存效率更高,使机载雷达运动速度参数估计中的累积和并行化加速效果更加明显。
实施例4
基于累积和并行化的机载雷达运动速度估计方法同实施例1-3,参见图3,图3是本发明的累积和并行化方法示意图,步骤4中所述的线程块内并行累积和计算,得到GPU各线程块内的机载雷达运动速度临时向量的过程包括有如下步骤:
4a)在GPU内核函数的线程配置下,沿用步骤3中对运动加速度向量A的计算原则,计算中保证GPU每个线程处理运动加速度向量ΔV中两个数据,即每个线程块处理运动加速度向量ΔV中2*BlockNum个数据,使各个线程块对运动速度变化量向量ΔV中每个子向量诸如ΔVBlockIdx分别进行并行数据求和,从0次开始,直到次结束,0次求和时,使2*ThreadIdx处数据叠加至其后紧邻1个数据上,ThreadIdx是线程编号,即令索引tid1=0、2、4、…、2*(BlockNum-1),索引tid2=1、3、5、…、2*BlockNum-1,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1]。在本例中,BlockNum=1024,ThreadIdx的范围是[0,1023]。
4b)1次数据求和时,使4*ThreadIdx+1处数据叠加至其后紧邻2个数据上,即令索引tid1=1、1、5、5、…、2*(BlockNum-1)-1、2*(BlockNum-1)-1,索引tid2=2、3、6、7、…、2*(BlockNum-1)、2*(BlockNum-1)+1,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1]。
4c)依次类推,k次数据求和时,使2k+1*ThreadIdx+2k-1处数据叠加至其后紧邻2k个数据上,k是数据求和次数,令索引tid0=(ThreadIdx>>k)<<k,tid1=2*tid0+2k-1,索引tid2=tid0+ThreadIdx+2k,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1],>>与<<是按位移动运算符。
4e)GPU内所有线程块均执行上述计算,得到机载雷达运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'},其中每个子向量对应一个线程块。
本发明的线程块内累积和计算、得到GPU各线程块内的机载雷达运动速度临时向量是基于底层硬件为多核心条件下开发的并行方法,线程块内并行累积和算法复杂度仅为较之传统只能运用单核计算、算法复杂度为O(n)的基于CPU的串行处理方法,本发明硬件资源利用率更高、算法复杂度更小、运算速度更快,线程块内累积和计算是步骤5中线程块间并行累积和计算、得到机载雷达运动速度向量的基础。
实施例5
基于累积和并行化的机载雷达运动速度估计方法同实施例1-4,步骤5中所述的GPU块间并行累积和计算,得到机载雷达运动速度向量的过程包括有:
在GPU内核函数的线程配置下,对步骤4中得到的运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'}进行线程块间并行累积和计算。
5a)形成第一中间计算向量:取V'中所有子向量诸如VBlockIdx'中的最后一项Δv2BlockNum-1',按线程块编号(BlockIdx)依次排列形成第一中间计算向量VO={vO 0,vO 1,…,vO BlockIdx,…,vO GridNum-1},其中,vO BlockIdx=Δv2BlockNum-1'。
5c)得到一个机载雷达运动速度子向量:将运动速度参数临时子向量VBlockIdx'中每个元素与第二中间向量VΘ中BlockIdx处元素相加,得到一个机载雷达运动速度子向量VBlockIdx;
5d)得到机载雷达运动速度向量:GPU内所有线程块均执行上述计算,得到机载雷达运动速度向量V={V0,V1,…,VBlockIdx…,VGridNum-1},机载雷达运动速度估计结束,机载雷达运动速度向量参与后续雷达成像处理中的运动补偿。
本发明由机载雷达运动加速度向量与等时间间隔相乘得到机载雷达运动速度变化量向量,而后在已开辟的各个线程块中对上述运动速度变化量向量划分为子向量,进行线程块内并行累积和计算,得到机载雷达运动速度临时向量,再进行线程块间并行累积和计算,得到机载雷达运动速度向量,即完成机载雷达运动速度估计。
下面给出一个更加详尽的例子,结合附图,对本发明进一步说明。
实施例6
基于累积和并行化的机载雷达运动速度估计方法同实施例1-5,参见图1,图1为本发明的基于累积和并行化的机载雷达运动速度估计方法流程框图,本发明实现的过程,包括以下步骤:
步骤1生成GPU内机载雷达运动加速度向量:在机载雷达对地面场景连续成像过程中,采集雷达回波数据,将前期雷达算法估计出的等时间间隔Δt的运动加速度参数集合从CPU内存复制到GPU全局内存,形成GPU全局内存中的机载雷达运动加速度向量A,A的长度为l=2n,n是正整数,在本例中,n=4、l=16。
步骤2设计GPU内核函数的线程配置:在GPU硬件资源限制范围内,根据机载雷达运动加速度向量A的长度,确定GPU需要划分的线程块尺寸及数量,形成GPU内核函数执行时的线程配置,其中,线程块配置对应线程块尺寸,网格配置对应线程块数量,该线程配置用于线程块内共享内存分配,并行计算累积和,进而估计出机载雷达运动速度。
参见图2,图2为本发明的GPU内核函数的线程配置示意图。
GPU内核函数的线程配置中,网格配置表示为(GridNum,1),线程块配置表示为(BlockNum,1),GridNum是GPU网格所包含的线程块数量,BlockNum是每个线程块所包含的线程数量,使每个线程处理A中两个数据,每个线程块处理A中2*BlockNum个数据,若l≤2BlockMax,GridNum=1、BlockNum=l/2,否则,GridNum=l/(2*BlockMax)、BlockNum=BlockMax,BlockMax是每个线程块内允许开辟的最大线程数。
在本例中,BlockMax=1024,则GridNum=1、BlockNum=8,即GPU网格配置为(1,1),线程块配置为(8,1),也就是在GPU网格(Grid)中开辟1个线程块(Block),每个Block中开辟8个线程(Thread)。该线程配置用于线程块内共享内存分配,并行计算累积和,进而估计出机载雷达运动速度向量。
步骤3生成机载雷达运动速度变化量向量:根据GPU内核函数的线程配置,为每个GPU线程块分配共享内存,内存大小为2*BlockNum*sizeof(type),type是机载雷达运动参数的数据类型,sizeof(type)表示一个该数据类型变量所占用的字节长度,在本例中,雷达运动参数的数据类型是双精度浮点型(double),sizeof(type)=8。机载雷达运动加速度向量A中每一元素与等时间间隔Δt作乘,形成全局内存中的机载雷达运动速度变化量向量ΔV={ΔV0,ΔV1,…,ΔVBlockIdx,…,ΔVGridNum-1},将ΔV中所有子向量顺序复制至各对应线程块内共享内存中,共享内存中数据供本线程块内所有线程所共享,每一线程块内机载雷达运动速度变化量子向量一般表示为ΔVBlockIdx,ΔVBlockIdx={Δv0,Δv1,…,Δv2BlockNum-1},BlockIdx是线程块编号,在本例中,BlockIdx=0。
步骤4线程块内并行累积和计算,得到GPU各线程块内的机载雷达运动速度临时向量:在GPU内核函数的线程配置下,对ΔV中一个机载雷达运动速度变化量子向量诸如ΔVBlockIdx并行数据求和,从0次开始,直到次结束,0次求和时,使2*ThreadIdx处数据叠加至其后紧邻1个数据上,1次求和时,使4*ThreadIdx+1处数据叠加至其后紧邻2个数据上,依次类推,k次求和时,使2k+1*ThreadIdx+2k-1处数据叠加至其后紧邻2k个数据上,直至次求和完成,得一个机载雷达运动速度临时子向量VBlockIdx',ThreadIdx是线程编号;使GPU内所有线程块均执行上述计算,得到机载雷达运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'}。
参见图3,图3是本发明的累积和并行化方法示意图,图中显示了一个机载雷达运动速度变化量子向量从0至3次数据求和过程中的并行计算过程:
4a)在GPU内核函数的线程配置下,对ΔV中一个机载雷达运动速度变化量子向量诸如ΔVBlockIdx并行数据求和,参见图3,从0次开始,直到次结束,0次求和时,如图3中N0行所示,依次对相邻两个元素合并成组,使2*ThreadIdx处数据叠加至其后紧邻1个数据上,方括号中的ThreadIdx是线程编号。在本例中,ThreadIdx的范围是[0,7],令索引tid1=0、2、4、…、14,索引tid2=1、3、5、…、15,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1];
4b)1次数据求和时,如图3中N1行所示,将4a)中分组依次两两合并成为新组,使4*ThreadIdx+1处数据叠加至其后紧邻2个数据上,即令索引tid1=1、1、5、5、…、13、13,索引tid2=2、3、6、7、…、14、15,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1];
4c)依次类推,k次数据求和时,使2k+1*ThreadIdx+2k-1处数据叠加至其后紧邻2k个数据上,k是数据求和次数,0≤k≤3,令索引tid0=(ThreadIdx>>k)<<k,tid1=2*tid0+2k-1,索引tid2=tid0+ThreadIdx+2k,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1],>>与<<是按位移动运算符,本例中,k=2;
4d)本例中,经历了从第0至第3次共4次数据求和过程,完成了运动速度变化量向量的累积和计算,如图3中N3行所示,数据合并成组使组数为1,得到一个机载雷达运动速度临时子向量VBlockIdx',VBlockIdx'={v0',v1',…,v2BlockNum-1'};
4e)GPU内所有线程块均执行上述计算,得到机载雷达运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'}。
步骤5GPU块间并行累积和计算,得到机载雷达运动速度向量:在GPU内核函数的线程配置下,对机载雷达运动速度临时向量进行块间累积和计算,取V'={V0',V1',…,VBlockIdx',…,VGridNum-1'}中所有机载雷达运动速度临时子向量诸如VBlockIdx'中最后一值,得到向量VO={vO 0,vO 1,…,vO BlockIdx,…,vO GridNum-1},使VBlockIdx'中每一元素与相叠加,得到一个机载雷达运动速度子向量VBlockIdx,形如GPU内所有线程块均执行上述计算,得到机载雷达运动速度向量V={V0,V1,…,VBlockIdx…,VGridNum-1},机载雷达运动速度估计结束,机载雷达运动速度向量参与后续雷达成像处理中的运动补偿。
本例中,由于GPU网格中仅开辟一个线程块,即GridNum=1,因此步骤5过程无需操作,当GridNum>1时,仍需进行步骤5。
本发明对机载雷达运动速度估计中的方法进行创新,设计了基于累积和并行化的机载雷达速度估计方法,较之传统对数据逐个叠加的串行处理方法,本发明转换算法数据结构,构建了适于并行计算平台的求解模型,使算法复杂度大大缩减。本发明应用GPU加速器,实现多重任务的并行处理,较之CPU单核计算平台,如此估计雷达运动速度用时更短,对硬件资源的调度率更高。
简而言之,本发明公开的基于累积和并行化的机载雷达运动速度估计方法,解决了机载雷达运动速度估计中计算效率不高、硬件资源利用不足的问题。实现步骤有:生成GPU内机载雷达运动加速度向量;设计GPU内核函数的线程配置;生成机载雷达运动速度变化量向量;线程块内并行累积和计算,得到GPU各线程块内的机载雷达运动速度临时向量;GPU块间并行累积和计算,得到机载雷达运动速度向量。本发明根据硬件资源容量结合初始数据量,设置合理的线程配置;构建了适于并行计算平台的累积和求解模型;对线程块内及线程块间数据并行计算。使算法复杂度降低,运行效率提高,硬件资源利用更合理有效,整体提高数据处理速度和硬件资源利用率。用于SAR成像中的机载雷达快视成像。
Claims (5)
1.一种基于累积和并行化的机载雷达运动速度估计方法,其特征在于,包括有以下步骤:
步骤1 生成GPU内机载雷达运动加速度向量:在机载雷达对地面场景连续成像过程中,采集雷达回波数据,将前期雷达算法估计出的机载雷达等时间间隔Δt的运动加速度集合从CPU内存复制到GPU全局内存,形成GPU全局内存中的机载雷达运动加速度向量A;
步骤2 设计GPU内核函数的线程配置:在GPU硬件资源限制范围内,根据机载雷达运动加速度向量A的长度,确定GPU需要划分的线程块数量及尺寸,形成GPU内核函数执行时的线程配置;
步骤3 生成机载雷达运动速度变化量向量:运动加速度向量A中每一元素与等时间间隔Δt相乘,生成GPU全局内存中的机载雷达运动速度变化量向量ΔV={ΔV0,ΔV1,…,ΔVBlockIdx,…,ΔVGridNum-1},将ΔV中所有子向量顺序复制至各对应线程块内共享内存中,参与并行累积和计算,其中,BlockIdx是线程块编号,GridNum是GPU网格所包含的线程块数量;
步骤4 线程块内并行累积和计算,得到GPU各线程块内的机载雷达运动速度临时向量:在GPU内核函数的线程配置下,对ΔV中一个子向量并行数据求和,从0次开始,直到次结束,0次求和时,使2*ThreadIdx处数据叠加至其后紧邻1个数据上,1次求和时,使4*ThreadIdx+1处数据叠加至其后紧邻2个数据上,依次类推,k次求和时,使2k+1*ThreadIdx+2k-1处数据叠加至其后紧邻2k个数据上,直至次求和完成,得到一个机载雷达运动速度临时子向量VBlockIdx',ThreadIdx是线程编号,BlockNum是每个线程块所包含的线程数量;使GPU内所有线程块均执行上述计算,得到机载雷达运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'},其中一个子向量对应一个线程块;
步骤5 GPU块间并行累积和计算,得到机载雷达运动速度向量:在GPU内核函数的线程配置下,对机载雷达运动速度临时向量V'进行块间并行累积和计算,针对V'中一个子向量,取该子向量之前所有子向量中的最后一个元素并求和,将和值叠加至该子向量中每一元素,得到一个机载雷达运动速度子向量VBlockIdx;GPU内所有线程块均执行上述计算,得到机载雷达运动速度向量V={V0,V1,…,VBlockIdx,…,VGridNum-1},其中一个子向量对应一个线程块,机载雷达运动速度估计结束,估计出的机载雷达运动速度向量参与机载雷达成像处理中的运动补偿。
2.如权利要求1所述的基于累积和并行化的机载雷达运动速度估计方法,其特征在于,步骤2中所述的设计GPU内核函数的线程配置的过程包括有:
2a)分析硬件资源容量:受硬件资源限制,GPU能够开辟的线程块数量及每个线程块的尺寸存在上限,GPU网格允许开辟的线程块数量最多为GridMax,每个线程块内允许开辟的线程数最大为BlockMax;
2b)分析待计算向量,并确定计算原则:机载雷达运动加速度向量A的长度为l,l=2n,n为正整数,计算原则:计算中保证GPU每个线程处理运动加速度向量A中两个数据,即每个线程块处理运动加速度向量A中2*BlockNum个数据,其中BlockNum是每个线程块所包含的线程数量;
2c)设计线程配置:确定GPU需要划分的线程块数量及尺寸,形成GPU内核函数执行时的线程配置,其中,线程块数量对应网格配置(GridNum,1),线程块尺寸对应线程块配置(BlockNum,1),GridNum是GPU网格所包含的线程块数量;
2c1)若运动加速度向量A的长度l≤2BlockMax,则网格配置为(1,1),线程块配置为(l/2,1);
2c2)否则,即运动加速度向量A的长度l>2BlockMax,则网格配置为(l/(2*BlockMax),1),线程块配置为(BlockMax,1);
线程配置用于线程块内共享内存分配,并行计算累积和,进而估计出机载雷达运动速度向量。
3.如权利要求1所述的基于累积和并行化的机载雷达运动速度估计方法,其特征在于,步骤3中所述的生成机载雷达运动速度变化量向量的过程包括有:
3a)分配GPU共享内存:根据GPU内核函数的线程配置,为每个线程块分配GPU共享内存,共享内存大小为2*BlockNum*sizeof(type),type是机载雷达运动参数的数据类型,sizeof(type)表示一个该数据类型变量所占用的字节长度;
3b)生成机载雷达运动速度变化量向量:依据计算原则,将GPU全局内存中的运动加速度向量A中每一元素与等时间间隔Δt作乘,形成全局内存中的机载雷达运动速度变化量向量ΔV={ΔV0,ΔV1,…,ΔVBlockIdx,…,ΔVGridNum-1},其中每个子向量对应一个线程块,子向量一般形式表示为ΔVBlockIdx,ΔVBlockIdx={Δv0,Δv1,…,Δv2BlockNum-1},BlockIdx是线程块编号;
3c)复制运动速度变化量向量ΔV至各对应线程块的共享内存中:将ΔV中所有子向量顺序复制至各对应线程块内共享内存中,参与线程块内和线程块间的并行累积和计算。
4.如权利要求1所述的基于累积和并行化的机载雷达运动速度估计方法,其特征在于,步骤4中所述的线程块内累积和计算,得到GPU各线程块内的机载雷达运动速度临时向量的过程包括有如下步骤:
4a)在GPU内核函数的线程配置下,对运动速度变化量向量ΔV中每个子向量诸如ΔVBlockIdx分别进行并行数据求和,从0次开始,直到次结束,0次求和时,使2*ThreadIdx处数据叠加至其后紧邻1个数据上,ThreadIdx是线程编号,即令索引tid1=0、2、4、…、2*(BlockNum-1),索引tid2=1、3、5、…、2*BlockNum-1,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1];
4b)1次数据求和时,使4*ThreadIdx+1处数据叠加至其后紧邻2个数据上,即令索引tid1=1、1、5、5、…、2*(BlockNum-1)-1、2*(BlockNum-1)-1,索引tid2=2、3、6、7、…、2*(BlockNum-1)、2*(BlockNum-1)+1,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1];
4c)依次类推,k次数据求和时,使2k+1*ThreadIdx+2k-1处数据叠加至其后紧邻2k个数据上,令索引tid0=(ThreadIdx>>k)<<k,tid1=2*tid0+2k-1,索引tid2=tid0+ThreadIdx+2k,令ΔVBlockIdx[tid2]+=ΔVBlockIdx[tid1],>>与<<是按位移动运算符;
4e)GPU内所有线程块均执行上述计算,得到机载雷达运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'},其中每个子向量对应一个线程块,运动速度临时向量的子向量一般形式表示为ΔVBlockIdx',ΔVBlockIdx'={Δv0',Δv1',…,Δv2BlockNum-1'}。
5.如权利要求1所述的基于累积和并行化的机载雷达运动速度估计方法,其特征在于,步骤5中所述的GPU块间并行累积和计算,得到机载雷达运动速度向量的过程包括有:
在GPU内核函数的线程配置下,对运动速度临时向量V'={V0',V1',…,VBlockIdx',…,VGridNum-1'}进行线程块间并行累积和计算,
5a)形成第一中间计算向量:取V'中所有运动速度临时子向量中的最后一项,依次排列形成第一中间计算向量VO={vO 0,vO 1,…,vO BlockIdx,…,vO GridNum-1};
5c)得到一个机载雷达运动速度子向量:将运动速度参数临时子向量诸如VBlockIdx'中每个元素与第二中间向量VΘ中BlockIdx处元素相加,得到一个机载雷达运动速度子向量VBlockIdx;
5d)得到机载雷达运动速度向量:GPU内所有线程块均执行上述计算,得到机载雷达运动速度向量V={V0,V1,…,VBlockIdx…,VGridNum-1},机载雷达运动速度估计结束,机载雷达运动速度向量参与后续雷达成像处理中的运动补偿。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811402737.0A CN109491796B (zh) | 2018-11-23 | 2018-11-23 | 基于累积和并行化的机载雷达运动速度估计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811402737.0A CN109491796B (zh) | 2018-11-23 | 2018-11-23 | 基于累积和并行化的机载雷达运动速度估计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109491796A CN109491796A (zh) | 2019-03-19 |
CN109491796B true CN109491796B (zh) | 2021-07-27 |
Family
ID=65696475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811402737.0A Active CN109491796B (zh) | 2018-11-23 | 2018-11-23 | 基于累积和并行化的机载雷达运动速度估计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491796B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528106B (zh) * | 2022-02-17 | 2024-05-17 | 西安电子科技大学 | 雷达信号分选中利用gpu加速决策树训练的方法 |
CN114637302B (zh) * | 2022-04-15 | 2022-10-18 | 安徽农业大学 | 一种基于计算机视觉的自动行进避障方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937082A (zh) * | 2009-07-02 | 2011-01-05 | 北京理工大学 | 基于gpu众核平台的合成孔径雷达并行成像方法 |
CN103376449A (zh) * | 2012-04-11 | 2013-10-30 | 中国科学院电子学研究所 | 基于图形处理器的合成孔径雷达成像方法 |
CN104459666A (zh) * | 2014-12-01 | 2015-03-25 | 西安电子科技大学 | 基于LabVIEW的弹载SAR回波仿真及成像方法 |
CN104849698A (zh) * | 2015-05-21 | 2015-08-19 | 中国人民解放军海军工程大学 | 一种基于异构多核系统的雷达信号并行处理方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2453927A (en) * | 2007-10-12 | 2009-04-29 | Curtiss Wright Controls Embedded Computing | Method for improving the representation of targets within radar images |
US9581695B2 (en) * | 2014-06-20 | 2017-02-28 | Navico Holding As | Generating a map using radar data |
-
2018
- 2018-11-23 CN CN201811402737.0A patent/CN109491796B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937082A (zh) * | 2009-07-02 | 2011-01-05 | 北京理工大学 | 基于gpu众核平台的合成孔径雷达并行成像方法 |
CN103376449A (zh) * | 2012-04-11 | 2013-10-30 | 中国科学院电子学研究所 | 基于图形处理器的合成孔径雷达成像方法 |
CN104459666A (zh) * | 2014-12-01 | 2015-03-25 | 西安电子科技大学 | 基于LabVIEW的弹载SAR回波仿真及成像方法 |
CN104849698A (zh) * | 2015-05-21 | 2015-08-19 | 中国人民解放军海军工程大学 | 一种基于异构多核系统的雷达信号并行处理方法及系统 |
Non-Patent Citations (4)
Title |
---|
Efficient SAR raw data parallel simulation based on multicore vector extension;Chen Hu等;《2015 IEEE International Geoscience and Remote Sensing Symposium (IGARSS)》;20151112;4719-4722 * |
Estimating the vector electric field using monostatic, multibeam incoherent scatter radar measurements;Michael J. Nicolls 等;《Radio Science》;20141130;第49卷(第11期);1124-1139 * |
HF radar comparisons with moored estimates of current speed and direction: Expected differences and implications;Hans C. Graber等;《Journal of Geophysical Research: Oceans》;19970831;第102卷(第C8期);18749-18766 * |
一种并行的SAR图像边缘检测方法;薛笑荣 等;《2005年信息与通信领域博士后学术会议论文集》;20051001;第28卷;58-61 * |
Also Published As
Publication number | Publication date |
---|---|
CN109491796A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489223B (zh) | 一种异构集群中任务调度方法、装置及电子设备 | |
Zlateski et al. | ZNN--A Fast and Scalable Algorithm for Training 3D Convolutional Networks on Multi-core and Many-Core Shared Memory Machines | |
CN103729246B (zh) | 一种任务调度方法和装置 | |
CN107657599B (zh) | 基于混合粒度划分和动态负载分配的遥感图像融合系统并行实现方法 | |
CN109491796B (zh) | 基于累积和并行化的机载雷达运动速度估计方法 | |
CN109960576A (zh) | 一种面向cpu-gpu异构的低能耗任务调度策略 | |
US20200184366A1 (en) | Scheduling task graph operations | |
US20210390460A1 (en) | Compute and memory based artificial intelligence model partitioning using intermediate representation | |
CN110516316B (zh) | 一种间断伽辽金法求解欧拉方程的gpu加速方法 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN103677960A (zh) | 一种能耗约束的虚拟机博弈重放置方法 | |
CN103942109A (zh) | 基于多核dsp的自适应任务调度方法 | |
CN108170861B (zh) | 一种基于动态规划的分布式数据库系统协同优化方法 | |
CN111309472A (zh) | 一种基于虚拟机预部署的在线虚拟资源分配方法 | |
Beaumont et al. | Optimal GPU-CPU offloading strategies for deep neural network training | |
CN109657794A (zh) | 一种基于指令队列的分布式深度神经网络性能建模方法 | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
CN105786626B (zh) | 基于K划分的Storm平台线程分配方法 | |
US20200134467A1 (en) | Sharing preprocessing, computations, and hardware resources between multiple neural networks | |
Zlateski et al. | Scalable training of 3D convolutional networks on multi-and many-cores | |
WO2021244045A1 (zh) | 一种神经网络的数据处理方法及装置 | |
Duan et al. | Reducing makespans of dag scheduling through interleaving overlapping resource utilization | |
CN108205465B (zh) | 流式应用程序的任务动态调度方法和装置 | |
CN103150214A (zh) | 一种针对空间度量及方向关系并行计算的矢量目标集均衡划分方法 | |
CN104318035A (zh) | 针对海量地形大数据点云的总分式三角网多线程并行生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |