= Adherelinux's Page = = Introduce GPGPU = * 前言 * 平行運算 [[br]] * GPGPU(General Purpose Graphic Unit) [[br]] * CUDA硬體架構 [[br]] * 高速運算的方案 [[br]] * CUDA軟硬體 [[br]] = 前言 = 1. 電腦與人腦的比較 * 人腦的運算能力:10次運算/秒(10 HZ)。 * 電腦的運算能力: 10^9^ 次運算/秒 (10^9^ HZ,十億次)。 * Hz(赫 Hertz)等於每秒振動一週之頻率。單位時間(如1秒)內所產生的脈衝個數稱為頻率。 2. 需要長時間計算工作最常見的工程問題 * 飛彈的導引系統:10^11^ ~10 ^12^次運算/秒。 * 天氣預測。 * 核子試爆結果。 * DNA結構模擬。 = 什麼是平行運算 = 平行運算其實就是將同一個運算的工作,交給整個 Cluster 裡面的所有 CPU 來進行同步運算的一個功能。由於使用到多個 CPU 的運算能力,所以可以加快運算的速度。 [[Image(什麼是平行運算.JPG)]] (圖檔來源鳥哥私房菜) = GPGPU(General Purpose Graphic Unit) = * GPU,最主要的功能是滿足電腦顯示圖形的元件。 * GPGPU就是以繪圖晶片進行通用的運算,由於新型的繪圖晶片開始允許可程式性,讓原本被鎖定用於繪圖運算的繪圖晶片,開始可執行通用運算。 * 一般而言,中央處理器負責大部分的運算工作,也是所謂的通用運算,而顯示卡晶片專門處理影像,彼此的分工明確。 * GPU多核心的架構,比起傳統CPU架構帶來更強的處理能力,人類對於運算的需求越來越大,如核能試爆、氣候預測與病毒防治,都需要大規模的運算能力,但傳統的中央 處理器架構,以英特爾的Xeon處理器為例,最高只有6個核心,然而一顆Nvidia GeForce 8800 GTX繪圖晶片,卻擁有128個處理核心,由於多核心的架構,更適合超級電腦的平行運算運用。 * 以華碩推出的GPU伺服器,內含Nvidia Tesla繪圖晶片,光是一臺直立式伺服器就擁有968個運算核心,浮點運算量就可達到1.1teraflop。 (1 Teraflop表示每秒鐘可完成1萬億次浮點計算) [[Image(PeakGFLOPS.JPG)]](圖來源Nvidia progrmming guile)[[br]](1 GFLOP/s為每秒所能完成十億浮點運算數) * 在2001微軟推出DirectX9,讓繪圖處理器也能用浮點進行數學運算,讓繪圖晶片可程式化,開始做為通用運算之用,再加上,繪圖晶片擁有數量龐大的核心數,針對平行運算應用,帶來更為強 大的浮點運算能力,讓GPGPU(General Purpose Computing on Graphics Processing Units)就因此而誕生,利用繪圖核心來處理原本中央處理器負責的通用運算任務。 * 2006年Nvida公司編寫一套編譯器NVCC得函式庫,NVCC是處理器與編譯器的混合體。當遇到CUDA程式碼,編譯器會自動編譯為GPU的代碼,也就是會轉換為CUDA Driver的代碼。若是Host Host C++代碼,則用C++編譯器進行編譯。 [[Image(CPUVSGPU.JPG)]](圖來源Nvidia progrmming guile)[[br]](CPU與GPU的結構不同)[[br]] = 高速運算的方案 = * PC Cluster:MPICH2(支援C,C++,Fortran,Python)。目前有4核心的CPU,如果50電腦,透過MPICH2以便有200個核心一起做平行計算。Intel在2009年底有新一代的8核心Xeon CPU量產,Intel預計在2020年推出80核心的產品。 [[Image(大型主機.JPG)]](圖來源a joint entity of the University of Chicago and Argonne National Laboratory)[[br]](大型主機)[[br]] * GPGPU(GPGPU(General Purpose Graphic Unit): 2006年11月Nvidia公司推出Cuda使用於8000 Geforce 系列的產品,可以使用C語言寫顯示卡的計算程式。然而AMD也提 供C語言的工具與之競爭。 2008年底蘋果電腦公布OpenCL(Open Computing Language)規格,是跨硬體的程式語言。 遵守C和C++語法,但FORTRAN或PYTHON可以透過mixed language。 [[Image(Nvidiaproduct 9800GT.JPG)]](圖來源 Nvidia company product)[[br]] * PC Cluster+GPGPU:MPICH2+CUDA透過MPICH2可以使各電腦的GPGPU一起做平行運算,充分發揮硬體計算能力。 = CUDA 軟硬體架構 = * Nvidia 公司的產品 Nvidia 9-Series Architecture (Geforce 9800 GT)