為何GPU受到服務器廠商的熱捧?
經(jīng)過多年的嘗試,圖形處理單元(GPU)開始受到主流服務器廠商的重視,戴爾和IBM是第一批在高性能計算機(HPC)上采用GPU的一線服務器廠商。GPU通常用在桌面PC上,主要作為電子游戲的高速圖形加速器,但服務器廠商很快發(fā)現(xiàn)它除了在游戲渲染方面有出色的表現(xiàn)外,在數(shù)學計算方面也有先天性優(yōu)勢。
今年5月,IBM宣布計劃為iDataPlex dx360 M3可橫向擴展服務器提供一對Tesla M2050 GPU,戴爾也不甘落后,于6月宣布PowerEdge M610x刀片服務器將會裝配一對Tesla M2050 GPU,M610x裝配了英特爾至強5500或5600處理器,最大可以提供400億次/s的計算能力。
在這些服務器廠商競相重視GPU計算的背后,Nvidia(英偉達)是最大的贏家,都說早起的鳥兒有食吃,Nvidia在推動GPU作為數(shù)數(shù)學密集型計算任務處理單元方面已經(jīng)持續(xù)了很長時間,但直到戴爾和IBM宣布集成Tesla M2050 GPU之前,Nvidia一直未獲得一線服務器廠商的支持。
GPU歷史
如果你對PC的發(fā)展歷史比較了解,你一定還記得8086,80286和80386處理器中就具有數(shù)學協(xié)處理器了,分別是8087,80287和80387,如果你在20世紀80年代后期購買過PC做數(shù)學或科學計算,PC銷售人員應該給你講過數(shù)學協(xié)處理器,這些附加的芯片是專為快速,準確的計算而設計的,主要買家是電子表格用戶,因為那時Lotus 1-2-3是x86上的殺手級應用,安裝數(shù)學協(xié)處理器后計算速度會更快。
到80486時,數(shù)學協(xié)處理器就集成到CPU了,隨后的處理器架構不斷增加指令加快數(shù)學計算速度,到了今天,CPU設計文檔稱之為“浮點單元”,因為數(shù)學計算主要就是浮點運算。
計算機只會將數(shù)字看作是整數(shù)或浮點數(shù),整數(shù)沒有小數(shù)位(如13人),而浮點數(shù)有小數(shù)位(如 3.14159),細粒度計算都是浮點單元的工作。
這對于圖形來說特別重要,因為計算構成一個平滑三維圖像的三角形位置需要非常精確的分數(shù),多或少一點三角形就會開裂,破壞圖像的整體效果,圖形處理軟件需要計算30位小數(shù)獲得精確的擬合,顏色和亮度。
多核數(shù)學處理器
多年來,Nvidia和它的競爭對手ATI(2006年AMD收購了ATI)已經(jīng)生產過大量的多核數(shù)學處理器,有意思的英特爾和 AMD制造的CPU大多還是4-6核,而Nvidia最新的Fermi架構具有483個流處理器(當然也會消耗更多的電力,產生更多的熱量),而ATI Radeon 5000系列更是達到了1600個流處理器。
流處理主要用于并行處理計算單元,靠軟件管理內存分配,數(shù)據(jù)同步和通信等,這些 核心通過高速連接通道連接。
GPU線程比CPU線程更小,因為它們只包含了一堆數(shù)學指令,通常,數(shù)學指令會被簡單地視為加法,GPU可以更 快地切換線程,因為核心可以在一個時鐘周期內從一個線程轉到另一個線程,而某些CPU是辦不到的,CPU線程是一系列復雜的指令組成的,如系統(tǒng)進程或操作 系統(tǒng)調用。
最近,需要高性能計算的人們已經(jīng)意識到那些483到1600個數(shù)學核心除了渲染游戲外,可能還可以做點別的什么,Nvidia和 AMD當然舉雙手贊成,最近它們也增強了GPU中的數(shù)學協(xié)處理器。
最后要提到的是雙精度浮點運算,它是復雜科學計算所必需的,Nvidia 和ATI也都已經(jīng)將雙精度浮點運算加入到它們的芯片中去了,單精度浮點數(shù)是32位長度(2^32),而雙精度浮點數(shù)是64位長度(2^64),這個與游戲 毫不相干,但科學研究卻離不開它,如全球氣候模擬科學實驗。
GPU編程
如果你數(shù)據(jù)中心的服務器有GPU,那么在編寫服務器應用程序時就應該將其考慮進去,但利用GPU不是一個簡單的任務,需要在CPU和GPU之間做好協(xié)調,不是引用幾個現(xiàn)成的庫,寫幾行代碼就可以搞定的。
電子游戲是大量使用浮點運算的很好示例,但游戲并非浮點運算的唯一用途,凡是與可視化相關的領域幾乎都會牽扯到浮點運算,如醫(yī)學成像,三維成像,科學成像,石油和天然氣勘探可視化,娛樂,廣告和金融建模等。
這個過程被稱為GPGPU計算,或通用GPU計算,需要通過編程將本該由CPU處理的計算任任務交由 GPU處理,很多時候,這意味著要重寫代碼,Nvidia使用CUDA開發(fā)語言來處理。 #p#page_title#e#
CUDA是一種類似于C的編程語言,用它可以開發(fā)在Nvidia GPU上并行運行的應用程序,與x86處理器不一樣,應用程序不只并行運行2,4或8個線程,而是數(shù)百個線程。
Nvidia的付出也得到了回報,現(xiàn)在全世界有超過350所大學已經(jīng)開設了CUDA開發(fā)課程,但如果只有Nvidia一家公司有這個干勁,最終也可能是徒勞的。
OpenCL項目是OpenGL的一個分支,它為3D顯卡提供了一個圖形庫(在很大程度上可以取代微軟的DirectX),蘋果公司是OpenCL框架的創(chuàng)立者,OpenCL框架用于編寫跨CPU、GPU和其它處理器執(zhí)行的程序,OpenCL包括一個編寫內核和API的語言,它們可用于基于任務和基于數(shù)據(jù)的并行編程。
OpenCL與CUDA相比有優(yōu)勢也有弱點,首先,它支持多處理器計算,而CUDA只支持Nvidia GPU;OpenCL可以讓任何應用程序訪問GPU,且不用重寫代碼,而CUDA必須用C為Nvidia GPU重寫代碼;OpenCL支持任何輸入/輸出處理器,因此它也支持安騰、Sun UltraSparc和ARM嵌入式處理器。
OpenCL框架比CUDA技術更新,因此缺少很多CUDA具有的特性,也沒有CUDA成熟,最值得注意的是,CUDA擁有快速傅里葉變換內核(FFT),但OpenCL沒有,F(xiàn)FT算法是一個復雜的算法,在高級科學計算和圖像處理領域有著廣泛的應用。
這兩個框架都有各自的優(yōu)缺點,CUDA憑借Nvidia的強力支撐已經(jīng)占領了絕大多數(shù)市場,而 OpenCL也不弱,它由標準化組織管理,但從目前來看還是一事無成,我們是將自己綁定到Nvidia還是等待標準更新?有點舉棋不定。
除了CUDA和OpenCL外,還有第三個競爭對手,那就是微軟的 DirectCompute,DirectCompute是DirectX 11 API庫中的一個組件,我們在Windows 7中可以找到它,和OpenCL一樣,它可以讓應用程序使用GPU的計算能力。由于它僅在DirectX 11中,因此使用DirectCompute有些限制,首先,它只能運行在Windows 7計算機上,因為微軟沒有為其它系統(tǒng)準備DirectX,市場上也沒有那么多DirectX 11顯卡,ATI現(xiàn)在處于領先地位,但Nvidia也正努力追趕,目前,DirectCompute還未被服務器廠商正式利用。
應用模式
那么誰最適合GPU計算?正如前文所述,高級數(shù)學運算是一種情況,還有醫(yī)學研究中的疾病逆向工程,醫(yī)學成像中的超聲圖像渲染,以及視頻和圖像處理領 域,如電影特效制作。
Nvidia最近可謂風光極了,在2010奧斯卡獎項中,三部最佳特效電影(星際旅行,阿凡達和第9區(qū))都離不開Nvidia的功勞,因為它們都使 用了Nvidia GPU進行渲染。在商業(yè)領域,Nvidia GPU也被廣泛用于能源研究,石油和天然氣儲量探測計算,以及股市趨勢分析。
但你的數(shù)據(jù)中心并不一定需要GPU,因此不要認為下一次購買服務器就一定要買集成GPU的,對于基本的服務器任務,如文件服務,網(wǎng)頁服務或數(shù)據(jù)庫服 務,GPU是幫不上忙的,對于I/O密集型應用,如應用程序服務器或數(shù)據(jù)庫服務器,也是不需要GPU的,它們需要的是大內存,高速連接,或是固態(tài)存儲,但 都與GPU無關。
使用GPU涉及到編程,這也是目前新興的一種編程類型,想進入這一行的開發(fā)人員應該接受專業(yè)的培訓和教育,但不一定要參加硬件公司的培訓,但諸如 Nvidia和AMD提供的培訓可能更扎實,但不一定適合企業(yè)級開發(fā)
原文出自【比特網(wǎng)】,轉載請保留原文鏈接:http://server.chinabyte.com/163/11521663.shtml