曾升 謝鵬 張瑾
摘 要:近幾年計(jì)算機(jī)圖形學(xué)的發(fā)展使得三維表現(xiàn)技術(shù)得以形成,三維表現(xiàn)技術(shù)使我們能夠再現(xiàn)三維世界中的物體,能夠用三維形體來(lái)表示復(fù)雜的信息,可視化技術(shù)賦予人們一種仿真的、三維的并且具有實(shí)時(shí)交互的能力,但是將數(shù)據(jù)轉(zhuǎn)換為圖形的處理技術(shù)計(jì)算時(shí)間較長(zhǎng),而CUDA是一種由NVIDIA推出的通用并行計(jì)算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問(wèn)題,顯著提高計(jì)算速度,文章對(duì)CUDA和實(shí)現(xiàn)數(shù)據(jù)可視化做了探究。
【關(guān)鍵詞】CUDA OpenGL 可視化
可視化技術(shù)使人們可以在三維圖形世界中用以前不可想象的手段來(lái)獲取信息或發(fā)揮自己創(chuàng)造性的思維,人們對(duì)計(jì)算機(jī)可視化技術(shù)的研究已經(jīng)歷了一個(gè)很長(zhǎng)的歷程,而且形成了許多可視化工具,其中SGI公司推出的GL三維圖形庫(kù)表現(xiàn)突出,易于使用而且功能強(qiáng)大,OpenGL經(jīng)過(guò)20年的時(shí)間,作為一個(gè)久負(fù)盛名的跨平臺(tái)的計(jì)算機(jī)圖形應(yīng)用程序接口規(guī)范,它已被廣泛應(yīng)用于游戲、影視、軍事、地理、醫(yī)學(xué)、機(jī)械設(shè)計(jì),以及各類(lèi)科學(xué)數(shù)據(jù)可視化的領(lǐng)域,它幾乎支持所有主流操作系統(tǒng)平臺(tái),它應(yīng)當(dāng)是全球最為廣泛學(xué)習(xí)和使用的圖形開(kāi)發(fā)API接口,我們幾乎可以在全世界任何一臺(tái)計(jì)算機(jī)安裝的軟件中找到它的身影,但調(diào)用它開(kāi)發(fā)具有一定的難度。
科學(xué)計(jì)算可視化應(yīng)用廣泛,其中面繪制方法由傳統(tǒng)的計(jì)算機(jī)圖形學(xué)繪制曲面,體繪制方法是直接由三維數(shù)據(jù)生成屏幕上二維圖像的技術(shù),體繪制技術(shù)最大的優(yōu)點(diǎn)是可以探索物體的內(nèi)部結(jié)構(gòu),可以描述非常定形的物體,如肌肉,煙云等,而面繪制在這些方面比較弱。但它的缺點(diǎn)是數(shù)據(jù)存儲(chǔ)量大,計(jì)算時(shí)間較長(zhǎng),NVIDIA推出的通用并行計(jì)算架構(gòu)擺脫了復(fù)雜的圖形API,作為數(shù)據(jù)并行的軟硬件體系,CUDA編程模型能夠解決這種復(fù)雜的計(jì)算問(wèn)題。
本文的主要目的是探究如何進(jìn)行數(shù)據(jù)的可視化,為了解決運(yùn)算速度的問(wèn)題探討如何搭建并行計(jì)算平臺(tái),使用CUDA編程技術(shù)來(lái)提高運(yùn)算速度,并對(duì)三維數(shù)據(jù)可視化。
1 CUDA平臺(tái)
CUDA是一種由NVIDIA推出的通用并行計(jì)算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問(wèn)題。 它包含了CUDA指令集架構(gòu)以及GPU內(nèi)部的并行計(jì)算引擎。 開(kāi)發(fā)人員現(xiàn)在可以使用C語(yǔ)言來(lái)為CUDA架構(gòu)編寫(xiě)程序,所編寫(xiě)出的程序可以在支持CUDA的處理器上以超高性能運(yùn)行。鑒于建模時(shí)隨著網(wǎng)格數(shù)目的增加,會(huì)使計(jì)算量成冪函數(shù)的增長(zhǎng),影響畫(huà)面渲染的速度,又要有精度又要有速度,那么應(yīng)用先進(jìn)的并行計(jì)算架構(gòu)顯得尤為重要。
可以說(shuō)計(jì)算行業(yè)正在從只使用CPU的“中央處理”向CPU與GPU并用的“協(xié)同處理”發(fā)展。,英偉達(dá)發(fā)明了CUDA(Compute Unified Device Architecture,統(tǒng)一計(jì)算設(shè)備架構(gòu))這一編程模型,是想在應(yīng)用程序中充分利用CPU和GPU各自的優(yōu)點(diǎn)。通過(guò)CUDA,GPUs可以很方便地被用來(lái)進(jìn)行通用計(jì)算。在沒(méi)有CUDA之前,GPUs一般只用來(lái)進(jìn)行圖形渲染(如通過(guò)OpenGL,DirectX)。CUDA進(jìn)行了編程語(yǔ)言擴(kuò)展,CUDA C/C++可以看作一個(gè)新的編程語(yǔ)言,CUDA工作的的對(duì)象就是GPU及GPU上的內(nèi)存,且充分利用了GPU多核的優(yōu)勢(shì)及降低了并行編程的難度。一般通過(guò)C語(yǔ)言把數(shù)據(jù)從外界讀入,再分配數(shù)據(jù)給CUDA,以便在GPU上計(jì)算,然后再把計(jì)算結(jié)果返回給C語(yǔ)言,以便進(jìn)一步工作,如進(jìn)一步處理及顯示,或重復(fù)此過(guò)程。其中將CPU及系統(tǒng)的內(nèi)存稱(chēng)為主機(jī),將GPU及GPU本身的顯示內(nèi)存稱(chēng)為設(shè)備,其線程,線程塊,線程格的三層結(jié)構(gòu)適合于并行計(jì)算,線程一般通過(guò)GPU的一個(gè)核進(jìn)行處理,線程塊由多個(gè)線程組成,它是并行執(zhí)行的,之間無(wú)法通信,也沒(méi)有執(zhí)行順序,線程格是由多個(gè)線程塊組成,而在GPU上執(zhí)行的函數(shù)通常稱(chēng)為核函數(shù),一般通過(guò)標(biāo)識(shí)符__global__修飾,用于說(shuō)明內(nèi)核函數(shù)中的線程數(shù)量,以及線程是如何組織的,一般以線程格(Grid)的形式組織,每個(gè)線程格由若干個(gè)線程塊(block)組成,而每個(gè)線程塊又由若干個(gè)線程(thread)組成,在編程時(shí),必須先為kernel函數(shù)中用到的數(shù)組或變量分配好足夠的空間,再調(diào)用kernel函數(shù)進(jìn)行工作。這樣的一種硬件平臺(tái),加上CUDA編程模型已經(jīng)取得了很多的的成果,它的搭建為數(shù)據(jù)可視化奠定了基礎(chǔ)。
2 三維數(shù)據(jù)可視化
2.1 CUDA和OpenGL互操作
OpenGL 是圖形硬件的軟件接口,它不是一種編程語(yǔ)言,而是一種 API (應(yīng)用程序編程接口),程序員通過(guò)調(diào)用OpenGL 庫(kù)函數(shù)進(jìn)行圖形編程。通過(guò)CUDA,CPU承擔(dān)的計(jì)算任務(wù)可以更多地移交給 GPU完成,,顯示任務(wù)完全依靠GPU完成,CPU只負(fù)責(zé)傳遞數(shù)據(jù)到GPU既提高了整個(gè)過(guò)程的計(jì)算速度,也最大程度地發(fā)揮了GPU的功效,結(jié)合GPU并行處理能力和GPU 圖像顯示技術(shù)能很好的解決復(fù)雜數(shù)據(jù)的可視化問(wèn)題。
2.2 體繪制方法
體繪制技術(shù)是科學(xué)計(jì)算可視化的重要組成部分,常用的算法有光線投射法,足跡表法等。光線投射法是按視線方向發(fā)射一條射線,沿著射線選取采樣點(diǎn),并由采樣點(diǎn)最近8個(gè)數(shù)據(jù)點(diǎn)的顏色值和透明度作線性插值,經(jīng)合成后得到圖像。足跡表法,是反復(fù)對(duì)體素的投影疊加效果進(jìn)行運(yùn)算。它們的計(jì)算量都相當(dāng)大,其中光線投射法可以把整個(gè)屏幕作為一個(gè)Grid,每個(gè)區(qū)域看成Block,每個(gè)像素作為一個(gè)Thread,充分利用CUDA編程模型,把這種體繪制算法并行化,從而改善計(jì)算量大的問(wèn)題。
3 結(jié)語(yǔ)
綜上所述,隨著信息技術(shù)的高速發(fā)展,CUDA軟硬件平臺(tái)的出現(xiàn),數(shù)據(jù)可視化這種計(jì)算量大的技術(shù),可以通過(guò)配合使用CUDA及圖形硬件的軟件接口OpenGL,并把可視化算法并行化,可以得到很好的改善這種復(fù)雜計(jì)算的問(wèn)題。
參考文獻(xiàn)
[1]李弛新,蘭聰花.基于CUDA和OpenGL互操作的彩色圖像Sobel邊緣檢測(cè)[J].計(jì)算機(jī)科學(xué),2015(06):221-230.
[2]尹學(xué)松,張謙,吳國(guó)華,潘志庚.四種體繪制算法的分析與評(píng)價(jià)[J].計(jì)算機(jī)工程與應(yīng)用,2004(16):97-100.
[3]張俊竹.虛擬現(xiàn)實(shí)技術(shù)在數(shù)字展示設(shè)計(jì)中的應(yīng)用研究[J].設(shè)計(jì),2016(03):111-113.
作者單位
銀川能源學(xué)院 寧夏省銀川市 750105