王宇新 張馳 狄少丞 季順迎 霍運理 郭禾
摘要:針對基于離散元方法的海冰與海洋平臺結(jié)構(gòu)碰撞分析系統(tǒng),對運行于CPUGPU異構(gòu)高性能計算平臺上的大規(guī)模粒子模擬進行可視化方法的研究.使用OpenGL完成不同規(guī)模的平整冰、浮冰、冰脊和不規(guī)則形態(tài)海冰的呈現(xiàn),不同形狀海洋平臺結(jié)構(gòu)與受力網(wǎng)格的繪制,海冰粒子的運動軌跡與速度的表達,海浪效果的模擬以及碰撞過程的動畫演示等.通過定義合理的交互模式與接口,在一定程度上融合GPU加速的離散元計算與后處理顯示,基于多進程管道通信、多線程并行輸出等實現(xiàn)在GPU加速計算的同時實時顯示粒子模擬計算結(jié)果.該方法在幫助研究者隨時掌握程序執(zhí)行狀況的同時,大幅減少后續(xù)傳輸、處理和存儲的數(shù)據(jù).
關(guān)鍵詞:海冰; 海洋平臺; 碰撞分析; 后處理; 離散元方法; 大規(guī)模粒子; 可視化
中圖分類號: TB122, TP319 文獻標(biāo)志碼:B
Abstract:The visualization method about massive particles simulation running on CPUGPU heterogeneous highperformance computing platform is studied, which is applied in an analysis system for the collision between sea ice and offshore platform based on discrete element method. By OpenGL, the different sizes of level ice, floating ice, ice ridge and ice of irregular forms can be presented; the different shapes of offshore platform structure and force mesh can be drawn; the movement path and speed of sea ice particles can be expressed; the motion of ocean waves can be simulated; the animation of collision process can be demonstrated, etc. By defining reasonable interaction patterns and interface, the discrete element calculation accelerated by GPU and the postprocessing display are merged in a certain extent. Based on multiprocess pipe communication, multithread parallel output, and so on, the realtime display of particle simulation results is implemented while GPU is calculating. By the method, the researchers can realize program execution status at any time and the subsequent transmission, processing and storage of data can be significantly reduced.
Key words:sea ice; offshore platform; collision analysis; postprocessing; discrete element method; massive particles; visualization
0 引 言
離散元方法是一種計算和分析大量顆粒在給定條件下的運動規(guī)律的數(shù)值計算方法,在工程應(yīng)用中廣泛使用,尤其在對滑坡、雪崩、泥石流和海冰等各類自然界現(xiàn)象的模擬中占據(jù)重要位置.[1]離散元計算規(guī)模往往很大,一般需要高性能計算平臺的支持,同時會產(chǎn)生大規(guī)??茖W(xué)數(shù)據(jù)集.科學(xué)可視化可以通過一系列復(fù)雜的算法將數(shù)據(jù)高精度、高分辨率地繪制出來,或者將先進的科學(xué)實驗過程模擬呈現(xiàn),幫助研究人員從這些龐大復(fù)雜的數(shù)據(jù)中快速、有效地獲得有用的信息或直觀的判斷.[2]例如,顆粒可視化程序VMD使用OpenGL能夠繪制70×106~300×106個高質(zhì)量的三維分子顆粒.[3]TU等[4]在模擬地震過程中的地表運動時,通過計算程序和可視化程序的緊密耦合實現(xiàn)并行可視化.KRGER等[5]開發(fā)的粒子系統(tǒng)可以將三維流交互可視化.方曉健等[6]針對運行在CPU與GPU混合架構(gòu)的HPC系統(tǒng)上的并行粒子模擬進行在線可視化研究,通過GPU加速的粒子模擬與并行可視化的緊密耦合,實現(xiàn)并行粒子模擬運行過程中的在線可視化.
本文針對海冰與海洋平臺結(jié)構(gòu)碰撞分析系統(tǒng),對運行于單計算節(jié)點上的CPUGPU異構(gòu)高性能計算平臺上的大規(guī)模粒子模擬進行可視化方法研究.
1 海冰與海洋平臺碰撞過程可視化
海冰能夠?qū)Ω劭谠O(shè)施、海上交通運輸和生產(chǎn)作業(yè)構(gòu)成嚴重威脅,其危害主要來自于結(jié)冰時的附著和破冰時的撞擊.以海上石油平臺為例:在結(jié)冰時,海冰會附著在平臺的樁腿上,導(dǎo)致平臺受潮汐沖擊的受力面增大,增加危險性;在破冰時,浮冰隨海浪撞擊平臺(見圖1),如果與平臺自身的搖動形成共振,則很可能形成顛覆.[7]
在海冰與海洋平臺結(jié)構(gòu)碰撞分析系統(tǒng)中,通過大規(guī)模粒子模擬海冰,對每個粒子與海洋平臺結(jié)構(gòu)的碰撞過程進行力學(xué)分析獲得運動軌跡并形象地顯示出來,讓研究人員直觀地掌握海冰的運動情況,實時觀測粒子模擬中發(fā)生的現(xiàn)象,對計算過程進行追蹤和調(diào)整.在此過程中,海冰、海洋平臺結(jié)構(gòu)、海浪、粒子運動軌跡與碰撞過程的可視化至關(guān)重要.
1.1 海冰的模擬顯示
海冰主要有平整冰、浮冰和冰脊等結(jié)構(gòu).基于離散元方法,海冰的不同結(jié)構(gòu)可以通過若干個球形粒子作為基本單元排列而成.
平整冰是一塊大小可設(shè)置的長方體冰塊,用若干個排列緊密的粒子表達.平整冰可通過給定的參數(shù)生成每個粒子的坐標(biāo)信息生成.參數(shù)包括冰塊的長、寬、高,水的深度,冰塊最右側(cè)中心點距離原點的橫縱距離,粒子的直徑等.平整冰高度定義為冰的層數(shù),即在平面某一點的垂直方向上粒子的個數(shù).在生成粒子坐標(biāo)時按照從下到上、從近到遠、從右到左的順序依次計算每個粒子的空間坐標(biāo).
浮冰表現(xiàn)為不同密度散列的冰塊,可用若干個單元的集合來表達,組成單元的形狀可以為長方體、圓柱體和不規(guī)則的多邊形柱體.浮冰的密集度即圖形單元的密集程序,在視覺上表現(xiàn)為各個單元之間的距離遠近.當(dāng)單元形狀為長方體和圓柱體時,浮冰的生成規(guī)則類似,以圓柱體為例(見圖2a),首先根據(jù)平整冰生成規(guī)則得到組成冰塊的所有粒子信息,然后根據(jù)密集度和冰塊的長、寬生成平面坐標(biāo)上每個圓柱體上下表面的圓心坐標(biāo).計算各幾何中心與各粒子之間的距離,若小于給定的值,則保留并顯示該粒子.
浮冰并不總是呈現(xiàn)規(guī)則形態(tài),可以在給定區(qū)域內(nèi)繪制多邊形柱體的集合來表示不規(guī)則海冰.每個多邊形柱體的俯視圖都為凸多邊形,各柱體之間根據(jù)預(yù)先設(shè)定的密度因數(shù)產(chǎn)生一定的間隔.生成規(guī)則采用Voronoi圖的思想,由一組連接兩鄰點直線的垂直平分線組成的連續(xù)多邊形組成.在海冰模擬實際應(yīng)用時:首先在指定區(qū)域隨機生成若干粒子坐標(biāo),然后分別將其按照Voronoi圖的性質(zhì)劃分為若干區(qū)域集合,從而得到各區(qū)域的頂點坐標(biāo);再根據(jù)預(yù)先設(shè)定的密度因數(shù)縮放各區(qū)域的頂點坐標(biāo),可以得到不規(guī)則柱體的坐標(biāo)集合.在實際繪制時,每個不規(guī)則柱體用若干個三棱柱拼接而成.構(gòu)建一個圖元函數(shù),用來繪制最基本的三棱柱.在繪制時,根據(jù)已有的多邊形的頂點坐標(biāo)拆分成若干個三角形坐標(biāo),分別調(diào)用繪制三棱柱圖元的函數(shù),得到不規(guī)則柱體的集合,效果見圖2b.
冰脊是冰在外力作用下形成的一排山脊?fàn)畋?,在模擬時用不同厚度的長方體與四棱臺拼接而成,見圖3a.其中,四棱臺的模擬相對復(fù)雜,采用拼湊平整冰的方法實現(xiàn),即將四棱臺用若干個長度相等、寬度漸變的平整冰一層層堆疊而成.因此,在定義四棱臺下底面的寬度后,根據(jù)所給的底面與側(cè)面的夾角,計算上一層平整冰的寬度,以此類推,直到達到所定義的棱臺的高度.
當(dāng)海冰的尺寸較大時,模擬海冰所需的粒子數(shù)量增多,計算機在顯示時要花費大量的時間完成粒子球體到顯示像素的轉(zhuǎn)換,造成顯示的遲鈍,不利于觀察,尤其是在轉(zhuǎn)換角度、平移、縮放視圖時需要對整個視圖進行重繪,圖像延遲現(xiàn)象尤為明顯.考慮到在海冰尺寸較大時對局部細節(jié)的觀察需求較為次要,采用直接繪制幾何圖形的方法模擬海冰.設(shè)定一個閾值,當(dāng)表達結(jié)構(gòu)所需的粒子個數(shù)超過這個閾值時則不再使用粒子拼接圖形,而采用直接繪制幾何圖形的方式.平整冰用一個大的長方體表示;方形排列浮冰用若干個小長方體表示,圓形排列浮冰用若干個小圓柱表示;冰脊分為上中下3部分,上下部分用幾何面圍成封閉的臺狀圖形,中間部分繪制成長方體,見圖3b.
1.2 海洋平臺結(jié)構(gòu)的模擬顯示
在對海洋平臺結(jié)構(gòu)模擬時,因為海冰與海洋平臺的碰撞點在平臺結(jié)構(gòu)的樁腿上,所以主要考慮對樁腿的模擬.海洋平臺結(jié)構(gòu)樁腿可分為2種結(jié)構(gòu):圓柱體和圓錐組合體.圓柱體結(jié)構(gòu)表現(xiàn)為一個單一的幾何體,見圖4a,可以定義半徑、高度等物理屬性和位置屬性.OpenGL沒有直接繪制圓柱體的方法,所以通過繪制2個圓盤和1個曲面來構(gòu)成一個圓柱體.圓錐組合體結(jié)構(gòu)見圖4b,表達為圓柱體和圓臺的組合體,整個結(jié)構(gòu)體通過繪制2個圓盤即上下圓柱體面和4個曲面組成.
在海冰粒子與平臺結(jié)構(gòu)發(fā)生碰撞時,希望能夠觀測到海冰粒子相對于結(jié)構(gòu)的位移情況,需要在其上繪制一些局部力網(wǎng)格,包括垂直方向的直線和水平方向的曲線.在實際繪制時不能在面上直接繪制直線或曲線,而是在結(jié)構(gòu)半徑基礎(chǔ)上向外延伸一定距離繪制一個有一定寬度的線條,這樣不會產(chǎn)生覆蓋.
1.3 碰撞過程的效果和動畫視頻
粒子是模擬海冰的基本元素,粒子的屬性需要參與之后的GPU計算,因此需要將前處理中對粒子物理屬性的要求寫入固定接口格式的文件后由GPU程序讀取.每次當(dāng)粒子屬性發(fā)生變化時只需在前處理程序中做出相應(yīng)修改,這對于GPU計算程序是透明的.在GPU計算程序計算粒子的運動軌跡時,粒子的速度十分重要,與粒子坐標(biāo)一起保存.顯示程序在顯示粒子軌跡時同時獲取粒子的速度,按照定義可根據(jù)速度不同顯示出不同顏色(見圖5a)有利于更準(zhǔn)確地表達海冰在運動過程中各個區(qū)域的受力和速度情況.海冰是在海浪的作用下運動的,海浪是海冰模擬中的重要組成部分,雖然不參與計算,但卻能更好地對海冰的運動進行顯示.海浪在視覺上表現(xiàn)為一個不斷起伏的曲面,在用計算機模擬波浪效果時,將海浪劃分為若干個由1個水平方向的長方形和2個垂直方向的長方形組成的小單元,每個單元屬性包括波高、水面寬度、單位寬度等.若干個單元緊密排列在一起,相鄰單元之間通過一定的高度差實現(xiàn)曲面的模擬.每個單元組的高度根據(jù)時間的推移不斷變化實現(xiàn)波浪的效果,見圖5b.在連續(xù)不斷地對數(shù)據(jù)讀入并可視化時,可以觀察到較為流暢的動畫效果.在顯示程序運行的過程中,可以通過連續(xù)不斷地對顯示界面進行固定間隔的截圖,將圖片連續(xù)保存后處理成視頻文件,方便研究人員的再觀察,見圖5c.
2 計算過程中的實時顯示和優(yōu)化
傳統(tǒng)的離散元模擬程序一般由主計算程序在粒子模擬計算后輸出每一步粒子的坐標(biāo)和速度等信息并寫入文件中,然后由后處理顯示程序讀取粒子信息文件,并顯示粒子的運動軌跡.[8]這種做法的問題在于必須等到計算程序完成所有粒子所有步數(shù)的計算之后才能讀取計算結(jié)果,觀察到粒子的運動軌跡.我們的目標(biāo)是在GPU計算的同時在屏幕上繪制出當(dāng)前粒子的位置信息,實時顯示已計算出的粒子的運動軌跡.這樣邊計算邊顯示可以實時掌握計算程序的執(zhí)行狀況,以便在出現(xiàn)問題時隨時做出相應(yīng)改變,而不必等到整個程序的結(jié)束,以節(jié)約時間和資源.根據(jù)GPU卡的工作方式,實現(xiàn)GPU計算程序與顯示程序的實時交互方法有利用共享數(shù)據(jù)緩沖區(qū)和利用命名管道2種.
2.1 利用共享數(shù)據(jù)緩沖區(qū)實現(xiàn)
當(dāng)GPU計算程序和基于OpenGL的顯示程序都是由GPU執(zhí)行時,OpenGl的緩沖區(qū)可以映射到GPU計算程序的地址空間,被當(dāng)做全局緩存訪問,因此可以采用共享數(shù)據(jù)緩沖區(qū)的方式使2個程序進行實時交互,以減少數(shù)據(jù)的傳輸.[9]
數(shù)據(jù)緩沖區(qū)有像素緩沖區(qū)(Pixel Buffer Object, PBO)和頂點緩沖區(qū)(Vertex Buffer Ojbect, VBO)2種.前者存儲的是像素數(shù)據(jù),后者存儲的是頂點數(shù)據(jù).[10]VBO可以存儲頂點坐標(biāo)、索引數(shù)據(jù)、頂點法線和頂點顏色等數(shù)據(jù),適用于多面體結(jié)構(gòu)的離散元顆粒,如大尺寸海冰的繪制等.VBO使用的完整過程如下.
1)創(chuàng)建并激活VBO緩沖區(qū),將緩沖區(qū)句柄綁定到緩沖區(qū)對象,并申請存儲空間來存儲數(shù)據(jù).本系統(tǒng)中的大尺寸海冰由多個三角形面拼接而成,會有多個頂點重復(fù)使用的情況,為節(jié)省存儲空間和優(yōu)化顯示程序,需要頂點坐標(biāo)數(shù)組和索引數(shù)據(jù)數(shù)組這2塊緩沖區(qū)
2)注冊2塊VBO緩沖區(qū)到CUDA,并將其映射到CUDA的地址空間,這樣CUDA計算程序才能訪問VBO緩沖區(qū).GPU計算程序執(zhí)行CUDA核函數(shù)時計算出需要顯示的頂點數(shù)據(jù)和索引數(shù)據(jù),將數(shù)據(jù)寫入到VBO中后解除CUDA對VBO的映射.
3)顯示程序可以訪問VBO頂點數(shù)據(jù)進行OpenGL渲染繪制.繪制首先要指定相對于緩沖區(qū)起始位置的偏移量,對諸如glVertexPointer()這樣的頂點數(shù)組函數(shù)進行初始化;然后啟用頂點數(shù)組;最后根據(jù)索引數(shù)據(jù)數(shù)組中給出的索引,查找到相應(yīng)的頂點進行繪制.
使用VBO能夠優(yōu)化計算和顯示程序的交互過程,提高實時顯示效率.
2.2 利用命名管道實現(xiàn)
隨著GPU計算成為大規(guī)模科學(xué)計算的主流方式,很多專用于計算而不能顯示(沒有顯示器接口)的GPU卡出現(xiàn),如目前常見的NVIDIA Tesla K40 GPU卡,因此利用共享的GPU數(shù)據(jù)緩沖區(qū)進行實時顯示不可行.同時,由于CPU上多進程間無法進行大數(shù)據(jù)量的內(nèi)存數(shù)據(jù)交互,因此將設(shè)計目標(biāo)調(diào)整為在GPU計算程序完成一定步數(shù)的計算后通知顯示程序讀取已有的硬盤文件數(shù)據(jù),即采用命名管道實現(xiàn)GPU計算程序與顯示程序的通信.
命名管道是一種經(jīng)典的進程間通信機制,可以在同一臺計算機的不同進程之間或在跨越一個網(wǎng)絡(luò)的不同計算機的不同進程之間進行可靠的、單向或雙向的數(shù)據(jù)通信.[11]本文系統(tǒng)中采用命名管道實現(xiàn)計算進程和顯示進程的交互,在顯示進程中創(chuàng)建命名管道服務(wù)器端,在計算進程中創(chuàng)建命名管道客戶端,連接到服務(wù)器端進行交互通信.GPU端計算程序完成每一步的計算并由CPU端將當(dāng)前的粒子信息輸出后,通過命名管道通知顯示進程有新數(shù)據(jù)到達,顯示進程接收到通知后到指定位置讀取粒子信息并顯示.具體交互模式見圖6.
2.3 CPU端多線程并行輸出數(shù)據(jù)文件
離散元模擬計算的規(guī)模往往很大,每一步都要計算幾十萬甚至上百萬的粒子,即使計算能力很卓越的GPU也需要一段時間才能完成一步的計算,而這期間CPU端是空閑的,因此可以利用這段時間讓CPU寫文件輸出上一步粒子計算的結(jié)果,與GPU端的大規(guī)模計算并行執(zhí)行.具體實現(xiàn)過程為:GPU端程序完成一步計算后,將數(shù)據(jù)通過PCIE接口傳回CPU端主線程,后者使用CreateThread創(chuàng)建專用的輸出線程,并以獲得的記錄粒子信息的數(shù)組為參數(shù)調(diào)用輸出線程函數(shù),然后立即返回控制GPU下一步的計算.在此過程中CPU端創(chuàng)建的輸出線程寫入硬盤文件輸出粒子信息與GPU端計算下一步的粒子信息并行進行.
實驗在CPU Intel Core i7 Extreme 990X,GPU NVIDA Tesla C2050,12GB DDR3內(nèi)存的硬件環(huán)境下進行,分別實現(xiàn)17萬、40萬、70萬和130萬粒子計算5 000和10 000步的運行效果,時間對比見圖7.
從實驗結(jié)果中可以看出,GPU計算結(jié)合CPU并行輸出可以節(jié)約大約25%~30%的時間,顯著提高程序的運行效率.在計算程序CPU端寫入大規(guī)模數(shù)據(jù)到硬盤、顯示程序讀取硬盤大規(guī)模數(shù)據(jù)進行顯示的過程中,很大一部分時間消耗在硬盤I/O上,由于硬盤的讀寫速度比內(nèi)存讀寫慢很多,因此可以使用RAMDISK技術(shù)將一部分內(nèi)存劃分出來虛擬為硬盤,用來保存大
規(guī)模數(shù)據(jù).通過這種方式,可以明顯提高實時顯示圖像的流暢度.采用固態(tài)硬盤也有同樣的效果.
3 碰撞分析系統(tǒng)的實現(xiàn)
海冰與海洋平臺結(jié)構(gòu)碰撞分析系統(tǒng)采用Visio Studio 2010開發(fā)平臺,VC++語言,OpenGL編程接口庫和NVIDIA CUDA 5.0編程平臺等開發(fā)實現(xiàn).軟件劃分為前處理、計算和后處理3個基本模塊,界面見圖8.
前處理模塊中的預(yù)覽功能,可以在GPU計算程序開始前觀察給定參數(shù)的海冰結(jié)構(gòu)和碰撞障礙物結(jié)構(gòu)以及兩者之間的方位信息,為進一步的科學(xué)計算提供相對準(zhǔn)確的位置判斷和事實依據(jù),以更高效地完成海冰運動軌跡的計算,避免無效計算導(dǎo)致資源浪費.前處理模塊分為3個子模塊:在海冰屬性定義子模塊中,完成對海冰塊體的定義,包括海冰的結(jié)構(gòu),冰塊的尺寸、層數(shù)、溫度、鹽度和初始速度等物理屬性,冰塊的邊界屬性,以及海水的密度、深度等;在海洋平臺結(jié)構(gòu)屬性定義模塊完成結(jié)構(gòu)的屬性定義,包括結(jié)構(gòu)體的形狀、個數(shù)以及與海冰的相對位置等;
后處理顯示程序與計算程序有一定程度的融合,通過合理的交互模式與接口,在計算的同時實時地呈現(xiàn)出GPU加速的粒子模擬計算結(jié)果.同時,后處理模塊還能夠呈現(xiàn)平臺結(jié)構(gòu)在與海冰發(fā)生碰撞時的受力情況,包括橫向、縱向和垂直3個方向的力隨著時間推移的變化情況,見圖9.
4 結(jié)束語
本文介紹一套海冰碰撞模擬可視化系統(tǒng)的設(shè)計思想與實現(xiàn)技術(shù).在對各種參數(shù)進行預(yù)先定義,并利用離散元模擬海冰的運動軌跡及與海洋平臺結(jié)構(gòu)的碰撞過程進行GPU高性能計算的基礎(chǔ)上,使用OpenGL編程接口和各種加速優(yōu)化技術(shù)對整個過程進行模擬實時顯示,使得對海冰的建模過程更加方便、直觀,模型參數(shù)更加精確,保證計算過程的準(zhǔn)確性和合理性,提高研究人員的工作效率,改善用戶體驗.
參考文獻:
[1]季順迎, 岳前進. 工程海冰數(shù)值模型及應(yīng)用[M]. 北京: 北京科學(xué)出版社, 2011: 12.
[2]俞宏峰. 大規(guī)??茖W(xué)數(shù)據(jù)可視化[J]. 中國計算機學(xué)會通訊, 2012, 8(9): 2936.
YU Hongfeng. Visualization of large scale scientific data[J]. Communication of the CCCF, 2012, 8(9): 2936.
[3]ROBERTS E, STONE J E, LUTHEYSCHULTEN Z. Lattice microbes: Highperformance stochastic simulation method for the reactiondiffusion master equation[J]. Computational Chemistry, 2013, 34(3): 245255
[4]TU T, YU H, RAMIREZGUZMAN L, et al. From mesh generation to scientific visualization: an endtoend approach to parallel supercomputing[EB/OL]. (20150301)[20061231]. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.650.9262.
[5]KRGER J, KIPFER P, KONCLRATIEVA P, et al. A particle system for interactive visualization of 3D flows[J]. IEEE Transactions on Visualization and Computer Graphics, 2005, 11(6): 744756.
[6]方曉健, 徐驥, 戚華彪, 等. GPU 加速的并行粒子模擬在線可視化[J]. 計算機與應(yīng)用化學(xué), 2011, 28(10): 12341239.
FANG Xiaojian, XU Ji, QI Huabiao, et al. Insitu visualization for GPUaccelerated parallel particle simulation[J]. Computers and Applied Chemistry, 2011, 28(10): 12341239.
[7]狄少丞, 季順迎. 海冰與自升式海洋平臺相互作用GPU 離散元模擬[J]. 力學(xué)學(xué)報, 2014, 46(4): 561571. .
DI Shaocheng, JI Shunying. GPUBased discrete element simulation of interaction between sea ice and jackup platform structure[J]. Chinese Journal of Theoretical and Applied Mechanics, 2014, 46(4): 561571.
[8]鄭文剛, 劉凱欣. 離散元法工程計算軟件的前后處理系統(tǒng)[J]. 計算機工程與科學(xué), 2000, 22(6): 1416.
ZHENG Wengang, LIU Kaixin. A preprocessing and postprocessing system for an engineering computation software of discrete element method[J]. Computer Engineering & Science, 2000, 22(6): 1416.
[9]DEMIR V, ELSHERBENI A Z. Utilization of CUDAOpenGL interoperability to display electromagnetic fields calculated by FDTD[EB/OL]. (20150301)[20111013]. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6047338.
[10]劉進鋒, 郭雷. CUDA和OpenGL互操作的實現(xiàn)及分析[J]. 微型機與應(yīng)用, 2011(23): 4042.
LIU Jinfeng, GUO Lei. Realization and analysis of CUDA and OpenGL interoperation[J]. Micro computer & its Applications, 2011(23): 4042.
[11]JONES A, OHLUND J. Windows網(wǎng)絡(luò)編程技術(shù)[M]. 京京工作室, 譯. 北京: 機械工業(yè)出版社, 2000: 66.
(編輯 武曉英)