說起GPU相信大家對它一定都不陌生,GPU就是圖形處理器(Graphics Processing Unit)的簡稱,它是每台電腦上都配有的顯卡處理器。

但是,除了為大家所熟知的圖形渲染功能外,GPU還有什麼其他的用途嗎?作為nanoFluidX的一大亮點,我們所說的GPU計算又是一個什麼概念呢?

這期內容,我們就來聊一聊nanoFluidX背後的故事~

 

 

 

 

什麼是GPU計算?

 
 
 

 GPU 加速計算是指同時利用GPUCPU,加快科學、分析、工程、消費和企業應用程式的運行速度。GPU加速器於 2007 年由 NVIDIA® 率先推出,現已在世界各地為政府實驗室、高校、公司以及中小型企業的高能效資料中心提供支援。GPU能夠使從汽車、手機和平板電腦到無人機和機器人等平臺的應用程式加速運行。

GPU 如何加快軟體應用程式的運行速度?GPU 加速計算可以提供非凡的應用程式性能,能將應用程式計算密集部分的工作負載轉移到 GPU,同時仍由 CPU 運行其餘程式碼。從使用者的角度來看,應用程式的運行速度明顯加快。

理解GPUCPU之間區別的一種簡單方式是比較它們如何處理任務。CPU由專為順序連續處理而優化的幾個核心組成,而 GPU 則擁有一個由數以千計的更小、更高效的核心(專為同時處理多重任務而設計)組成的大規模平行計算架構           

 

圖1:Nvidia Tesla系列GPU

 

 

GPU vs CPU,哪個更厲害?

 
 
 

讓我們回到nanoFluidX,通過下面的資料來體會一下在GPUCPU在粒子法計算應用中的性能差異。我們將一個典型的變速箱模型,分別採用傳統的有限體積法求解器、基於CPUSPH求解器、基於GPUSPH求解器(即nFx)這三種求解策略,得到了如下統計:

1)有限體積法求解器,硬體設定為8CPU,完成計算需要100小時,絕對花費為800核時,電力消耗10.5千瓦時;

2)基於CPUSPH求解器,硬體設定為24CPU,完成計算需要30小時,絕對花費為720核時,電力消耗11.4千瓦時;

3)基於GPUSPH求解器: 硬體設定為1GPU,完成計算需要7.5小時,絕對花費為7.5GPU時,電力消耗1.8千瓦時。

作為使用者,我們最關心的莫過於Wall time這項指標了,究竟什麼是Wall time呢?說得通俗點,就是時鐘顯示的時間,也可以直觀地理解為我們完成一次計算真正花費的時間。從這個角度來看,基於這個測試模型,採用GPU計算的nFx只需要一個晚上的時間就能得到結果,而採用CPU的粒子法求解器要花費一天以上,更不用說傳統有限體積法求解器需要四天以上了。

電力消耗是另外一個很實際的考量指標,我們不難發現,作為基於GPU計算的粒子法求解器,nFx的表現又是最突出的。其實很容易理解,電力消耗和Wall time是成正比的,在單位耗電量比較相似的情況下,計算越快結束,耗電量就越低。

 

圖2:基於相同算例的計算性能對比

 

 
 

為什麼SPH演算法適合用GPU計算?

 
 

 上述簡單的對比讓我們比較直觀地體會到了,GPU的計算性能卓越,成本效用最高。究竟是什麼關鍵因素,形成了這樣明顯的差異呢?我們來探討一下GPU的程式設計模型吧。

GPU可以被看作為一種高度並行化、多執行緒、多核的處理器,具有超大的計算輸送量和極高的記憶體頻寬。相比CPUGPU會劃分出更多的執行單元,等同於執行相當多數量的執行緒,這就是GPU擁有強大的平行計算能力的奧秘所在。一句話總結,由於其高度並行化的電腦制,GPU是專為密集型的計算而設計的。

那麼,是不是所有的平行計算都適合用GPU來執行呢?這裡要區分兩個並行的概念:基於資料的並行和基於任務的並行。GPU的加速優勢主要體現在基於資料的並行。比較常見的例子,渲染圖像的後期處理、視頻編碼和解碼、立體視覺和模式識別等都屬於資料並行模式的範疇,因此GPU在這些領域往往能取得不錯的加速比。回到科學計算領域,以粒子法為例,其計算是由一系列的流體粒子的相互作用來完成的,在計算中每個粒子所執行的計算是完全相同的;這種在不同的資料上執行相同的程式,是最合適GPU的計算問題。

 

 

 

 
 

SPH的計算流程是怎樣的?

 
 

首先,用前處理把計算域離散成粒子,然後求解器讀入粒子的初始化資訊及相應的設置以對求解器進行初始化,接著再把初始化的資料複製到GPU上開始求解。整個求解過程又可分為三大步驟:

▶  鄰居粒子的搜尋與更新

▶  粒子間相互作用的計算

▶  系統資訊(位移,速度等)的更新

這三個步驟,是SPH演算法的三大核心,也同時是GPU執行時間的三大重要組成部分。一些專業論文中的研究表明:使用GPU並行時,粒子間相互作用的計算用時百分比是三者中最高的,相較而言,搜尋鄰居粒子和系統更新的計算效率要高很多;隨著並形程度的增大,粒子間相互作用計算在總時間中的比例逐漸減少,而整體的計算效率會不斷提高。這種加速的有效性說明了SPH演算法是可以有效分解為資料流程並行問題,從而通過GPU並行得到顯著加速的。

 
arrow
arrow

    Altair Taiwan 發表在 痞客邦 留言(0) 人氣()