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