日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从Folding@home项目看GPU通用计算发展

發(fā)布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从Folding@home项目看GPU通用计算发展 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

GPU通用計算發(fā)展歷程簡析


前言:Folding@home(蛋白質(zhì)折疊過程研究)項目GPU客戶端的推廣,使得普通玩家也有機會體會GPU通用運計算能力,讓顯卡也能成為支持公益事業(yè)的重要力量。分布式計算的原理讓普通PC在安裝一個簡單的軟件后,即可與互聯(lián)網(wǎng)相連接,變身為強大的超級計算機,高深的大規(guī)模并行計算由此變得平易近人。在體會GPU通用計算能力之后,我們對當今GPU的發(fā)展方向和整個行業(yè)的變化速度感慨萬千……

?

??? ● GPU通用計算發(fā)展歷程簡析

??? Folding@Home是一款基于分布式原理的蛋白質(zhì)折疊計算軟件,通過這個軟件可以讓全球眾多空閑的PC連接起來,一起并行計算各種蛋白質(zhì)折疊,從而縮短人類對于癌癥、阿茲海默癥、帕金森氏癥等的攻克過程。該項目在幾年前一直是依靠CPU運算提供支持,而自從AMD和NVIDIA顯卡加入運算后,項目進行速度獲得了極大提升。全世界無數(shù)玩家用自己的顯卡為醫(yī)學研究做出了重大貢獻。

  10年前我們所有人都認為顯卡服務(wù)于制圖、動畫、游戲等電子娛樂領(lǐng)域,這沒有錯。因為GPU(Graphic Processing Unit 圖形處理器)發(fā)明的目的就是為了應(yīng)對繁雜的3D圖像處理。GPU的工作通俗的來說就是完成3D圖形的生成,將圖形映射到相應(yīng)的像素點上,對每個像素進行計算確定最終顏色并完成輸出。但是誰都沒有想到10年后的今天,GPU的內(nèi)部架構(gòu)和應(yīng)用范圍已經(jīng)發(fā)生了翻天覆地的變化。



NVIDIA和ATI在通用計算方面競爭激烈

  最早的圖形處理器其實就是在卡上搭配了一個幾何加速器,用來提高頂點的吞吐量和加速幾何變換、打光等操作,這樣的搭配方式成本很高,只有在工作站產(chǎn)品上才會看到。3dfx的Voodoo1當初之所以能取代巨大反響,在于它能在當時的制造工藝條件下提供一個可以解決3D渲染流水線大部分問題的方案:Setup、紋理映射、Z-buffer等等。但此時的GPU依然沒有解決圖形處理中CPU負擔過重的問題,同時GPU還不具備著色器(Shader)單元。

  NVIDIA公司在1999年發(fā)布GeForce 256圖形處理芯片時首先提出GPU的概念。GPU使顯卡減少了對CPU的依賴,并進行部分原本CPU的工作,尤其是在3D圖形處理時。GPU所采用的核心技術(shù)有硬體T&L、立方環(huán)境材質(zhì)貼圖和頂點混合、紋理壓縮和凹凸映射貼圖、雙重紋理四像素256位渲染引擎等,而硬體T&L技術(shù)可以說是GPU的標志。


傳統(tǒng)的GPU渲染流水線

  過去10年間,圖形處理器(GPU)在臺式電腦中的使用已非常普遍。GPU具有強大的計算能力和很高的存儲帶寬,而這兩點對于高性能三維圖形應(yīng)用是至關(guān)重要的。以往GPU計算都是專用于這些應(yīng)用的,但現(xiàn)在新型的GPU允許具備一定的用戶可編程性,這就使得GPU能夠面向更通用的計算。

  2001年,NIVIDA公司的GeForce 3首先引入了可編程的頂點著色器(Vertex Shader)單元。緊接著在2002年,可編程的像素著色器(Pixel Shader)單元也加入了GPU。對GPU通用計算進行深入研究從2003年開始,并提出了GPGPU概念,前一個GP則表示通用目的(General Purpose),所以GPGPU一般也被稱為通用圖形處理器或通用GPU。


GPU逐漸體現(xiàn)出強大的浮點運算能力

  隨著GPU計算能力的不斷增長,一場GPU革命的時機也成熟了。GPU已經(jīng)從由若干專用的固定功能單元(Fixed Function Unit)組成的專用并行處理器,進化為了以通用計算資源為主,固定功能單元為輔的架構(gòu),這一架構(gòu)的出現(xiàn)奠定了GPGPU的發(fā)展基礎(chǔ)。在SIGGRAPH 2003大會上,許多業(yè)界泰斗級人物發(fā)表了關(guān)于利用GPU進行各種運算的設(shè)想和實驗?zāi)P?。SIGGRAPH會議還特地安排了時間進行GPGPU的研討交流。

  可惜的是當時的GPU大多只能支持Shader Model 2,無論在指令長度還是流控制方面都無法滿足最基本的通用計算需要,這讓GPGPU的研究進度變得緩慢。到了DirectX 9 Shader Model 3.0時代,新的Shader Model在指令槽、流控制方面的顯著增強使得對應(yīng)GPU的可編程性能得到了大大的提升。GPGPU的研究由此進入快車道。


SIGGRAPH 2003大會開始深入研究GPU通用計算

  GPGPU項目研究中的先行者是英國劍橋大學的BionicFx課題組。早在2004年9月,劍橋大學的BionicFx課題組便宣布在NVIDIA的GeForce FX 5900產(chǎn)品中實現(xiàn)了專業(yè)的實時音頻處理功能,并且準備進行商業(yè)化的運作,對其產(chǎn)品進行銷售,給音樂創(chuàng)作者帶來實惠。

??? 在隨后的一段時間,GPGPU進入了深入研究階段,但是由于編程語言架構(gòu)和編程環(huán)境都難以通用,該領(lǐng)域的發(fā)展能力受到廣泛質(zhì)疑。就在人們認為GPGPU的研究即將偃旗息鼓的時候,ATI在2006年8月驚人地宣布即將聯(lián)手斯坦福大學在其Folding@Home項目中提供對ATI Radeon X1900的支持。在顯卡加入Folding@Home項目后,科研進展速度被成倍提升,人們第一次感受到了GPU的運算威力。

??? 毫無疑問,在GPGPU研究上,ATI跨出了極具意義的一步。同時將GPGPU的應(yīng)用領(lǐng)域和普及程度推向高潮。隨后NVIDIA憑借GeForce 8800GTX這款業(yè)界首個DirectX 10 GPU,在GPU通用計算方面實現(xiàn)了大步跨越,特別是CUDA概念的提出(該工具集的核心是一個C語言編譯器),在新的通用計算領(lǐng)域后來居上。


GPU計算開始在更多領(lǐng)域發(fā)揮作用

  如圖,GPU在很多領(lǐng)域的研究中已經(jīng)開始發(fā)揮作用。支持DirectX 10顯卡的首次出現(xiàn)是一個分水嶺:過去只能處理像素或者只能處理頂點的專門功能處理單元被通用的統(tǒng)一著色器架構(gòu)(Unified Shader Architecture)取代了,開發(fā)人員可以更輕松的對統(tǒng)一著色器進行控制。以AMD R600和NVIDIA G80為代表的DirectX10時代GPU能夠提供了超越以往任何GPU的能力:它們擁有數(shù)百個功能單元,能夠處理很多過去只能在CPU上運行的并行問題。

  GPGPU將應(yīng)用范圍擴展到了圖形之外,無論是科研教育、財務(wù)計算,還是在工業(yè)領(lǐng)域,GPGPU都得到了廣泛的使用,關(guān)于它的科研成果和新應(yīng)用模式也層出不窮。許許多多令人鼓舞的結(jié)果已經(jīng)表明:將GPU用于解決數(shù)據(jù)并行計算問題可以明顯提高系統(tǒng)的運行速度。

濮元愷所寫過的技術(shù)分析類文章索引(持續(xù)更新)

?NVIDIA/ATI命運轉(zhuǎn)折
GPU十年發(fā)展回顧

改變翻天覆地
最全Fermi架構(gòu)解讀

顯卡只能玩游戲?
10年GPU通用計算回顧

通用計算對決?
四代N卡激戰(zhàn)CUDA-Z

從裸奔到全身武裝
?CPU功能集成之路探秘

AMD統(tǒng)一渲染架構(gòu)
歷程回顧與評測

淺析DirectX11技術(shù)
帶給圖形業(yè)界的改變

摩爾定律全靠它
CPU光刻技術(shù)分析

我就喜歡
?"N飯"永不投誠語錄

別浪費你的電腦
分布式計算在中國

從Folding@home項目
看GPU通用計算發(fā)展

?Computex獨家泄密
解析AMD下代GPU
產(chǎn)品:GTX480 極速版?索泰?顯卡?

Folding@Home項目原理與特性

??? ● Folding@Home項目原理與特性

  Folding@home是一個研究蛋白質(zhì)折疊,誤折,聚合及由此引起的相關(guān)疾病的分布式計算項目。我們使用聯(lián)網(wǎng)式的計算方式和大量的分布式計算能力來模擬蛋白質(zhì)折疊的過程,并指引我們近期對由折疊引起的疾病的一系列研究,找到相關(guān)疾病的發(fā)病原因和治療方法。

  Folding@home能了解蛋白質(zhì)折疊、誤折以及相關(guān)的疾病。目前進行中的研究有:癌癥、阿茲海默癥(老年失智癥)、亨廷頓病、成骨不全癥、帕金森氏癥、核糖體與抗生素。



Folding@Home項目簡介

  您可以在斯坦福大學官方網(wǎng)頁上下載并運行客戶端程序,隨著更多志愿者的計算機加入,此項目計算的速度就越快,就會計算出蛋白質(zhì)在更長時間內(nèi)的折疊,距離科學家找到最終答案也就越來越近。如果蛋白質(zhì)沒有正確地折疊將會使人得一些病癥:如阿茲海默氏癥(Alzheimers)、囊腫纖維化(Cystic fibrosis)、瘋牛病(Mad Cow, BSE)等, 甚至許多癌癥的起因都是蛋白質(zhì)的非正常折疊。

??? Folding@home所研究的是人類最基本的特定致病過程中蛋白質(zhì)分子的折疊運動。項目的核心原理在于求解任務(wù)目標分子中每一個原子在邊界條件限制下由肽鍵和長程力等作用所導致的運動方程,進而達到實現(xiàn)模擬任務(wù)目標分子折疊運動的目的。每一個原子背后都附庸這若干個方程,每一個方程都可以轉(zhuǎn)換成一組簡單的向量指令。同時由于長程力的影響,條件分支也隨處可見,Folding@home在GPU使用量上也要大于圖形編程。

??? Folding@home的客戶端利用了經(jīng)修改的TINKER、GROMACS、AMBER及CPMD這四款分子模擬程式進行運算,并會在許可的情況下作出優(yōu)化,以把運算速度加快。這四款模擬程式也被修改成多個不同版本,供多款作業(yè)平臺使用。Folding@Home中最主要的核心是GROMACS,這是一個經(jīng)過特殊許可的非GPL版本的GROMACS作為客戶端。GROMACS全名為:GROningen MAchine for Chemical Simulations,這是一款由荷蘭Groningen大學開發(fā)的分子動力學模擬軟件包,現(xiàn)在則主要由Uppsala大學, 斯德哥爾摩大學 以及馬普學會聚合物研究所共同維護。


在分子動力學領(lǐng)域廣泛使用的GROMACS引擎

??? 由于針對不同的系統(tǒng)其代碼進行了高度優(yōu)化,GROMACS是目前最快的分子動力學模擬軟件。此外,由于支持不同的分子力場以及按照GPL協(xié)議發(fā)行,GROMACS擁有很高的可定制性。GROMACS目前最新版本為4.07,可以到官方網(wǎng)站下載并自行編譯。GROMACS支持并行/網(wǎng)格計算擴展,可靈活搭配MPI規(guī)范的并行運算接口,如MPICH、MPICH2、MPILAM、DeoinMPI等。國內(nèi)也有很多分子動力專業(yè)人員同樣使用GROMACS做研究,而且?guī)缀跏侨?#xff0c;GROMACS幾乎成為模擬蛋白質(zhì)折疊領(lǐng)域內(nèi)的標準。

  蛋白質(zhì)在生物學中充當如此重要的角色, 科學家開始對人類的基因組開始排序?;蚪M實際上是一張跟蛋白質(zhì)有關(guān)的“藍圖”——基因組包含遺傳密碼(DNA Code),這些密碼決定著氨基酸串成蛋白質(zhì)長鏈的順序。最令人驚訝的不僅是蛋白質(zhì)本身能夠自我組裝——折疊,而且是它們自我組裝的速度是如此之快:一些蛋白質(zhì)能夠在百萬分之一秒之內(nèi)完成自我折疊。

  雖然這個時間在人的時間表中是非??斓?#xff0c;但是用計算機進行模擬,這個時間就顯得相當長了。實際上,計算機模擬1納秒(1/1,000,000,000秒) 需要花費大約一天的時間。不幸的是,蛋白質(zhì)折疊是以數(shù)十毫秒(10000納秒)作為時間表的。所以我們必須借助分布動力學——一種“將工作單元分解成多個部分,使用多臺處理器來模擬”的辦法來沖破毫秒障礙。

產(chǎn)品:GTX480 極速版?索泰?顯卡?

Folding@Home項目發(fā)展概況

????● Folding@Home項目在中國的發(fā)展與概況

  2006年9月底,ATI宣布了通用計算GPGPU架構(gòu),并得到了斯坦福大學Folding@Home項目的大力支持,加入了人類健康研究。2007年3月22日,PS3正式加入史丹佛大學分布式運算研究計劃,至今已有超過百萬名 PS3 玩家注冊參與。NVIDIA于2008年6月宣布旗下基于G80及以上核心的顯卡產(chǎn)品都支持該項目的通用計算,更是對分布式計算的重要貢獻。



中關(guān)村在線搭建的單卡FAH項目運算平臺

  Folding@home在自身定位明確、成功發(fā)展的基礎(chǔ)下,通過斯坦福大學的大力推廣,已經(jīng)獲得了全世界廣泛認同。而近期PS3和GPU的參與更是將Folding@home的運算能力推向高峰。值得一提的是NVIDIA在2008年6月果斷宣布加入Folding@home項目,至今已經(jīng)為該項目提供了超過2 PFlops運算能力。

??? 目前Folding@Home已經(jīng)成為全世界最有影響力和公信力的項目,同時是各大廠商和機構(gòu)鼎力支持的項目,當然它毫無疑問地擁有最廣大的志愿者團隊——截止2010年4月18日,全球共計1,396,683人參與該項目,最近的統(tǒng)計顯示志愿者貢獻的總運算能力已經(jīng)達到了5PFlops,遠超現(xiàn)在全世界最快的超級計算機IBM Roadrunner(最高性能1.026PFlops)。

??? 該項目在中國擁有約2000多名參與者,其中最強大的China Folding@Home Power(Folding@Home中國力量,團隊編號3213)團隊已經(jīng)擁有2585人,最近活躍用戶200人以上,目前貢獻計算量排名世界第47位,團隊整體運算能力約為50到100TFLOPS。

  目前的GPU通用計算發(fā)展迅速,在通用性方面已經(jīng)與CPU不相上下,在浮點運算量方面則遠超CPU。不僅僅是我們看到的Folding@home項目支持GPU運算,在2008年5月,法國原子能委員會等機構(gòu)正準備打造一臺新的超級計算機,其中不但會有Intel的下一代四核心處理器,更會加入192顆GTX200圖形核心。在3GHz頻率下,每顆處理器的浮點運算能力為96GFLOPS,1068顆Nehalem Bloomfield四核心處理器合計約103TFLOPS,而192顆GT200則能提供192TFLOPS。雖然GPU的數(shù)量只有CPU的18%,但計算能力卻比后者高出86.4%,單顆對比的話更是將近10:1。

  下面節(jié)選一段近期的Folding@home項目論文(第61號論文):

??? 利用計算篩選確定流感紅血球凝集素蛋白質(zhì)重要變異并公開其結(jié)構(gòu)(26XX任務(wù)段的成果):

??? 下載地址:http://psb.stanford.edu/psb-online/proceedings/psb09/kasson.pdf?

??? 流感紅血球凝集素蛋白質(zhì)的主要作用是綁定目標細胞,并破壞細胞膜將病毒基因注入目標細胞。

??? 因為長時間以來H5N1和H1、H3以及乙型流感病毒外殼的細微差別很難被精確的區(qū)分出來,通過大致結(jié)構(gòu)的區(qū)別并不能使人們對掌握H5N1對人類細胞的入侵過程。通過2600+任務(wù)段的模擬,目前斯坦福已經(jīng)完成了各種流感病毒外殼結(jié)構(gòu)來的比對和篩選,對應(yīng)的病毒對人類細胞的完整侵蝕過程的模擬目前仍在繼續(xù)中。

產(chǎn)品:GTX480 極速版?索泰?顯卡?

將GPU功能單元映射為通用單元

??? ● 將GPU功能單元映射為通用單元

  基于GPU的計算從概念上講很容易理解,并且現(xiàn)有多種高級語言和軟件工具可以簡化GPU的編程工作。但是開發(fā)人員必須首先了解GPU在圖像繪制過程中是如何工作的,然后才能確定可用于計算的各個組件。為了著手把一般性的計算映射到GPU的專用硬件中,必須先確定GPU提供的各種計算資源,下面我們將簡單了解GPU通用計算中各硬件系統(tǒng)的作用。以下資料由英國NVIDIA公司的開發(fā)工程師Mark Harris提供。



NVIDIA和ATI的GPU流處理器設(shè)計

  可編程并行處理器:GPU有兩類可編程處理器,即三角頂處理器和像素處理器。頂點處理器負責處理頂點數(shù)據(jù)流(由位置、顏色、標準向量和其它屬性),它們是組成三維幾何模型的元素。依據(jù)每個頂點相對于其視點的位置,頂點處理器用頂點漸變程序?qū)ζ滢D(zhuǎn)換。

??? 像素處理器將像素漸變程序用于處理每個輸出像素以確定其最后的顏色。頂點處理器和像素處理器是完全可編程的,可以對四個不同的數(shù)值同時執(zhí)行一條指令。這是因為圖形的基本要素或者是位置(X、Y、Z、W)或者是顏色(紅、綠、藍、alpha)。


ATI最為喜歡的SIMD結(jié)構(gòu)流處理器

  光柵處理器:在頂點處理器轉(zhuǎn)換完頂點之后,每三個一組的頂點就用來計算一個三角形。從這個三角形出發(fā),光柵處理器生成一個像素流。該光柵處理器的功能非常專一,就是表現(xiàn)這些三角形,因而不是用戶可編程的,但可將它看成是一個地址內(nèi)插器和一個數(shù)據(jù)放大器(因為它根據(jù)幾個三角頂就可生成許多像素)。

紋理單元:頂點處理器和像素處理器能以紋理(圖像)的形式訪問存儲器。該紋理單元可被看成是一個只讀存儲器接口。當前的GPU可以將一個輸出圖像寫到紋理結(jié)構(gòu)存儲器,而不是寫到幀緩存器。這個紋理渲染功能是基本的,因為它是將GPU輸出直接反饋到輸入的唯一現(xiàn)有機制,這個過程無須返回到宿主處理器。紋理渲染可被看成是一個只寫存儲器接口。


本次Fermi架構(gòu)顯卡所使用的CUDA運算核心

  數(shù)據(jù)類型:當涉及數(shù)據(jù)類型時,現(xiàn)有的GPU比CPU更受限制。它們只支持定點或浮點形式的實數(shù)。如果沒有一些圖形編程方面的知識,初涉GPU編程可能會感覺麻煩。在CPU和GPU之間做某些非常簡單的類比是有益的。

  GPU紋理 = CPU矩陣:GPU上的基本矩陣數(shù)據(jù)結(jié)構(gòu)是紋理(圖像)和頂點矩陣。在CPU上用到一個數(shù)據(jù)矩陣的地方,也就是在GPU上用到一個紋理的地方。

  GPU漸變程序 = CPU內(nèi)循環(huán):在CPU中,一個循環(huán)可重復用于一個數(shù)據(jù)流(存在一個矩陣內(nèi))內(nèi)的各個元素,用該循環(huán)體內(nèi)的各條指令處理這些元素。在GPU中,類似的指令可寫在一個漸變程序之內(nèi),并自動應(yīng)用到相應(yīng)數(shù)據(jù)流的所有元素上。在這個計算中并行處理的數(shù)量取決于該GPU中處理器的數(shù)量。

  紋理渲染 = 反饋:為了在GPU中實現(xiàn)反饋,紋理渲染功能必須用來將一個碎片程序的結(jié)果寫到存儲器中,該存儲器隨后可用做未來其它程序的輸入。

  幾何光柵 = 計算啟動:為了啟動GPU中的計算,只需畫個簡單的幾何圖形。頂點處理器將轉(zhuǎn)換它,而光柵單元將決定它所涉及的輸出緩存器中的像素值,并為每個元素產(chǎn)生一個碎片。由于表示一個矩陣的方形碎片流中的每個元素一般都要經(jīng)過處理,因此在GPU編程中啟動通用計算最常見的手段就是用一個方塊。

產(chǎn)品:GTX480 極速版?索泰?顯卡?

GPU內(nèi)部通用計算代碼運算過程

??? ● GPU內(nèi)部通用計算代碼運算過程

  在繪制圖像時,GPU首先接收宿主系統(tǒng)以三角頂點形式發(fā)送的幾何數(shù)據(jù)。這些頂點數(shù)據(jù)由一個可編程的頂點處理器進行處理,該處理器可以完成幾何變換、亮度計算等任何三角形計算。接下來,這些三角形由一個固定功能的光柵器轉(zhuǎn)換成顯示在屏幕上的單獨“碎片(fragment)”。在屏幕顯示之前,每個碎片都通過一個可編程的碎片處理器計算最終顏色值。

  計算碎片顏色的運算一般包括集合向量數(shù)學操作以及從“紋理”中提取存儲數(shù)據(jù),“紋理”是一種存儲表面材料顏色的位圖。最終繪制的場景可以顯示在輸出設(shè)備上,或是從GPU的存儲器重新復制到宿主處理器中。



兩向量相加的簡單Brook代碼示例

  圖為執(zhí)行兩向量相加的簡單Brook代碼示例。Brook支持所有帶附加流數(shù)據(jù)的C句法,流數(shù)據(jù)存儲于GPU的存儲器中,而核函數(shù)也在GPU上執(zhí)行??删幊添旤c處理器和碎片處理器提供了許多相同的功能和指令集。但是,大部分GPU編程人員只將碎片處理器用于通用計算任務(wù),因為它通常提供更優(yōu)的性能,而且可以直接輸出到存儲器。

  利用碎片處理器進行計算的一個簡單例子是對兩個向量進行相加。首先,我們發(fā)布一個大三角形,其所包含的碎片數(shù)量和向量大小(容納的元素)相同。產(chǎn)生的碎片通過碎片處理器進行處理,處理器以單指令多數(shù)據(jù)(SIMD)的并行方式執(zhí)行代碼。進行向量相加的代碼從存儲器中提取兩個待加元素,并根據(jù)碎片的位置進行向量相加,同時為結(jié)果分配輸出顏色。輸出存儲器保存了向量和,這個值在下一步計算中可以被任意使用。

  可編程碎片處理器的ISA類似于DSP或Pentium SSE的指令集,由四路SIMD指令和寄存器組成。這些指令包括標準數(shù)學運算、存儲器提取指令和幾個專用圖形指令。

產(chǎn)品:GTX480 極速版?索泰?顯卡?

更加優(yōu)秀的通用計算API

??? ● 更加優(yōu)秀的通用計算API

??? 優(yōu)秀的編程模型能給幫助基于此架構(gòu)的產(chǎn)品迅速發(fā)展,在這個領(lǐng)域各家廠商都盡全力推廣自己的編程架構(gòu),因為只有程序員認可這套編程模型,最終的產(chǎn)品才有生命力。目前的“OpenCL”、“Stream”、“Compute Shader”和“CUDA模型C語言包”都是面向異構(gòu)系統(tǒng)通用目的并行編程的開放式、免費標準,也是統(tǒng)一的編程環(huán)境。便于軟件開發(fā)人員為高性能計算服務(wù)器、桌面計算系統(tǒng)、手持設(shè)備編寫高效輕便的代碼,而且廣泛適用于多核心處理器CPU)、圖形處理器(GPU)、Cell類型架構(gòu)以及數(shù)字信號處理器(DSP)等其他并行處理器,在游戲、娛樂、科研、醫(yī)療等各種領(lǐng)域都有廣闊的發(fā)展前景。



眾多廠商鼎力相助的OpenCL工作組

  OpenCL實際上是針對異構(gòu)系統(tǒng)進行并行編程的一個全新的API,OpenCL可以利用GPU進行一些并行計算的工作。我們知道,圖形里面有很多API,比如OpenGL是針對圖形的,而OpenCL則是針對并行計算的API。OpenCL開發(fā)人員可以利用GPU和CPU的計算能力,把GPU和CPU異構(gòu)的系統(tǒng)運用在很多并行計算的領(lǐng)域。

  Stream是AMD提出的GPGPU編程接口?;旧线€是基于一種傳統(tǒng)CPU的一種方式,Stream主要包括CAL與Brook+。CAL是一套指令集,可以用匯編語言的方式來開發(fā)軟件,然而我們匯編方式開發(fā)軟件的話,對搞計算的人來說不大現(xiàn)實,讓他們用匯編語言來說的話可能確實是一個折磨。Brook+是斯坦福大學開發(fā)的,它是類似于C語言的東西,是把底層GPGPU的計算方式類似于C的這種語言,這里要說明的是Brook+不是C語言而是類C語言,語法和C語言比較類似。

  Compute Shader技術(shù)是微軟DirectX 11 API新加入的特性,在Compute Shader的幫助下,程序員可直接將GPU作為并行處理器加以利用,GPU將不僅具有3D渲染能力,也具有其他的運算能力,也就是我們說的GPGPU的概念和物理加速運算。多線程處理技術(shù)使游戲更好地利用系統(tǒng)的多個核心。Compute Shader主要特性包括線程間數(shù)據(jù)通信、一整套隨機訪問和流式I/O操作基本單元等,能加快和簡化圖像和后期處理效果等已有技術(shù),也為DX11級硬件的新技術(shù)做好了準備,對于游戲和應(yīng)用程序開發(fā)有著很重大的意義。

  而NVIDIA提出的CUDA架構(gòu)主要包含兩個方面:一個是ISA指令集架構(gòu);第二硬件計算引擎;實際上是硬件和指令集。也就是說我們可以把CUDA看作是與X86或者cell類似的架構(gòu),但是CUDA基于GPU,而不是傳統(tǒng)的CPU。實際上CUDA是NVIDIA的GPGPU模型,它使用C語言為基礎(chǔ),可以直接以大多數(shù)人熟悉的C語言,寫出在顯示芯片上執(zhí)行的程序,而不需要去學習特定的顯示芯片的指令或是特殊的結(jié)構(gòu)。


OpenCL與CUDA在編程模式方面的區(qū)別

  OpenCL是一個API,在第一個級別,CUDA架構(gòu)是更高一個級別,在這個架構(gòu)上不管是OpenCL還是DX11這樣的API,還是像C語言、Fortran、DX11 Computer Shader,都可以支持。作為程序開發(fā)員來講,一般他們只懂這些語言或者API,可以采用多種語言開發(fā)自己的程序,不管他選擇什么語言,只要是希望調(diào)用GPU的計算能,在這個架構(gòu)上都可以用CUDA來編程。CUDA架構(gòu)與OpenCL是包容關(guān)系,我們把他們放在同一級別進行討論本來就是錯誤的,與OpenCL在同一級別不是CUDA架構(gòu),而是CUDA的C語言包,也就是我們常說的CUDA版本。

  Folding@home項目的GPU客戶端版本是最早利用Stream來開發(fā)的應(yīng)用軟件之一,當然也是名氣最大的。NVIDIA進入以后使用CUDA的語言來寫Folding@home客戶端的軟件,CUDA的C語言包可以說是真正在GPU上運行的C語言,脫離了對圖形學API的依賴,它近乎完美地使用了C語言的存儲體系,把大部分的數(shù)據(jù)盡可能的在Shared memory上進行計算。極大提高GPU運算效率。

  不管C語言還是Fortran,與OpenCL、Computer Shader這種API都是長期共存的關(guān)系。通過GPU通用編程語言的迅速發(fā)展,我們非常欣喜地看到越來越多的通用計算程序出現(xiàn),顯卡已經(jīng)遠遠不止是娛樂工具,而變身為高性能并行計算機。優(yōu)秀的編程模型配合高性能硬件系統(tǒng),讓個人和小型科研機構(gòu)也可以非常輕松地配置自己的高性能計算機平臺。

產(chǎn)品:GTX480 極速版?索泰?顯卡?

著色器模型變化歷程與總結(jié)

??? ● 著色器模型變化歷程與總結(jié)

??? 在圖形渲染中,GPU中的可編程計算單元被稱為著色器(Shader),著色器的性能由DirectX中規(guī)定的Shader Model來區(qū)分。GPU中最主要的可編程單元式頂點著色器和像素著色器。

??? 為了實現(xiàn)更細膩逼真的畫質(zhì),GPU的體系架構(gòu)從最早的固定單元流水線到可編程流水線,到DirectX 8初步具備可編程性,再到DirectX 10時代的以通用的可編程計算單元為主、圖形固定單元為輔的形式,最新的DirectX 11更是明確提出通用計算API Direct Compute概念,鼓勵開發(fā)人員和用戶更好地將GPU作為并行處理器使用。在這一過程中,著色器的可編程性也隨著架構(gòu)的發(fā)展不斷提高,下表給出的是每代模型的大概特點。

??? 表:Shader Model版本演化與特點


Shader Model

GPU代表

顯卡時代

特點

?

1999年第一代NV Geforce256

DirectX 7

1999~2001

GPU可以處理頂點的矩陣變換和進行光照計算(T&L),操作固定,功能單一,不具備可編程性

SM 1.0

2001年第二代NV Geforce3

DirectX 8

將圖形硬件流水線作為流處理器來解釋,頂點部分出現(xiàn)可編程性,像素部分可編程性有限(訪問紋理的方式和格式受限,不支持浮點)

SM 2.0

2003?年

ATI?R300

和第三代NV Geforce FX

DirectX 9.0b

頂點和像素可編程性更通用化,像素部分支持FP16/24/32浮點,可包含上千條指令,處理紋理更加靈活:可用索引進行查找,也不再限制[0,1]范圍,從而可用作任意數(shù)組(這一點對通用計算很重要)

SM 3.0

2004年

第四代NV Geforce 6

和?ATI X1000

DirectX 9.0c

頂點程序可以訪問紋理VTF,支持動態(tài)分支操作,像素程序開始支持分支操作(包括循環(huán)、if/else等),支持函數(shù)調(diào)用,64位浮點紋理濾波和融合,多個繪制目標

SM 4.0

2007年

第五代NV G80和ATI R600

DirectX 10

2007~2009

統(tǒng)一渲染架構(gòu),支持IEEE754浮點標準,引入Geometry Shader(可批量進行幾何處理),指令數(shù)從1K提升至64K,寄存器從32個增加到4096個,紋理規(guī)模從16+4個提升到128個,材質(zhì)Texture格式變?yōu)橛布С值腞GBE格式,最高紋理分辨率從2048*2048提升至8192*8192

SM 5.0

2009年

ATI RV870

和2010年NV GF100

DirectX 11

2009~

明確提出通用計算API Direct Compute概念和Open CL分庭抗衡,以更小的性能衰減支持IEEE754的64位雙精度浮點標準,硬件Tessellation單元,更好地利用多線程資源加速多個GPU

??? 傳統(tǒng)的分離架構(gòu)中,兩種著色器的比例往往是固定的。在GPU核心設(shè)計完成時,各種著色器的數(shù)量便確定下來,比如著名的“黃金比例”——頂點著色器與像素著色器的數(shù)量比例為1:3。但不同的游戲?qū)旤c資源和像素資源的計算能力要求是不同的。如果場景中有大量的小三角形,則頂點著色器必須滿負荷工作,而像素著色器則會被閑置;如果場景中有少量的大三角形,又會發(fā)生相反的情況。因此,固定比例的設(shè)計無法完全發(fā)揮GPU中所有計算單元的性能。

??? 頂點著色單元(Vertex Shader,VS)和像素著色單元(Pixel Shader,PS)兩種著色器的架構(gòu)既有相同之處,又有一些不同。兩者處理的都是四元組數(shù)據(jù)(頂點著色器處理用于表示坐標的w、x、y、z,但像素著色器處理用于表示顏色的a、r、g、b),頂點渲染需要比較高的計算精度;而像素渲染則可以使用較低的精度,從而可以增加在單位面積上的計算單元數(shù)量。在Shader Model 4.0之前,兩種著色器的精度都在不斷提高,但同期頂點著色器的精度要高于像素著色器。

??? Shader Model 4.0統(tǒng)一了兩種著色器,所以頂頂點和像素著色器的規(guī)格要求完全相同,都支持32位浮點數(shù)。這是GPU發(fā)展的一個分水嶺;過去只能處理頂點和只能處理像素的專門處理單元被統(tǒng)一之后,更加適應(yīng)通用計算的需求。

??? DirectX 11提出的Shader Model 5.0版本繼續(xù)強化了通用計算的地位,微軟提出的全新API——Direct Compute將把GPU通用計算推向新的巔峰。同時Shader Model 5.0是完全針對流處理器而設(shè)定的,所有類型的著色器,如:像素、頂點、幾何、計算、Hull和Domaim(位于Tessellator前后)都將從新指令集中獲益。

產(chǎn)品:GTX480 極速版?索泰?顯卡?

GPU通用計算正在快速普及

??? ● GPU通用計算正在快速普及

??? GPU是半導體芯片領(lǐng)域少數(shù)發(fā)展迅速同時應(yīng)用范圍得到極大擴展的芯片。自誕生起,GPU就將摩爾定律的定義大大擴展。研究表明,從1993年開始,GPU的性能以每年2.8倍的速度增長,這個數(shù)字大大超過了PC其他子系統(tǒng)的發(fā)展速度。在高密度的大規(guī)模并行運算領(lǐng)域,GPU已經(jīng)完全有實力和傳統(tǒng)的CPU競爭。



GPU運算能力約為同等級CPU十倍

??? 截止2008年末,全球擁有1億顆以上支持通用計算與編程的GPU產(chǎn)品,開發(fā)人員超過了2.5萬人,全世界有50多所大學開設(shè)了GPU并行編程與應(yīng)用課程,包括中國科學院、清華大學等,一個基于GPU的計算生態(tài)圈已初步形成。普通玩家也應(yīng)該順應(yīng)潮流,不要固步自封只是把GPU當成娛樂工具,或者把CPU當作電腦中唯一的運算處理器,在更多領(lǐng)域大膽嘗試GPU這種高密度運算器的優(yōu)勢。相信通用計算項目在不久的將來也必將成為顯卡決勝的新戰(zhàn)場。


中關(guān)村在線顯卡頻道搭建的平臺

??? 上圖為中關(guān)村在線顯卡頻道搭建的Folding@hemo項目協(xié)同工作平臺,我們使用了一顆超頻到3.5GHz的i7-870處理器和一塊索泰公版GTX480顯卡。這套平臺同時運行了最近的GPU3客戶端和CPU-SMP2客戶端,并且使用了第三方FAHSPY軟件進行管理監(jiān)控。我們可以看到平臺的用戶名為zol.com.cn,加入團隊3213(中國隊)。借助于多線程處理器和Fermi架構(gòu)顯卡的幫助,這套平臺總運算速度達到了27454PPD。

??? 如果你沒有條件或者沒有必要購買超級計算機,又非常希望體驗GPU運算帶來的快感,參與體驗分子動力學原理的生命科學類Folding@home項目就是最好的選擇。只需要在斯坦福官方下載一個GPU版本客戶端,并使用一塊Geforce 8系列或者Radeon HD2系列或更高級別的顯卡,你的電腦即可變身為一臺高性能計算機。同時該項目屬于志愿者分布式計算項目,加入這些有益于人類的開放性項目后,你的幫助可以改變世界。

  這篇文章參考和引用了很多文獻,同時也是我個人通過Folding@home項目對GPU通用計算從淺顯認識到逐漸熟悉的過程,在這里感謝幫助過我的老師和朋友們,當然文章的完成更離不開China Folding@Home Power(Folding@Home中國3213團隊)那些充滿理想、守望信念的志愿者們。

??? 附:在中國分布式計算總站,我們?yōu)樽x者提供了比較簡潔明快的參與教程,很適合新手加入Folding@home項目:

????http://www.equn.com/forum/thread-21586-1-1.html

=============================================================

本文參考文獻:

[1]?NVIDIA?GeForce 8800 GTX測試報告
[2] NVIDIA's GT200——Inside a Parallel Processor
[3] 如何通過編程將GPU用于通用計算任務(wù)
[4] 現(xiàn)代GPU可解決數(shù)據(jù)并行處理問題
[5] 誰主沉浮 Open CL與CUDA架構(gòu)深入解析

總結(jié)

以上是生活随笔為你收集整理的从Folding@home项目看GPU通用计算发展的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。