Tesla

何謂GPU運算?

 
 

GPU運算或GPGPU即是利用GPU(繪圖處理器)執行通用的科學及工程運算。

GPU運算的模式是在異質協同處理運算模型中,將CPU和GPU結合在一起運用。應用程式中序列式的部分保留在CPU上運作,而大量運算的部分則交由多核心的GPU加速。從使用者的角度而言,他們看到只是應用程式跑得比較快了,而這是由於利用了GPU的多核心而大幅提昇效能所致。
Heterogeneous Computing

經過多年的進化,GPU現在的浮點運算能力已達到兆級水準。在2006至2007年間,NVIDIA推出稱為「CUDA」的全新龐大平行運算架構,為GPGPU帶來革命並加速了運算領域的發展。CUDA架構中包含數百個處理器核心,這些核心可共同運作以提升應用程式中龐大數據集的處理效率。

GPGPU在過去數年間的成功讓相關CUDA平行程式模型的程式設計工作容易許多。在此程式設計模型中,應用程式開發人員可修改他們的程式將負責大量計算的程式核心映射至GPU,而其餘的部份則仍是交由CPU處理。為將程式中某一函數映射至GPU,開發人員需重新撰寫此段程式,將平行機制運用在此函數上,並增加「C語言」關鍵字,如此才能與GPU交換數據。開發人員必需同步啟用好幾萬個工作緒,而GPU可以管理這些工作緒並針對這些工作緒進行排程。

Tesla 20-系列GPU採用「Fermi」架構,其為最新的CUDA架構。Fermi為針對科學應用程式進行最佳化,具有許多重要功能,例如高達500 gigaflops以上的IEEE標準雙精度浮點運算硬體支援、L1和L2快取記憶體、ECC記憶體錯誤保護機制、本地端使用者管理數據高速緩衝記憶體---分佈於整個GPU的共享記憶體中,以及整合記憶體存取等。

"繪圖處理器經過不斷的發展,已能輕易地執行許多實際應用,且其運作速度較多核心系統加快許多。
未來的運算架構將是複合式系統,由平行核心和多核心中央處理器共同運作。"

Prof. Jack Dongarra
創新運算實驗室主任
田納西大學

GPU運算的歷史
繪圖晶片最初是被做為固定功能繪圖管線。隨著時間進展,這些繪圖晶片的可程式化程度日益增加,讓NVIDIA得以推出全球第一顆GPU,或稱為繪圖處理器。在1999至2000年間,特別是電腦科學家,以及在醫療成像和電磁學等領域中的研究者開始採用GPU去運作一般的運算應用程式。他們發現GPU優異的浮點運算效能讓許多科學應用的效能大幅提昇,而這也帶動了科學界廣泛使用所謂的GPGPU;以GPU進行一般運算蔚為風潮。

NVIDIA深知讓廣大科學界使用GPU的高效能大有可為,因此決定投入資源修改GPU,使其能完全的程式化,以利科學領域的應用,並增加對於高階語言,例如C, C++ 和Fortran的支援。這些努力造就了GPU的CUDA架構

CUDA平行架構及程式化模型
CUDA平行硬體架構搭配有CUDA平行程式模型,其提供一抽象指令集,能夠表達精細等級不同的數據,以及平行任務。程式設計者可選擇以高階語言,例如C, C++, Fortran或是驅動程式API,例如OpenCL™ 和DirectX-11 Compute去表達平行任務。

Programming Model

NVIDIA現今已能支援各種針對GPU的程式設計語言,包括C, C++, Fortran, OpenCL和DirectCompute等。一整套的 軟體開發套件,以及資料庫和中介軟體等目前已可提供開發人員使用,如上圖所示,並請點擊此連結

CUDA平行程式化模型導引程式設計者將問題劃分為數個粗略的子問題,這些子問題能被分別以平行的方式進行處理。之後再針對子問題進行精細的平行處理,以確保能以平行方式協同處理每一子問題。

CUDA GPU架構和相對應的CUDA平行運算模型目前已被廣泛使用,不僅應用於數千種應用程式中,更有數千篇以 CUDA為主題的研究論文業已出版。CUDA專區列出許多其中的應用程式及論文。

OpenCL是蘋果公司之商標,經由Khronos集團授權使用。
DirectX為微軟公司的註冊商標 。