本發(fā)明屬于雷達(dá)成像
技術(shù)領(lǐng)域:
,尤其涉及一種基于gpu((graphicsprocessingunit,圖形處理單元)的雷達(dá)前視成像方法,具體為在cuda(computeunifieddevicearchitecture,計(jì)算統(tǒng)一的設(shè)備體系結(jié)構(gòu))架構(gòu)中實(shí)現(xiàn)雷達(dá)前視成像的并行設(shè)計(jì),用于提高雷達(dá)前視成像效率,達(dá)到實(shí)時(shí)處理雷達(dá)回波數(shù)據(jù)的目的。
背景技術(shù):
:雷達(dá)前視區(qū)域的三維場(chǎng)景具有分辨率高、數(shù)據(jù)多、場(chǎng)景維度大的特點(diǎn),會(huì)增加信號(hào)估計(jì)的時(shí)間,同時(shí)壓縮感知重構(gòu)算法又包含大量的矩陣運(yùn)算和迭代運(yùn)算,計(jì)算復(fù)雜度高,僅采用傳統(tǒng)的串行方式進(jìn)行處理,存在運(yùn)行時(shí)間過(guò)長(zhǎng)問(wèn)題,無(wú)法達(dá)到實(shí)時(shí)處理的要求;近年,gpu(圖形處理器)從專業(yè)圖形處理到科學(xué)計(jì)算的轉(zhuǎn)型使gpu協(xié)處理器成為超級(jí)計(jì)算領(lǐng)域的新寵,其超強(qiáng)的浮點(diǎn)計(jì)算能力使其成為提高成像算法處理效率最有效方法之一。cuda是gpu廣泛應(yīng)用的一種編程模型,支持c/c++、fortan語(yǔ)言的擴(kuò)展;提供了豐富的高性能數(shù)學(xué)函數(shù)庫(kù),比如cublas、cufft、cudnn等。技術(shù)實(shí)現(xiàn)要素:針對(duì)上述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種基于gpu的雷達(dá)前視成像方法,以解決傳統(tǒng)cpu(centralprocessingunit,中央處理單元)串行計(jì)算進(jìn)行成像耗時(shí)較長(zhǎng)且無(wú)法滿足微波成像系統(tǒng)實(shí)時(shí)處理需求的問(wèn)題。本發(fā)明實(shí)現(xiàn)的技術(shù)思路為:在對(duì)雷達(dá)前視區(qū)域三維場(chǎng)景目標(biāo)進(jìn)行壓縮感知成像處理時(shí),首先在cpu端按照串行的方式輸入觀測(cè)向量和超材料孔徑天線的輻射場(chǎng)強(qiáng)度數(shù)據(jù);利用超材料孔徑天線產(chǎn)生頻率捷變的輻射場(chǎng)對(duì)場(chǎng)景進(jìn)行遍歷,結(jié)合目標(biāo)所處的場(chǎng)景位置先驗(yàn)信息,將成像場(chǎng)景按照一定的距離與方位分辨率進(jìn)行離散網(wǎng)格化處理,再計(jì)算處在對(duì)應(yīng)目標(biāo)位置范圍處所對(duì)應(yīng)的測(cè)量矩陣;在gpu端構(gòu)建基于壓縮感知的雷達(dá)前視成像數(shù)學(xué)模型;采用cuda編程架構(gòu)利用共軛梯度(cgsolve)算法對(duì)上述數(shù)學(xué)模型進(jìn)行并行求解,估計(jì)出目標(biāo)場(chǎng)景的散射系數(shù)分布。為達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案予以實(shí)現(xiàn)。一種基于gpu的雷達(dá)前視成像方法,所述方法包括如下步驟:步驟1,在cpu端,獲取接收天線對(duì)目標(biāo)場(chǎng)景的觀測(cè)向量;并對(duì)所述目標(biāo)場(chǎng)景進(jìn)行網(wǎng)格劃分,獲取目標(biāo)所處網(wǎng)格范圍對(duì)應(yīng)的測(cè)量矩陣,建立從所述觀測(cè)向量中恢復(fù)場(chǎng)景目標(biāo)后向散射系數(shù)的優(yōu)化模型;步驟2,在gpu端,從所述cpu端獲取所述觀測(cè)向量和所述測(cè)量矩陣,采用cuda架構(gòu)并行實(shí)現(xiàn)從所述觀測(cè)向量中恢復(fù)場(chǎng)景目標(biāo)后向散射系數(shù)向量;步驟3,在cpu端,從所述gpu端獲取所述場(chǎng)景目標(biāo)后向散射系數(shù)向量,將所述場(chǎng)景目標(biāo)后向散射系數(shù)向量對(duì)應(yīng)到所述目標(biāo)所處網(wǎng)格范圍內(nèi),從而得到三維場(chǎng)景目標(biāo)的估計(jì)模型,完成雷達(dá)前視成像。本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn):1)本發(fā)明利用超材料孔徑天線產(chǎn)生的頻率捷變輻射場(chǎng)對(duì)場(chǎng)景進(jìn)行觀測(cè),結(jié)合先進(jìn)的壓縮感知重構(gòu)算法,實(shí)現(xiàn)對(duì)前視場(chǎng)景的三維計(jì)算成像。優(yōu)點(diǎn)在于超材料孔徑單通道成像雷達(dá)天線系統(tǒng)規(guī)模實(shí)現(xiàn)相對(duì)簡(jiǎn)單,可避免傳統(tǒng)實(shí)孔徑成像所需的復(fù)雜陣面天線設(shè)計(jì);2)采用共軛梯度算法實(shí)現(xiàn)雷達(dá)前視三維場(chǎng)景目標(biāo)成像,算法穩(wěn)定性好,有利于大規(guī)模數(shù)據(jù)的成像處理;3)基于gpu平臺(tái),并行實(shí)現(xiàn)雷達(dá)前視場(chǎng)景目標(biāo)成像處理,可以提高成像效率。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的基于gpu的雷達(dá)前視成像方法的并行過(guò)程示意圖;圖2為本發(fā)明實(shí)施例提供的共軛梯度算法的流程示意圖;圖3為本發(fā)明實(shí)施例提供的基于cuda編程的程序流程示意圖;圖4為本發(fā)明實(shí)施例提供的共享存儲(chǔ)優(yōu)化的2維矩陣轉(zhuǎn)置示意圖;圖5為本發(fā)明實(shí)施例提供的共享存儲(chǔ)優(yōu)化的矩陣向量乘法示意圖;圖6為本發(fā)明實(shí)施例提供的向量轉(zhuǎn)化為對(duì)角矩陣的示意圖;圖7為本發(fā)明實(shí)施例提供的估計(jì)模型與仿真模型對(duì)比示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供一種基于gpu的雷達(dá)前視成像方法,如圖1所示,所述方法包括如下步驟:步驟1,在cpu端,獲取接收天線對(duì)目標(biāo)場(chǎng)景的觀測(cè)向量;并對(duì)所述目標(biāo)場(chǎng)景進(jìn)行網(wǎng)格劃分,獲取目標(biāo)所處網(wǎng)格范圍對(duì)應(yīng)的測(cè)量矩陣,建立從所述觀測(cè)向量中恢復(fù)場(chǎng)景目標(biāo)后向散射系數(shù)的優(yōu)化模型。步驟1具體為:(1a)在cpu端,采用串行方式讀入接收天線對(duì)目標(biāo)場(chǎng)景的觀測(cè)向量y以及目標(biāo)所處網(wǎng)格范圍對(duì)應(yīng)的測(cè)量矩陣dic,且:y=dic·x+n其中,y∈cm×1是接收天線對(duì)目標(biāo)場(chǎng)景散射場(chǎng)的觀測(cè)信號(hào),dic∈cm×n是由天線的輻射方向圖組成的測(cè)量矩陣,x∈cn×1是場(chǎng)景目標(biāo)后向散射系數(shù),n為測(cè)量噪聲項(xiàng);(1b)對(duì)所述場(chǎng)景目標(biāo)后向散射系數(shù)建立如下優(yōu)化模型:其中,為場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值,為范數(shù)的平方,||·||1為范數(shù),ρ為正則化參數(shù);(1c)所述接收天線為超材料孔徑天線;對(duì)所述目標(biāo)場(chǎng)景進(jìn)行網(wǎng)格劃分,滿足如下要求:場(chǎng)景水平方位分辨率δcrx=λr/2dx;垂直俯仰分辨率δcry=λr/2dy;距離分辨率δr=c/2b;其中,λ為雷達(dá)發(fā)射信號(hào)波長(zhǎng),r為目標(biāo)距超材料孔徑天線平面的距離,dx天線面板的水平長(zhǎng)度,dy為天線面板的垂直長(zhǎng)度,c為光速,b為雷達(dá)發(fā)射信號(hào)的帶寬。步驟2,在gpu端,從所述cpu端獲取所述觀測(cè)向量和所述測(cè)量矩陣,采用cuda架構(gòu)并行實(shí)現(xiàn)從所述觀測(cè)向量中恢復(fù)場(chǎng)景目標(biāo)后向散射系數(shù)向量。步驟2具體為:(2a)在gpu端進(jìn)行初始化:分配顯存空間,將從所述cpu端獲取所述觀測(cè)向量和所述測(cè)量矩陣,并將其復(fù)制到gpu顯存上;(2b)在gpu端,設(shè)計(jì)復(fù)數(shù)矩陣共軛轉(zhuǎn)置的內(nèi)核函數(shù),實(shí)現(xiàn)復(fù)數(shù)矩陣共軛轉(zhuǎn)置的并行實(shí)現(xiàn),從而初始化場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值xl=dich·y;l的初值為1,l≤l,符號(hào)(·)h表示復(fù)數(shù)矩陣的共軛轉(zhuǎn)置;(2c)在gpu端,設(shè)計(jì)矩陣與向量相乘的內(nèi)核函數(shù),實(shí)現(xiàn)矩陣與向量相乘的并行實(shí)現(xiàn),從而計(jì)算所述場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值xl的共軛梯度其中,h(xl)為系數(shù)矩陣,且為對(duì)稱正定矩陣;子步驟(2c)中,在gpu端,設(shè)計(jì)向量轉(zhuǎn)化為對(duì)角陣的內(nèi)核函數(shù),實(shí)現(xiàn)向量對(duì)角化的并行實(shí)現(xiàn),所述系數(shù)矩陣h(xl)的計(jì)算式表示為:h(xl)=2dich·dic+ρλ(xl)其中,λ(xl)為對(duì)角矩陣,且(2d)采用共軛梯度算法計(jì)算場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值xl的殘差值△xl+1,所述殘差值△xl+1滿足子步驟(2d)中,采用共軛梯度算法計(jì)算場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值xl的殘差值△xl+1,具體包括:(2d1)設(shè)置初始搜索點(diǎn)和允許誤差ε,以及最大迭代步數(shù)k;(2d2)計(jì)算所述初始搜索點(diǎn)的梯度值(2d3)設(shè)置初始搜索方向p0=r0;(2d4)設(shè)置循環(huán)變量初值k=0,k∈(0,1,...,k-1);(a)計(jì)算搜索步長(zhǎng)(b)在搜索點(diǎn)處沿著搜索方向pk進(jìn)行一維搜索,得到精確搜索點(diǎn)(c)計(jì)算精確搜索點(diǎn)的梯度值rk+1=rk-αkh(xl)pk;(d)判斷精確搜索點(diǎn)的梯度值以及循環(huán)變量是否滿足如下條件:(rk+1≤ε)||(k>k);(e)若不滿足,在所述精確搜索點(diǎn)的梯度值rk+1和搜索方向pk張成的正交錐中找到一個(gè)向量pk+1=rk+1+βkpk,使得向量pk+1與pk共軛,即(pk+1)th(xl)pk=0;其中,并令循環(huán)變量k的值加1,重復(fù)執(zhí)行子步驟(a)至子步驟(d);若滿足,則場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值xl的殘差值(2d5)輸出場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值xl的殘差值(2e)計(jì)算所述殘差值△xl+1與場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值xl的二范數(shù)比值(2f)判斷迭代次數(shù)l和二范數(shù)比值threshold是否滿足如下條件:(l+1≤l)||(threshold>δ)若滿足,則更新場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值xl+1=xl-μ×△xl+1;且令的值加1,并重復(fù)執(zhí)行子步驟(2c)至(2e);其中,δ為迭代閾值,μ為迭代步長(zhǎng),l為最大迭代次數(shù);否則,得到場(chǎng)景目標(biāo)后向散射系數(shù)的估計(jì)值作為從所述觀測(cè)向量中恢復(fù)的場(chǎng)景目標(biāo)后向散射系數(shù)向量。步驟3,在cpu端,從所述gpu端獲取所述場(chǎng)景目標(biāo)后向散射系數(shù)向量,將所述場(chǎng)景目標(biāo)后向散射系數(shù)向量對(duì)應(yīng)到所述目標(biāo)所處網(wǎng)格范圍內(nèi),從而得到三維場(chǎng)景目標(biāo)的估計(jì)模型,完成雷達(dá)前視成像。為提高成像效率,本發(fā)明利用gpu的并行特性,采用cuda編程模型等技術(shù)手段實(shí)現(xiàn)壓縮感知算法在gpu平臺(tái)上并行實(shí)現(xiàn)。將成像算法并行化,首先需對(duì)cgsolve串行算法進(jìn)行熱點(diǎn)分析,找出算法耗時(shí)步驟。經(jīng)分析可知,該成像算法的熱點(diǎn)集中在兩層循環(huán)迭代過(guò)程,而兩層循環(huán)中的耗時(shí)步驟主要體現(xiàn)在內(nèi)層循環(huán)。由于本發(fā)明中待估計(jì)的場(chǎng)景目標(biāo)是三維模型,數(shù)據(jù)規(guī)模大,cgsolve算法包含大量迭代運(yùn)算,在信號(hào)估計(jì)的外層循環(huán)過(guò)程中每次迭代均與上一次的計(jì)算結(jié)果息息相關(guān),具有數(shù)據(jù)依賴性,如果根據(jù)熱點(diǎn)分析僅將內(nèi)層循環(huán)在gpu端執(zhí)行,其它步驟在cpu端執(zhí)行,需要將數(shù)據(jù)在內(nèi)存(cpu)和顯存(gpu)之間進(jìn)行頻繁傳輸,會(huì)耗用大量的時(shí)間進(jìn)行數(shù)據(jù)交互,綜上,本發(fā)明將重構(gòu)算法的外層循環(huán)和內(nèi)層循環(huán)均放在gpu實(shí)現(xiàn),減少數(shù)據(jù)交互時(shí)間,進(jìn)一步提升程序性能。共軛梯度算法包含大量的矩陣向量之間的運(yùn)算,而cuda函數(shù)庫(kù)提供了簡(jiǎn)單高效的常用函數(shù),其中cublas庫(kù)是一個(gè)基本的矩陣與向量的運(yùn)算庫(kù),提供了與blas相似的接口,調(diào)用庫(kù)函數(shù),無(wú)需按照硬件特性設(shè)計(jì)復(fù)雜的內(nèi)核函數(shù)就能獲得很高的性能,因此本發(fā)明中以調(diào)用cublas庫(kù)函數(shù)為主,設(shè)計(jì)編寫cuda內(nèi)核函數(shù)為輔,進(jìn)行雷達(dá)前視場(chǎng)景目標(biāo)成像并行算法的實(shí)現(xiàn)。上述步驟2中,主要采用cuda編程模型,結(jié)合cublas庫(kù)函數(shù)和設(shè)計(jì)的內(nèi)核函數(shù)實(shí)現(xiàn)了共軛梯度算法(共軛梯度算法流程圖如圖2所示)的并行編程,完成了壓縮感知成像算法的并行化。cuda編程模型的程序流程如圖3所示,主體包含以下五個(gè)步驟:1.gpu初始化,分配顯存空間2.數(shù)據(jù)傳輸:將數(shù)據(jù)從主機(jī)復(fù)制到設(shè)備中3.線程分配、設(shè)計(jì)內(nèi)核函數(shù)并調(diào)用,實(shí)現(xiàn)算法并行處理4.數(shù)據(jù)傳輸:將計(jì)算結(jié)果從設(shè)備拷貝回主機(jī)5.釋放顯存數(shù)據(jù)存儲(chǔ)空間本發(fā)明中主要調(diào)用的cublas庫(kù)函數(shù)有:cublaszaxpy(復(fù)數(shù)向量加法),cublaszcopy(復(fù)數(shù)向量復(fù)制),cublaszdotc(復(fù)數(shù)向量?jī)?nèi)積),cublaszscal(復(fù)數(shù)向量與常數(shù)的乘法)。雖然使用cublas函數(shù)可以使計(jì)算性能達(dá)到及優(yōu),但是針對(duì)表達(dá)式復(fù)雜的部分則不適合直接調(diào)用cublas函數(shù)。因此需對(duì)上述算法的一些步驟進(jìn)行內(nèi)核設(shè)計(jì),其內(nèi)核設(shè)計(jì)的性能好壞是并行化設(shè)計(jì)的關(guān)鍵所在,內(nèi)核函數(shù)設(shè)計(jì)如下:矩陣轉(zhuǎn)置并行實(shí)現(xiàn):由于步驟(2b)需要計(jì)算矩陣轉(zhuǎn)置,如果僅在cpu串行實(shí)現(xiàn),時(shí)間算法復(fù)雜度較高,又因?yàn)楸景l(fā)明中測(cè)量矩陣的規(guī)模大,做轉(zhuǎn)置運(yùn)算耗時(shí)較長(zhǎng),因此需在gpu上并行實(shí)現(xiàn)。gpu內(nèi)存中,全局內(nèi)存沒(méi)有緩存,訪問(wèn)時(shí)延非常長(zhǎng),共享內(nèi)存是gpu片內(nèi)的高速存儲(chǔ)器,同一塊內(nèi)的所有線程訪問(wèn)速度快于全局內(nèi)存;只有共享存儲(chǔ)同時(shí)兼?zhèn)淇勺x、可寫和線程間共享的功能,才可以減少較大的訪存開(kāi)銷,因此這里采用共享存儲(chǔ)的方式使用2d線程維度做矩陣轉(zhuǎn)置。如圖4所示,展示了共享存儲(chǔ)2d矩陣轉(zhuǎn)置過(guò)程。首先靜態(tài)分配共享內(nèi)存,圖中小方格代表block的大小,也代表將矩陣分成的子塊。在共享內(nèi)存2d轉(zhuǎn)置過(guò)程中,block內(nèi)線程將矩陣子塊的數(shù)據(jù)讀取到共享存儲(chǔ)中,保證內(nèi)存訪問(wèn)不超過(guò)邊界,經(jīng)過(guò)同步后,每個(gè)線程與和按對(duì)角線對(duì)稱的線程交換操作的數(shù)據(jù),再按照合并訪問(wèn)方式將結(jié)果寫到顯存中。這種規(guī)劃方式很好地說(shuō)明了cuda的兩層并行:在同一個(gè)block中實(shí)現(xiàn)需要進(jìn)行數(shù)據(jù)交互的細(xì)粒度并行,而在各個(gè)block間實(shí)現(xiàn)不需要進(jìn)行數(shù)據(jù)交換的粗粒度并行。矩陣向量乘法并行化實(shí)現(xiàn)過(guò)程:由于本發(fā)明中多數(shù)步驟均涉及到矩陣向量的乘法運(yùn)算(圖子步驟(2b)中系數(shù)矩陣的計(jì)算),因此采用并行的方式實(shí)現(xiàn)可以減少程序的運(yùn)行時(shí)間。如圖5所示,采用棋盤陣列分塊思想聲明一個(gè)共享存儲(chǔ)矩陣和一個(gè)共享存儲(chǔ)向量,用于存放a矩陣中小窗口的數(shù)據(jù)和x向量中子向量的數(shù)據(jù)。為保證程序的正確性,共享存儲(chǔ)數(shù)據(jù)的加載和讀出都要同步。具體實(shí)現(xiàn)過(guò)程如下:利用二維block和二維thread的概念,將矩陣a劃分為a×b個(gè)block2d塊(a和b的大小根據(jù)矩陣的維度和設(shè)計(jì)的共享內(nèi)存的大小有關(guān),這里每個(gè)block2d維度為32×32),每個(gè)二維block2d對(duì)應(yīng)矩陣a的一個(gè)子矩陣;將列向量轉(zhuǎn)置成行向量,按照行共享存儲(chǔ)優(yōu)化進(jìn)行劃分b個(gè)一維block1d,每個(gè)block1d對(duì)應(yīng)一個(gè)子向量。每個(gè)block1d內(nèi)所有thread完成與a矩陣行號(hào)相同的子矩陣的計(jì)算。外層循環(huán)實(shí)現(xiàn)小窗口的向右移動(dòng)和子向量向下移動(dòng),將子矩陣和子向量寫入各自的sharememory,內(nèi)層循環(huán)實(shí)現(xiàn)小窗口內(nèi)數(shù)據(jù)與子向量數(shù)據(jù)的計(jì)算,即將sharememory中的數(shù)據(jù)讀出,其中與a中子矩陣計(jì)算時(shí)需要的數(shù)據(jù)是與a矩陣的整行的子矩陣列號(hào)相同的x向量的子向量的整列數(shù)據(jù),將計(jì)算的對(duì)應(yīng)位置的數(shù)據(jù)累加,將最終的結(jié)果放置在結(jié)果向量的相應(yīng)位置,完成矩陣向量乘法計(jì)算。向量轉(zhuǎn)化為對(duì)角矩陣的并行實(shí)現(xiàn):在步驟(2c)中需要實(shí)現(xiàn)向量對(duì)角化過(guò)程,如圖6所示,根據(jù)cuda的編程模型,采用block內(nèi)循環(huán)的方法實(shí)現(xiàn)向量對(duì)角化gpu的映射,由于線程數(shù)量的限制,采用固定跳步的方式循環(huán)處理,實(shí)現(xiàn)過(guò)程中首先找到線程索引,然后將線程索引定位數(shù)據(jù)單元,然后復(fù)制賦值即可。難點(diǎn)在于矩陣對(duì)角線處線程索引的尋找,首先設(shè)計(jì)線程分配,這里采用多block和多thread并行運(yùn)算,然后根據(jù)分配的線程,對(duì)線程索引tid和跳步步長(zhǎng)step進(jìn)行構(gòu)造,線程行索引tidx可利用公式tidx=blockidx.x×blockdim.x+threadidx.x計(jì)算,線程列索引tidy可利用公式tidy=blockidx.y×blockdim.x+threadidx.y計(jì)算,跳步步長(zhǎng)step可利用公式step=griddim.x×blockdim.x計(jì)算,即grid內(nèi)所有線程的數(shù)量。向量對(duì)應(yīng)到矩陣對(duì)角線的全局線程索引可利用公式tid_a=(tidy×t_n+tidx)×size+tidy×step+tidx計(jì)算,其中size為向量的長(zhǎng)度,向量的全局線程索引可利用公式tid_x=tidy×t_n+tidx計(jì)算。根據(jù)全局線程索引分別定位矩陣和向量的數(shù)據(jù)單元,然后復(fù)制賦值完成向量轉(zhuǎn)化為對(duì)角矩陣的并行實(shí)現(xiàn)。在內(nèi)核設(shè)計(jì)過(guò)程中采用的優(yōu)化方法:優(yōu)化顯存訪問(wèn):優(yōu)化顯存訪問(wèn),避免顯存帶寬成為并行算法的性能瓶頸。為滿足合并訪問(wèn),主要采用以下幾種方式:1)對(duì)數(shù)據(jù)類型進(jìn)行對(duì)齊;2)保證數(shù)據(jù)訪問(wèn)的首地址從16的整數(shù)倍開(kāi)始,讓每一個(gè)線程一次讀32bit。優(yōu)化指令流:本發(fā)明實(shí)施例采用的是控制流語(yǔ)句方式進(jìn)行優(yōu)化。對(duì)于控制流指令,如if、switch等,這種條件判斷語(yǔ)句給并行計(jì)算的性能帶來(lái)一定的影響。因?yàn)樵谕籦lock塊中的所有線程必須在同一時(shí)刻執(zhí)行一樣的命令,若存在判斷分支,則會(huì)在block中存在線程等待,從而影響函數(shù)的性能。對(duì)于并行算法中的if分支語(yǔ)句,使用條件表達(dá)式(?:)來(lái)替代。本發(fā)明的效果可以通過(guò)以下仿真實(shí)驗(yàn)說(shuō)明:1.仿真內(nèi)容為了驗(yàn)證本發(fā)明在cuda架構(gòu)下并行計(jì)算的優(yōu)越性,通過(guò)一組仿真實(shí)驗(yàn)對(duì)本發(fā)明所需的時(shí)間與cpu串行所需的時(shí)間定量分析,仿真測(cè)試硬件平臺(tái)參數(shù)如表1所示,軟件平臺(tái)參數(shù)如表2所示:表1硬件平臺(tái)參數(shù)cpuintel(r)i7-6700內(nèi)存16gb顯卡nvidiageforcegtx1060顯卡顯存6gb計(jì)算能力6.1表2軟件平臺(tái)參數(shù)2.仿真結(jié)果及分析仿真場(chǎng)景目標(biāo)的散射系數(shù)分布如圖7a所示,實(shí)驗(yàn)用到兩組數(shù)據(jù),數(shù)據(jù)為雙精度復(fù)數(shù)類型。第一組的hessian矩陣數(shù)據(jù)個(gè)數(shù)為11160×11160,大小為1.8558gb,將三維目標(biāo)場(chǎng)景按照對(duì)應(yīng)的距離與方位分辨率進(jìn)行離散網(wǎng)格化處理,劃分為2個(gè)距離維的空間位置,對(duì)應(yīng)每個(gè)距離切面的場(chǎng)景維度為31×180;第二組的hessian矩陣數(shù)據(jù)個(gè)數(shù)為16740×16740,大小為4.1757g,同樣做離散化處理,如圖7b所示,每個(gè)距離切面維度同樣為31×180;成像算法的迭代次數(shù)設(shè)為50次(外層循環(huán)),共軛梯度算法求解信號(hào)殘差值的迭代次數(shù)設(shè)為200次(內(nèi)層循環(huán)),第二組實(shí)驗(yàn)得到的估計(jì)信號(hào)與仿真的雷達(dá)前視場(chǎng)景目標(biāo)散射系數(shù)分布信號(hào)對(duì)比如圖7c、7b所示,估計(jì)場(chǎng)景與仿真場(chǎng)景對(duì)比如圖7d、7a所示。圖7表明,雖然數(shù)據(jù)規(guī)模大,點(diǎn)目標(biāo)個(gè)數(shù)較多,但是基于gpu在cuda編程架構(gòu)下采用共軛梯度算法重建出的估計(jì)信號(hào)與仿真信號(hào)在主觀上評(píng)價(jià)基本一致,如圖7c所示,其中最后一個(gè)位置圖像是前面三張圖像的沿視場(chǎng)方向的投影,點(diǎn)目標(biāo)的位置與采用cpu串行方式估計(jì)的信號(hào)位置完全一致,估計(jì)場(chǎng)景與仿真場(chǎng)景目標(biāo)的散射系數(shù)分布吻合,達(dá)到了成像要求。將cuda架構(gòu)下gpu并行計(jì)算時(shí)間與cpu串行時(shí)間進(jìn)行對(duì)比,如表3和表4所示:表3場(chǎng)景劃分為兩個(gè)距離維空間,hessian矩陣:1.8558gb,重建時(shí)間:表4場(chǎng)景劃分為三個(gè)距離維空間,hessian矩陣:4.1757g,重建時(shí)間:從表3、表4可看出,本發(fā)明采用的方法對(duì)雷達(dá)前視場(chǎng)景目標(biāo)的成像速率有明顯提升,基本解決了壓縮感知框架下處理大規(guī)模矩陣耗時(shí)較長(zhǎng)的問(wèn)題,實(shí)現(xiàn)了準(zhǔn)實(shí)時(shí)性。綜上,本發(fā)明能帶來(lái)的有益效果是:1.通過(guò)調(diào)用cublas函數(shù)對(duì)算法進(jìn)行并行實(shí)現(xiàn),加快了壓縮感知重構(gòu)處理的處理速度;2.在內(nèi)核函數(shù)設(shè)計(jì)過(guò)程中采用共享存儲(chǔ)的方式減小顯存開(kāi)銷,同時(shí)采用優(yōu)化指令流的方式,使程序性能獲得提升;3.雷達(dá)前視區(qū)域的場(chǎng)景目標(biāo)散射系數(shù)規(guī)模大、共軛梯度算法適合大規(guī)模無(wú)約束優(yōu)化問(wèn)題的求解,可獲取相對(duì)較好的估計(jì)效果。4.將耗時(shí)較長(zhǎng)的共軛梯度算法基于gpu平臺(tái)并行化,實(shí)現(xiàn)雷達(dá)前視場(chǎng)景目標(biāo)散射系數(shù)分布的估計(jì),進(jìn)而縮短成像處理時(shí)間,提高成像效率。本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁(yè)12