• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于GPU的可視化測量儀器軟件設(shè)計

      2017-01-13 07:23:28劉文文吳方貴
      計算機(jī)測量與控制 2016年8期
      關(guān)鍵詞:著色器海量頂點

      楊 瑛,劉文文,吳方貴

      (合肥工業(yè)大學(xué)儀器科學(xué)與光電工程學(xué)院,合肥 230009)

      基于GPU的可視化測量儀器軟件設(shè)計

      楊 瑛,劉文文,吳方貴

      (合肥工業(yè)大學(xué)儀器科學(xué)與光電工程學(xué)院,合肥 230009)

      提出利用顯卡圖形處理單元(graphics processing units,GPU)的并行信息處理能力解決儀器軟件在執(zhí)行海量數(shù)據(jù)處理、建模、渲染以及交互所面臨的開銷過大的難題,基于Direct X 11的計算著色器(compute shader,CS)實現(xiàn)海量測量數(shù)據(jù)的處理和建模以及高速推送渲染,建立在GPU內(nèi)實現(xiàn)海量數(shù)據(jù)模型上點的拾取模塊,以提高儀器可視化測量中的交互執(zhí)行;實驗比對證實了基于GPU的可視化測量儀器軟件的高執(zhí)行效率;研究為挖掘可視化測量儀器硬件能力、合理配置儀器CPU與GPU開銷、在整體上提高儀器運行效率提供了一條有價值的技術(shù)路徑。

      儀器軟件;可視化測量;GPU并行運算;Direct X 11

      0 引言

      隨著數(shù)字技術(shù)的突飛猛進(jìn),越來越多的測量儀器需要高效和高質(zhì)量的顯示以實現(xiàn)儀器測量結(jié)果的可視化測量。在常規(guī)儀器設(shè)計的理念中,儀器數(shù)據(jù)采集、控制、數(shù)據(jù)處理、建模渲染和交互等全部信息處理是基于CPU的,因此,在儀器硬件能力有限的條件下,難以實現(xiàn)高效高質(zhì)量的測量顯示。如何挖掘顯卡處理單元(GPU)的并行信息處理能力、顯著提升測量儀器的數(shù)據(jù)采集處理、控制、數(shù)據(jù)處理、建模渲染和交互的效率和容量,已經(jīng)成為可視化測量儀器領(lǐng)域亟待解決的關(guān)鍵問題,這對降低可視化測量儀器制造成本,增加儀器制造商的市場競爭力具有重要的意義。

      依托某委托項目,對某款電子儀器配套三維可視化分析顯示功能,以實現(xiàn)在低端硬件設(shè)備上實現(xiàn)海量測試信號數(shù)據(jù)的高效處理渲染和可視化測量關(guān)鍵技術(shù)的突破,使其儀器產(chǎn)品在顯示效率和效果以及軟件開發(fā)技術(shù)上處于領(lǐng)先,以提升企業(yè)和產(chǎn)品的整體技術(shù)水平和競爭力。該儀器軟件所面臨的技術(shù)難點是在對CPU占用高約束的條件下,面對海量測試信號數(shù)據(jù)實現(xiàn)三維顯示幀率要求高、要求特殊的推送效果、高效的可視化測量交互,包括三維和二維顯示切換流暢、精準(zhǔn)操控以及高精度標(biāo)記測量結(jié)果等。鑒此,提出利用顯卡GPU強(qiáng)大的并行計算能力,開發(fā)基于GPU的儀器可視化測量軟件,將海量數(shù)據(jù)處理、建模、渲染和拾取工作推入GPU內(nèi)進(jìn)行,實現(xiàn)儀器信息處理和渲染交互功能的高效,從而把有限的CPU資源用作儀器的測量和控制,以此提升儀器整體性能以及儀器軟件設(shè)計技術(shù)上的先進(jìn)性。

      1 關(guān)鍵問題

      目前Windows Direct X Graphics和OpenGL是主流顯卡支持的三維開發(fā)平臺,考慮到高效率的現(xiàn)實需求以及市場認(rèn)知度,軟件選擇基于Direct3D11 API編程實現(xiàn)軟件開發(fā),借助于GPU的并行運算能力提高數(shù)據(jù)分析和處理以及渲染與交互的速度,研究三維可視化測量中的關(guān)鍵問題。利用Direct3D11定義的CPU與GPU的信息交換機(jī)制,建立相應(yīng)模塊,在GPU中實現(xiàn)高效推送建模渲染以及精確高效拾取可視化測量結(jié)果。

      1.1 Direct3D11渲染管線、著色器及效果

      Direct3D通常支持在CPU中組織表征三維模型的頂點數(shù)據(jù),隨后將這些頂點導(dǎo)入渲染管線(見圖1虛線部分)處理成能夠在顯示器上顯示的像素,這一過程通常在顯卡中進(jìn)行。渲染管線是顯示芯片內(nèi)部處理圖形信號的相互獨立的并行處理單元,具體執(zhí)行從頂點數(shù)據(jù)到圖像數(shù)據(jù)的處理過程。一條渲染管線可以劃分成一序列可以并行和按照固定順序進(jìn)行的階段(Stage),見圖1。在硬件上,階段可以理解為執(zhí)行一種特定任務(wù)專門的并行處理單元,渲染管線的每個階段都從它的前一階段接收輸入,然后把輸出發(fā)給隨后的階段。

      圖1 圖形渲染管道

      由于硬件渲染架構(gòu)的更新,每一個著色階段都利用通用著色核實現(xiàn)相同的功能,同時,每一個特定的著色階段都提供各自的額外功能。在通用著色核中,無論是常數(shù)、紋理或是緩存都被視為資源直接或者通過采樣器傳遞給著色器代碼進(jìn)行處理,見圖1。

      隨著顯卡的技術(shù)進(jìn)步,渲染管線變得越來越強(qiáng)大,渲染管線上的著色器種類越來越多,功能越來越細(xì)膩。除了渲染管線相關(guān)的著色器之外,D3D11新添加了計算著色器(Computer Shader,CS)。計算著色器是Direct3D中添加的一個新的獨立于圖形渲染管線的可編程著色器階段,它與其他著色器很相似,但適用于GPGPU應(yīng)用,適用于通用計算,不受圖形應(yīng)用的限制[1]。因此,本儀器軟件確保高效率執(zhí)行的策略是利用CS在GPU中進(jìn)行海量測量信號數(shù)據(jù)的預(yù)處理、建模、推送、拾取等功能滿足項目的高效要求,同時使得執(zhí)行對CPU的占用達(dá)到最小。

      1.2 海量測量數(shù)據(jù)的預(yù)處理

      常規(guī)的Direct3D編程架構(gòu)中需要在應(yīng)用程序中編寫C++代碼執(zhí)行輸入裝配階段的操作,見圖1。該階段的任務(wù)是將測量數(shù)據(jù)重組成三維頂點,通過創(chuàng)建的頂點資源將頂點數(shù)據(jù)導(dǎo)進(jìn)入GPU,基本操作包括創(chuàng)建輸入緩存、創(chuàng)建輸入布局對象、綁定對象、指定元圖渲染格式、調(diào)用繪制方法等。考慮到儀器軟件需要對海量測量數(shù)據(jù)進(jìn)行預(yù)處理,包括從時域到頻域數(shù)據(jù)轉(zhuǎn)換、對數(shù)變換和平滑處理等,如果使用常規(guī)編程,則預(yù)處理要在CPU中執(zhí)行,面對海量測量數(shù)據(jù)這一過程的開銷是巨大的,并造成對CPU的大量占用。

      相對于CPU,GPU最大的特點是晶體管主要被用于執(zhí)行計算,存儲部件很少,GPU內(nèi)部獨特的架構(gòu)使得大量線程同時運算成為現(xiàn)實。因此,GPU具有強(qiáng)大的浮點運算能力和較高的數(shù)據(jù)傳輸能力,主要體現(xiàn)在GPU與顯存之間帶寬最高可達(dá)288 GB/s,系統(tǒng)內(nèi)存到顯存的帶寬為15.75 GB/s,這些特點為GPU應(yīng)用于數(shù)學(xué)計算提供了豐富的功能和強(qiáng)大的能力。文獻(xiàn)[2-4]綜合說明GPU通用計算是一種新的高性能運算,利用GPU可以加速海量數(shù)據(jù)處理,如利用GPU完成快速傅立葉變換[5]。

      CS在GPU中執(zhí)行多線程運算,線程是CS的基本處理單元,具體過程包括:1)為CS創(chuàng)建并初始化資源(常量緩存、結(jié)構(gòu)緩存和可讀寫結(jié)構(gòu)緩存);2)設(shè)置CS狀態(tài),即設(shè)定線程組數(shù)量以及每個線程組中包含的線程數(shù)量,在線程組內(nèi)的線程之間可以共享數(shù)據(jù)或互相同步;3)調(diào)用ID3D11DeviceContext::Dispatch方法開啟一定數(shù)量的線程組,執(zhí)行計算著色器中的命令并取回運算結(jié)果。因此,儀器軟件借助于CS在GPU中實現(xiàn)海量數(shù)據(jù)預(yù)處理,使得預(yù)處理更高效,避免了對CPU的過多占用。

      見圖1和2,首先把預(yù)處理所需要的參數(shù)以常量緩存的方式從CPU傳遞到GPU;儀器采集的生測量數(shù)據(jù)直接保存在結(jié)構(gòu)緩存資源中,通過著色器資源視圖綁定到渲染管線,生數(shù)據(jù)進(jìn)入CS_FFT(),執(zhí)行FFT計算、對折和取模計算。由于生測量數(shù)據(jù)是一維數(shù)據(jù),數(shù)據(jù)容量明顯小于常規(guī)三維頂點的數(shù)據(jù)容量,從CPU到GPU所消耗的時間大大減少。

      圖2 數(shù)據(jù)預(yù)處理流程

      一個資源可以通過不同的資源視圖被綁定到多個渲染管線階段,故將可讀寫結(jié)構(gòu)緩存Buffer Out1通過無序訪問視圖綁定到CS_FFT()輸出,用來存儲傅立葉變換的計算結(jié)果,也可以通過著色器資源視圖將BufferOut1綁定為計算著色器CS_Q()的輸入緩存,完成取對數(shù)運算。CS_Q()的輸出緩存BufferOut2作為計算著色器CS_P()的輸入資源,進(jìn)行平滑處理;根據(jù)用戶的需要(常量緩存中的數(shù)據(jù))判斷是否要進(jìn)行平滑處理,計算著色器CS_P()的輸出緩存Bffer-Out3即預(yù)處理的結(jié)果。預(yù)處理的結(jié)果保存在GPU的輸出緩存中,可使用ID3D11DeviceContext::CopyResource()方法直接拷貝到頂點緩存進(jìn)入渲染管線的頂點著色階段。由于該方法直接在GPU內(nèi)讀寫,速度飛快。

      [10] Toshi Yoshihara & James R. Holmes, “Can China Defend a ‘Core Interest’ in the South China Sea?”, The Washington Quarterly, Spring 2011, pp. 45-59.

      1.3 海量測量數(shù)據(jù)的三維推送渲染

      本儀器軟件在海量數(shù)據(jù)快速建模的基礎(chǔ)上還要求支持建模數(shù)據(jù)動態(tài)更新的三維推送渲染。在三維推送渲染場景中,每一幀要求組織新數(shù)據(jù),與前一幀的部分舊數(shù)據(jù)合并重新構(gòu)建三維模型并進(jìn)行渲染,形成測量結(jié)果流動的視覺效果。實現(xiàn)推送渲染效果歸結(jié)為對GPU資源的訪問操作。常規(guī)采用ID3D11DeviceContext::Map()方法獲取頂點緩存的資源指針并鎖住頂點緩存,通過資源指針操控頂點緩存中的數(shù)據(jù),移動資源中的頂點數(shù)據(jù)、拷貝新的頂點數(shù)據(jù)進(jìn)入頂點緩存。在此需要采用D3D11_MAP_WRITE_NO_OVERWRITE標(biāo)識控制系統(tǒng)以覆蓋的方式部分地更新頂點緩存中的數(shù)據(jù),但需要自行處理CPU與GPU對頂點資源訪問時的沖突問題,這不僅給開發(fā)增添了難度,而且研究發(fā)現(xiàn)由于移動和拷貝的是三維頂點數(shù)據(jù),推送渲染幀率不能滿足要求。因此,常規(guī)的方法難以實現(xiàn)高效的推送渲染。

      頂點著色器執(zhí)行的常規(guī)工作是對頂點緩存資源中的頂點數(shù)據(jù)進(jìn)行坐標(biāo)變換、光照處理等處理。本儀器軟件將全部測量數(shù)據(jù)輸入計算著色器進(jìn)行預(yù)處理后送入頂點著色器,在頂點著色器在執(zhí)行常規(guī)工作之前執(zhí)行將頂點緩存中的一維數(shù)據(jù)裝配成為三維頂點的任務(wù),并根據(jù)一維數(shù)據(jù)的數(shù)值實現(xiàn)著色,在推送渲染時通過重新裝配頂點數(shù)據(jù)實現(xiàn)三維模型的更新。由于采用在頂點著色器中將一維數(shù)據(jù)裝配成為三維頂點并建立更新三維模型的策略,避免了海量數(shù)據(jù)的移動和拷貝對推送渲染幀率的制約。

      圖3 效果文件中頂點著色器的代碼

      見圖3,D3D11定義的輸入裝配階段生成了系統(tǒng)頂點ID值,其語義符為SV_VertexID,本儀器軟件利用頂點ID構(gòu)建三維頂點坐標(biāo)x/y/z(時間/幅值/頻率)值。在CPU創(chuàng)建色彩紋理資源,將紋理資源通過定義在效果文件中的外部變量傳遞到GPU中,在頂點著色階段,根據(jù)頂點的Y值確定頂點紋理坐標(biāo),通過像素著色器的紋理采樣來實現(xiàn)著色,隨后執(zhí)行頂點著色器的常規(guī)工作。當(dāng)推送渲染時,依據(jù)對頂點ID的特定變換,重新構(gòu)建三維頂點坐標(biāo)x/y/z值,產(chǎn)生數(shù)據(jù)流動的視覺效果,效果圖見圖4。

      本儀器軟件中,從CPU拷貝到GPU的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)小于常規(guī)算法中傳遞的數(shù)據(jù)量,數(shù)據(jù)預(yù)處理和動態(tài)的三維建模均利用了GPU的高速并行處理能力,大大提高了顯示幀率,也降低了程序的復(fù)雜度,同時執(zhí)行對CPU的占用達(dá)到了最小。

      圖4 動態(tài)3D模型效果

      1.4 快速拾取

      拾取就是通過鼠標(biāo)點擊三維模型,輸出三維模型上鼠標(biāo)拾取點的坐標(biāo)。在儀器可視化測量領(lǐng)域,在海量數(shù)據(jù)模型上的拾取的關(guān)鍵問題是速度和精度。近些年來,逐漸出現(xiàn)了利用GPU加速的拾取算法。如張嘉華等提出利用幾何著色器進(jìn)行射線-幾何圖元求交運算的GPU拾取算法[6];文獻(xiàn)[7-8]利用CS實現(xiàn)基于屏幕空間的點云拾取算法等。本儀器軟件中,拾取分成三個階段,第一階段是構(gòu)建視點與鼠標(biāo)拾取屏幕上的點形成的射線在世界坐標(biāo)系中的位置矢量和方向矢量,涉及屏幕上拾取點從屏幕坐標(biāo)系向世界坐標(biāo)系的變換,見圖5。這一操作在鼠標(biāo)拾取時只執(zhí)行一次,計算速度的壓力不大,在CPU中執(zhí)行計算即可。

      圖5 拾取射線坐標(biāo)轉(zhuǎn)換過程

      第二階段是在世界坐標(biāo)系內(nèi)計算射線與模型的交點。由于模型是三維的、由三角面片構(gòu)成,在模型上搜索射線與模型的交點需要遍歷所有三角面片,找出所有與該射線相交的三角面片。因此,首先需要設(shè)計一個計算模塊計算射線與特定三角面片交點,最終獲得兩種結(jié)果:無交點或有交點、輸出該三角面片的頂點,利用該模塊在世界空間中計算比較所有相交的三角面片的頂點與視點的距離,距離最小的即為拾取點。實際這一階段需要遍歷模型全部的三角面片,計算速度的壓力均比較大。常規(guī)算法是在CPU中遍歷所有三角面片,不僅效率低,而且對CPU占用大。

      本儀器軟件將這一階段的工作全部移植到GPU內(nèi)執(zhí)行,見圖1和圖6。首先把世界坐標(biāo)系下射線的位置和方向向量以常量緩存的方式傳遞到GPU,然后將頂點緩存復(fù)制到結(jié)構(gòu)緩存BufferIn中,通過著色器資源視圖綁定BufferIn到計算著色器CS_T()的輸入階段。在CS_T()中,與頂點著色器中的裝配階段一樣將一維數(shù)據(jù)裝配為世界空間中的三維坐標(biāo),保存在可讀寫結(jié)構(gòu)緩存Buffer T中。最后將Buffer T綁定到計算著色器CS_Pick()輸入階段,利用CS_Pick()完成三角面片的遍歷,并將與拾取射線相交的三角面片所對應(yīng)的輸出緩存設(shè)為1,保存在可讀寫結(jié)構(gòu)緩存Buffer P中。由于對三角面片的遍歷過程在GPU進(jìn)行,確保了拾取過程的快速執(zhí)行。

      第三階段從GPU中拷貝出可讀寫結(jié)構(gòu)緩存,在CPU中計算相交三角形對應(yīng)的頂點在世界空間中與視點的距離,最小距離對應(yīng)的頂點,即拾取點。

      整個拾取過程是在GPU內(nèi)利用Direct X11的CS進(jìn)行運算,得益于GPU強(qiáng)大的并行計算能力,與在CPU上運行的算法相比,提高了拾取速度,并且數(shù)據(jù)量越大,速度優(yōu)勢越明顯。

      圖6 拾取流程圖

      2 實驗結(jié)果與分析

      實驗使用的設(shè)備配置為CPU:酷睿i3 2130及GPU:AMD 7450的PC,通過對不同數(shù)據(jù)量建模測試,圖7從左到右分別呈現(xiàn)的是數(shù)據(jù)量為1024*600、1024*300、512*300的測量信號數(shù)據(jù)效果圖,分別得到靜態(tài)顯示和推送顯示狀態(tài)下的顯示幀率(fps),見表1和表2,顯然基于GPU的顯示幀率明顯高于基于CPU的顯示幀率;與靜態(tài)顯示相比推送顯示幀率下降不明顯。

      圖7 不同數(shù)據(jù)量的靜態(tài)模型效果圖

      表1 靜態(tài)顯示幀率

      表2 推送顯示幀率

      拾取試驗中,建模數(shù)據(jù)個數(shù)最為1 024*600。點擊后顯示選擇的點坐標(biāo)與在CPU中進(jìn)行的拾取結(jié)果一致,說明基于GPU的拾取結(jié)果是正確的,如圖8所示。表3呈現(xiàn)了拾取不同數(shù)據(jù)容量模型上點的耗時。拾取速度滿足了項目要求。

      圖8 拾取示例

      表3 拾取時間統(tǒng)計表

      3 結(jié)論

      面對海量數(shù)據(jù)的分析處理和高效顯示的要求,論文提出了采用Direct3D11的計算著色器在GPU內(nèi)實現(xiàn)測量數(shù)據(jù)的預(yù)處理、3D模型和渲染以及交互的可視化測量軟件的設(shè)計策略,不僅實現(xiàn)了高效,還減小了軟件執(zhí)行對CPU的占用。開發(fā)的儀器軟件實現(xiàn)了海量數(shù)據(jù)的高效分析處理、建模推送渲染以及交互,獲得了高速的數(shù)據(jù)流動視覺效果,實現(xiàn)了高效準(zhǔn)確的可視化測量結(jié)果。論文提出的方法充分挖掘了儀器硬件資源的能力,為面向海量測量信息的可視化測量儀器軟件設(shè)計探索了一條可行的技術(shù)路徑,對于降低可視化測量儀器成本具有重要現(xiàn)實意義。

      [1]姚 莉,高 瞻,肖 健,等.3D圖形編程基礎(chǔ)—基于Direct X 11[M].北京:清華大學(xué)出版社,2012.

      [2]姚 旺,胡 欣,劉 飛,等.基于GPU的高性能并行計算技術(shù)[J].計算機(jī)測量與控制,2014,12:4160-4162.

      [3]趙炳財.基于GPU技術(shù)的并行運算應(yīng)用研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2012.

      [4]丁 科,譚 營.GPU通用計算及其在計算智能領(lǐng)域的應(yīng)用[J].智能系統(tǒng)學(xué)報,2015,01:1-11.

      [5]何 濤,朱岱寅.大點數(shù)一維FFT的GPU設(shè)計實現(xiàn)[J].計算機(jī)工程與科學(xué),2013,11:34-41.

      [6]張嘉華,梁 成,李桂清.GPU三維圖元拾?。跩].工程圖學(xué)學(xué)報,2009,01:46-52.

      [7]付昕樂,王晏民,黃 明.基于GPU的點云拾取[J].測繪通報,2013,S1:54-57.

      [8]付昕樂.精細(xì)三維空間數(shù)據(jù)交互可視化研究[D].北京:北京建筑大學(xué),2014.

      [9]Frank D.Introduction to 3D game programming with direct X 11 [M].USA:Mercury Learning&Information,2012.

      [10]Akenine-Moller T,Haines E.Real-time rendering[M].2nded.Wellesley:A K Peters,2008.

      Design of Visual Measurement Instrument Software Based on GPU

      Yang Ying,Liu Wenwen,Wu Fanggui

      (School of Instrument Science and Opto-electronics Engineering,Hefei University of Technology,Hefei 230009,China)

      A strategy of designing the visual measurement instrument software,making use of the graphics card’s parallel processing abilities to decrease the overhead of processing massive data,modeling and rendering 3D graph as well as implementing interaction,is proposed in this paper.Based on Direct3D11’s Compute Shader,the instrument software is designed to rapidly achieve preprocessing mass measurement data,modeling 3D graph,pushing render implementing in GPU.And a software model is built to pick up a point on 3D model with mass vertexes implementing in GPU also,with which the interactive speed is increased sharply.The high implementing efficiency of the visual measurement instrument software is verified through experiments.The designing strategy provides a valuable technical path for making the best of hardware capabilities of the measurement instruments’hardware,reasonably balancing the overhead of CPU and GPU,and then improving the overall implementation efficiency of the instrument.

      instrument software;visualization measurement;parallel computation;Direct X 11

      1671-4598(2016)08-0150-04

      10.16526/j.cnki.11-4762/tp.2016.08.040

      :TP391.41

      :A

      2016-01-21;

      :2016-02-25。

      中央高?;究蒲袠I(yè)務(wù)費專項資金(2012HGBZ0629)。

      楊 瑛(1991-),女,安徽銅陵人,碩士研究生,主要從事儀器軟件設(shè)計方向的研究。

      猜你喜歡
      著色器海量頂點
      一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
      過非等腰銳角三角形頂點和垂心的圓的性質(zhì)及應(yīng)用(下)
      基于UE4 實時射線追蹤技術(shù)的研究與探討
      基于Unity Shader石油泄漏現(xiàn)象模擬的研究
      基于IMx6的opengl圖形著色器開發(fā)研究
      中國新通信(2020年2期)2020-06-24 03:06:44
      海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
      關(guān)于頂點染色的一個猜想
      一個圖形所蘊(yùn)含的“海量”巧題
      基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲與組織研究
      數(shù)學(xué)問答
      志丹县| 临泉县| 萝北县| 衡阳市| 宁远县| 潜山县| 闽清县| 泌阳县| 神木县| 开封县| 昭通市| 神木县| 高密市| 莱西市| 五莲县| 车致| 芜湖市| 南木林县| 永胜县| 桂东县| 错那县| 巴青县| 临夏县| 宿州市| 海安县| 曲麻莱县| 和静县| 镇江市| 霍山县| 贡嘎县| 鄢陵县| 许昌县| 保德县| 永年县| 垣曲县| 嘉义县| 大余县| 衡南县| 龙山县| 民和| 西林县|