應(yīng)用CUDA技術(shù)解決雷達(dá)虛擬顯示器的仿真余輝問題_第1頁
應(yīng)用CUDA技術(shù)解決雷達(dá)虛擬顯示器的仿真余輝問題_第2頁
應(yīng)用CUDA技術(shù)解決雷達(dá)虛擬顯示器的仿真余輝問題_第3頁
應(yīng)用CUDA技術(shù)解決雷達(dá)虛擬顯示器的仿真余輝問題_第4頁
應(yīng)用CUDA技術(shù)解決雷達(dá)虛擬顯示器的仿真余輝問題_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

應(yīng)用CUDA技術(shù)解決雷達(dá)虛擬顯示器的仿真余輝問題

在建立雷達(dá)虛擬操作系統(tǒng)或維修訓(xùn)練系統(tǒng)時,顯示器的仿真效果直接影響模擬器的訓(xùn)練效果。目前制約余輝實現(xiàn)的主要瓶頸是余輝效果帶來的龐大的計算量,使得效果較好的余輝掃描線轉(zhuǎn)速難以超過10轉(zhuǎn)/s,如果要提高轉(zhuǎn)速,則需要以犧牲顯示畫質(zhì)為代價?;诠鈻艗呙栌噍x模擬的主流方法有畫線法、固定扇掃法、逐點消隱法,由于前兩者圖像易出現(xiàn)輻射狀花紋及掃描速率不穩(wěn)定,因此后者的應(yīng)用較多,效果也明顯強(qiáng)于前者。本文在逐點消隱法的基礎(chǔ)上應(yīng)用CUDA技術(shù),解決了運算量巨大的問題,在光柵顯示器上得到了余輝效果逼真、畫面流暢的余輝圖形。1、余輝仿真的瓶頸傳統(tǒng)的雷達(dá)P顯采用示波管作為顯示終端,其內(nèi)部熒光材料具有指數(shù)型衰減的余輝效應(yīng),電子束掃描線圓周掃過屏幕將留下逐漸消隱的余輝。但光柵顯示器無法自動產(chǎn)生熒光粉的余輝效應(yīng),因此必須人為地模擬余輝效應(yīng)。軟模擬通常采用光柵顯示器,用計算機(jī)編程實現(xiàn)。光柵掃描顯示器具有高亮度、高穩(wěn)定度、大容量顯示的圖文處理能力、豐富的色彩及多灰度等級的優(yōu)點。一般采用以下三種方法實現(xiàn)。(1)畫線法較容易實現(xiàn),原理是在屏幕上以畫直線的方式畫出每一角度的掃描線,形成每次畫一個扇面的灰度遞減的直線簇。但是當(dāng)程序運行時,掃描線軌跡不斷地在屏幕上轉(zhuǎn)動,該方法不能無縫地覆蓋整個扇掃區(qū)域,從而產(chǎn)生一個輻射狀的固定花紋。(2)固定扇掃法是在畫線法基礎(chǔ)上改進(jìn)的一種仿真方法,控制扇形區(qū)域的圓心角,依次使不同扇形區(qū)域亮度減少。它雖然消除了輻射狀花紋,但在沒有目標(biāo)到有目標(biāo)信號時,由于數(shù)據(jù)量的增加會造成掃描線的轉(zhuǎn)速不同。(3)逐點消隱法,主要原理是將每個方位像素的亮度逐次遞減,即每個點都必須被修改,這樣整個屏幕畫面亮度逐漸衰減。其產(chǎn)生的余輝效果比較逼真,掃描線轉(zhuǎn)速也較穩(wěn)定。模擬逼真的余輝效果,一般采用逐點消隱法,十分逼真的余輝仿真需要非常高的數(shù)據(jù)吞吐率,要求在每一顯示幀的時間內(nèi)(一般為60Hz的倒數(shù)約16ms)對屏幕中所有像素進(jìn)行一次衰減運算。以公認(rèn)的高效算法,即查表法為例:對于一個像素點而言,最少需要1次讀和2次寫操作,分辨率為1024×1024的屏幕中會有1024×1024個像素點參與雷達(dá)回波的顯示,數(shù)量約為1M。即在16ms的時間內(nèi)需要進(jìn)行1M次讀操作和2M次寫操作,分給每個像素點的時間為16ns。由于Windows屬于通用型操作系統(tǒng),硬件操作過程極其復(fù)雜,無論如何也無法在16ns內(nèi)完成1次讀和2次寫操作。需要說明的是,現(xiàn)有的用PC實現(xiàn)的余輝仿真算法都是以犧牲畫質(zhì)為前提條件的,例如有的算法降低角度分辨率,有的算法只運算部分像素。2、瓶頸的解決方案為了解決此瓶頸,本文將國外主要應(yīng)用于3D游戲設(shè)計的CUDA技術(shù)移植到余輝的模擬上。CUDA(統(tǒng)一計算設(shè)備架構(gòu))是NVIDIA公司在2007年推出的針對GPGPU(通用計算GPU)的一個全新構(gòu)想,使專注于圖像處理的GPU超高性能在數(shù)據(jù)處理和科學(xué)計算等通用計算領(lǐng)域發(fā)揮優(yōu)勢。GPU特別適合并行數(shù)據(jù)運算問題,同一個程序可操作許多并行數(shù)據(jù)元素,并具有高運算密度(算術(shù)運算與內(nèi)存操作的比例),且在高密度運算時,GPU訪問內(nèi)存的延遲可以被掩蓋。目前高端GPU計算性能已達(dá)到Teraflops(每秒萬億次浮點運算)級別,其運算速度遠(yuǎn)遠(yuǎn)高于CPU的速度。2008年初國內(nèi)建成的首套實驗系統(tǒng),其計算性能的理論峰值124Teraflops,可用峰值82Teraflops。但是常規(guī)的GPU通用計算還存在以下問題[7]:編程過于繁雜,難以學(xué)習(xí)與使用,在非圖形領(lǐng)域應(yīng)用很不充分;GPU編程缺乏靈活性,對GPU性能的發(fā)揮有很大的限制。而CUDA采用GPU+CPU的方式,通過標(biāo)準(zhǔn)C語言將GPU的眾多的計算特性結(jié)合到一起,由線程來創(chuàng)建應(yīng)用程序。程序代碼在實際執(zhí)行中分為兩種,一種是運行在CPU上的主機(jī)代碼,另一種是運行在GPU上的設(shè)備代碼。它類似于CPU上的多線程程序,但與僅能有很少線程同時工作的多核CPU相比,GPU可以同時執(zhí)行成千上萬個線程。CPU程序以異步的方式調(diào)用GPU核程序,GPU作為CPU的協(xié)處理器(CoProeessor)提供服務(wù)。當(dāng)前CUDA提供的主要功能如下:(1)在GPU上提供標(biāo)準(zhǔn)C編程語言。(2)為在支持CUDA的NVIDIAGPU的并行計算提供統(tǒng)一的軟硬件解決方案。(3)支持CUDA的GPU能進(jìn)行并行數(shù)據(jù)緩存和線程執(zhí)行管理。(4)經(jīng)過優(yōu)化的,從CPU到支持CUDA的GPU的直接上傳、下載通道。(5)CUDA驅(qū)動與DirectX和OpenGL等圖形驅(qū)動程序兼容。為了解決巨大計算量的問題,主要采用CPU+GPU的編程模式來模擬余輝,在GPU中為每一個像素點創(chuàng)建一個線程獨立進(jìn)行亮度衰減處理。由于每個像素的線程并行執(zhí)行,完成整個屏幕像素的數(shù)據(jù)處理幾乎不需要計算時間,真正花費時間的是畫面繪制和翻轉(zhuǎn)。因此繪制畫面在后臺表面進(jìn)行,繪制完成后翻轉(zhuǎn)到前臺顯示,這樣繪制和顯示可以同時進(jìn)行,既為畫面的繪制留足了時間,又能得到流暢不閃爍的畫質(zhì)。3、采用CUDA技術(shù)來實現(xiàn)余輝效果為了產(chǎn)生不同方位的掃描線,將方位、距離進(jìn)行量化,由于掃描區(qū)域的分辨率為1024×1024,因此半徑為512像素。由于掃描半徑為512個像素,理論上只要角度量化數(shù)N大于3217就不會出現(xiàn)顯示死地址的現(xiàn)象,方位上量化為4096個等分。這樣初始生成一個4096×512個像素的圓域。雷達(dá)P顯中采用的是極坐標(biāo)系,而在光柵顯示器中采用的是直角坐標(biāo),通過坐標(biāo)變換,將建立一張坐標(biāo)變換表,如表1所示。通過查表可以避免坐標(biāo)變換帶來的正余弦計算,方便地在極坐標(biāo)和直角坐標(biāo)間轉(zhuǎn)換,從而節(jié)省大量的運算時間??紤]到近距離區(qū)域,多個角度的距離單元會對應(yīng)相同的像素點,首先為每個像素點定義一個屬性的結(jié)構(gòu)體:typedefstruct{WORDx;//屏幕直角坐標(biāo)xWORDy;//屏幕直角坐標(biāo)yWORDScanlinePtIndex;//該點在掃描線上的//距離索引BYTEMapTo2Pt;//該點與同一條掃描上的//點是否重合BYTERadEnd;//標(biāo)記該條掃描線處理完畢}RADIUSPOINT;為圓域內(nèi)的點分配內(nèi)存空間:RADIUSPOINTm_pRadPtToLintPtMap=newRADIUSPOINT[4096×512]。對于同一條掃描線上相鄰的兩點,如果直角坐標(biāo)相同就把MapTo2Pt設(shè)為1,標(biāo)記為相同的點;如果相鄰兩點的直角坐標(biāo)不相同,則把距離索引值賦給ScanlinePTIndex,每條線最后一個點設(shè)置RadEnd為1來標(biāo)記每條線處理已完畢。對于相鄰兩條線上的點,如果當(dāng)前線上點與前一條線上相鄰4個點的直角坐標(biāo)相等,設(shè)置為m_pPixelOverlap[i]=1,否則設(shè)為0??紤]到余輝呈指數(shù)型衰減,而指數(shù)運算需要花費大量的時間,對于計算機(jī),其最快的操作是取值和賦值,為了提高光柵掃描雷達(dá)顯示系統(tǒng)的實時性,需要提高單位時間內(nèi)能夠處理的像素點個數(shù)。于是對指數(shù)運算采用查表法以提高速度,維護(hù)一張按角度劃分的指數(shù)型衰減因子表m_wAttenuaTIon[4096]以進(jìn)行數(shù)值的取值和賦值操作。同時還要建立一個Brightness[4096×512]的亮度表,來存儲每個像素對應(yīng)的RGB顏色值。以上這些工作在程序的初始化中即完成,一經(jīng)完成即可在后續(xù)的程序中直接調(diào)用。通過CUDA編程時,GPU可看作為可以并行執(zhí)行非常多個線程的計算設(shè)備,執(zhí)行并行計算的線程被組織成線程塊(Block),每個線程塊可以包含多達(dá)512個線程,而線程塊又組成了柵格(Grid)。GPU可以支持成百上千萬個并行線程,于是可以為每個像素點開一個線程,這樣每個像素點可以并行處理,能極大地提高對整個屏幕像素的處理速度,為CPU留出足夠多的時間去處理其他相關(guān)的任務(wù)。定義線程塊Block包含的線程維數(shù):dim3threads(BLOCK_SIZE,BLOCK_SIZE);定義柵格Grid包含的線程塊數(shù):dim3grid(Width/threads.x,Height/threads.y);每個像素點對應(yīng)的線程處理工作如下:由于某型雷達(dá)轉(zhuǎn)速為10轉(zhuǎn)/min,相當(dāng)于每次更新的掃描線數(shù)應(yīng)為4096×10/60/1000=0.683條/ms,像素處理在GPU中并行進(jìn)行,對CPU的占用率幾乎為零,所消耗的時間主要是Direct3D紋理的繪制和表面的翻轉(zhuǎn),大約為16ms,因此每次更新的掃描線數(shù)目約為16×0.683=10.928,即每次更新11條。將當(dāng)前要更新的掃描線上的像素點設(shè)為初始亮度,其后的每條掃描線上的像素點的亮度按與當(dāng)前掃描線角度差m_anglediff取m_wAttenuaTIon[m_anglediff]的亮度進(jìn)行衰減。由于近距離區(qū)域多個角度的距離單元對應(yīng)相同的像素點,因此中心部位被消隱的次數(shù)明顯要比其他部位多,導(dǎo)致效果有些失真。于是需要對這些坐標(biāo)相同的點進(jìn)行處理,對于屬性MapTo2Pt為1的點,比較坐標(biāo)相同的點處于不同距離時的亮度,取其大者賦值給亮度表Brightness[4096×512]。對于屬性m_pPixelOverlap為1的點,比較處于各個角度時的亮度,取其大者賦值給亮度表。這樣對于同一個點只顯示一次且取其最亮者顯示,較好地避免了中心部位被消隱次數(shù)過多的情況。對于實現(xiàn)余輝等級的情況,只需要調(diào)制m_wAttenuaTIon的大小就可以方便地調(diào)節(jié)余輝等級。如果需要提高轉(zhuǎn)速,只需增大每次更新的掃描線數(shù)目即可,且基本不會影響程序運行速度。通過CPU+GPU組合的方式模擬不同等級余輝效果如圖1、圖2所示,此時對應(yīng)的CPU占用率幾乎為零,如圖3所示。該方法得到的余輝效果逼真、畫面流暢、掃描速度達(dá)到了預(yù)定的10轉(zhuǎn)/s的要求,且CPU占用率極低,并不妨礙CPU處理其他數(shù)據(jù)。當(dāng)把每次需要更新的掃描線數(shù)目增多時,由于GPU能并行高速處理每個像

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論