CUDA vs GPGPU

http://www.kuqin.com/hardware/20080830/15726.htmlhtml

一 在硬件和軟件之間選擇 
    「計算機軟件和硬件的邏輯等價性」是計算機組成原理中一個很是重要的理論,意思是指計算機硬件可以完成的功能,邏輯上都能經過軟件來一樣實現。這一理論帶來的實際好處是,使得咱們今天的使用的計算機日趨小型化,成本和價格不斷下降。好比,多年前咱們須要用解壓卡才能在PC上觀看影碟,今天咱們只需經過視頻播放軟件就行,固然這些都得益於偉大的「摩爾定律」在過去一直髮揮的神奇功效。 

    全部的硬件廠商,都掙扎在軟件和硬件之間。在設計研發產品時,一樣的功能,使用硬件的方式實現仍是軟件,他們一直在作着艱難的選擇。固然,大部分的選擇都會受制於當時的其它外圍軟硬件計算環境。 

    然而,隨着時間的推移和技術的發展,硬件技術廠商也感受愈來愈難以完成「摩爾定律」的預期,業界對此定律懷疑的聲音也甚囂塵上。這些懷疑的聲音也讓愈來愈多的人認識到,並非全部的硬件都能被或者應該被軟件替代,特別是在某些特定的計算領域,如圖造成像,多媒體數據處理等。咱們不難注意到,在計算機體系結構的發展過程當中,大量的硬件已經消失了,可是,部分核心的硬件設備在計算機體系結構中勢必會長期存在。這種硬件不斷消亡的過程和趨勢,會加重計算機中所剩無幾的硬件設備之間的相互爭奪,爭奪在這個體系結構中的霸主地位。

    目前業界Intel爲表明的CPU芯片廠商和獨立顯卡提供商NVIDIA之間的關於CPU和GPU之爭,正是在這種背景下生的。 
儘管從當前來看,在一臺均衡計算的計算機系統中,CPU和GPU仍是各司其職,除了圖形運算,GPU主要集中在高效率低成本的高性能並行數值計算,幫助CPU分擔這種類型的計算,提升系統這方面的性能。 

    GPU的計算能力不斷增強,能部分取代CPU的計算功能是不爭的事實,當NVIDIA經過收購物理處理器廠商AGEIA,推出CUDA(統一計算設備架構)以後,一個讓CPU廠商坐立不安的局面彷佛要出現了。

    
 
    Cuda作爲一個可編程的GPU計算架構,若是這種可編程架構可以影響甚至主導前端的應用,的確可以帶給人無盡的遐想。CUDA是否會影響將來企業計算的格局呢? 

資料: 
    CPU微架構的設計是面向指令執行高效率而設計的,於是CPU是計算機中設計最複雜的芯片。和GPU相比,CPU核心的重複設計部分很少,這種複雜性不能僅以晶體管的多寡來衡量,這種複雜性來自於實現:如程序分支預測,推測執行,多重嵌套分支執行,並行執行時候的指令相關性和數據相關性,多核協同處理時候的數據一致性等等複雜邏輯。

    GPU實際上是由硬件實現的一組圖形函數的集合,這些函數主要用於繪製各類圖形所須要的運算。這些和像素,光影處理,3D 座標變換等相關的運算由GPU硬件加速來實現。圖形運算的特色是大量同類型數據的密集運算——如圖形數據的矩陣運算,GPU的微架構就是面向適合於矩陣類型的數值計算而設計的,大量重複設計的計算單元,這類計算能夠分紅衆多獨立的數值計算——大量數值運算的線程,並且數據之間沒有像程序執行的那種邏輯關聯性。 

    所以從微架構上看,CPU擅長的是像操做系統、系統軟件和通用應用程序這類擁有複雜指令調度、循環、分支、邏輯判斷以及執行等的程序任務。它的並行優點是程序執行層面的,程序邏輯的複雜度也限定了程序執行的指令並行性,上百個並行程序執行的線程基本看不到。GPU擅長的是圖形類的或者是非圖形類的高度並行數值計算,GPU能夠容納上千個沒有邏輯關係的數值計算線程,它的優點是無邏輯關係數據的並行計算。

    CPU擅長的:操做系統,系統軟件,應用程序,通用計算,系統控制等等;遊戲中人工智能,物理模擬等等;3D建模-光線追蹤渲染;虛擬化技術——抽象硬件,同時運行多個操做系統或者一個操做系統的多個副本等等。 
GPU擅長的:圖形類矩陣運算,非圖形類並行數值計算,高端3D遊戲。
前端

二 GPU與CPU之爭對企業計算的影響 
    客觀地講,在這兩者的爭論沒有明確的勝負以前,不會給企業計算帶來任何影響,企業計算領域對任何趨勢性的技術的反應程度相較我的領域,每每要慢上3-5年。 

   回憶一下,2008年的IDF大會在這個問題上顯得火藥味十足。英特爾高級副總裁兼數字企業事業部總經理基辛格在演講中表示:「在下一代視覺計算中,顯卡產業已經走到了盡頭,取而代之的是可編程的顯示計算通用架構芯片。在三四年以後,隨着相關技術、產品成熟上市,顯卡產業將會消亡。」 

   按照他的觀點,隨着CPU在將來應用中佔據愈來愈重要的地位,顯卡會慢慢被集成化所取代。GPU將最終成爲CPU的「一部分」。在具體動做上,也身體力行,英特爾開發了一套面向可編程的顯示計算通用架構芯片的全新架構———Larrabee架構,這種架構可支持更多的可編程核心。英特爾但願經過推出CPU新架構,令CPU內整合圖形處理芯片成爲現實。 

   英特爾「顯卡走到盡頭」的觀點馬上引發獨立顯卡龍頭廠商NVIDIA的強烈反擊。NVIDIA的CEO黃仁勳甚至公開質疑英特爾的整合圖形芯片組「徹底是一個笑話」。
 
   NVIDIA的副總裁RoyTaylor更是直言,「CPU與GPU的戰爭已經開始,CPU已死亡。」他稱,「如今PC裏惟一須要提高性能的是GPU,而這就是NVIDIA努力的方向。」NVIDIA提出的「GPGPU(通用圖形處理器)」的概念,就是要將CPU整合到GPU中去 

   筆者認爲,GPU和CPU目前的競爭目標有些錯位,你們都是但願能互相取代對方,而不是優點互補。而優點互補是目前能看到的結局,固然不排除這期間廠商突破某些核心技術。 

   據瞭解,CUDA GPU運算普遍適用於須要處理大量數據的應用。例如,在遊戲中咱們可使用CUDA來讓GPU承擔整個物理計算,而玩家將會得到另他們感到驚奇的性能和視覺效果。另外,用於產品開發和巨量數據分析的商業軟件也能夠經過它來使用一臺工做站或者服務器完成之前須要大規模的計算系統才能完成的工做。這一技術突破使得客戶能夠任何地方進行實時分析與決策。同時,一些之前須要很先進的計算技術來達到的強大計算能力的科學應用程序,也再也不受限在計算密度上;使用CUDA的計算能夠在現有的空間裏爲平臺提供更強大的計算性能。 

   咱們知道,企業計算的核心問題是性能和高可用,Cuda在性能方面給出了單使用CPU沒法達到的完美憧憬,不過其編程難度也不容忽視。Cuda若是想在基於通用計算模式的大量企業應用中有所做爲,必須解決編程的難度和編譯工具的易用性。衆所周知,即使在通用計算領域,能熟練開發多線程和分佈式應用的程序員也不是不少。 

   就cuda目前提供的應用案例來看,其應用分佈在科學計算和高性能應用方面,如分子動力學模擬、傅立葉立體成像等仿真和模擬計算等。CUDA技術的創始人之一David Kirk博士在清華講座時提到了一些基於cuda的有趣應用。中科院物理所的一位老師作的分子流體模擬,就是把分子的範德化力(其模型相對複雜)考慮進去。他製做了一個包含幾億個分子水滴,而後進行 模擬。因爲每一個水滴之間的範德華力只在周圍的範圍內有效,所以能夠把每一個分子的受力情況看作是不相干的或弱相干的。這種應用場景,就很是適於CUDA。 

   上面的例子是在科學計算領域,如何將cuda的高性能計算擴展到常規的高性能企業應用,好比,讓一個基於cuda的服務程序來處理手機短信網關收到的上千萬條併發短信請求。
 
   再好比股票分析軟件。它是以複雜計算爲基礎,進行整個美國股市的實時分析的一個軟件。因爲股票之間的狀況異常複雜,形成經濟學上的公式沒法準確預測時間稍微一點的大盤狀況。然而,有了CUDA,咱們就能夠在幾百毫秒以內計算出當前的全美的大盤走勢,這一般將花費數分鐘時間,等咱們獲得結果以後,它已經沒用了。CUDA讓股票分析軟件從不可能成爲了可能。 
當有許多相似於這樣的應用產生時,cuda架構才真正走進了企業計算。程序員

三 Cuda編程如何普及 
   下降cuda編程的難度是普及cuda編程的基本條件。 

   儘管CUDA運行在GPU上,「CUDA編程」和「GPGPU編程」並不相同。之前,爲GPU編寫軟件意味着使用GPU語言編程。CUDA容許開發者使用熟悉的編程概念開發能在GPU上運行的軟件。它能夠經過將軟件直接編譯到硬件(例如,GPU彙編語言)避免圖形層API的性能開銷,這樣能夠提供更好的性能。 

   儘管cuda編程相比傳統GPU編程已經接近了開發者不少,可是有開發人員在嘗試後發現,CUDA編程的難度仍是至關大。一位名叫Bryan O"Sullivan的研發人員表示,CUDA的複雜性使人難以置信,迫使程序員不得不在三種不一樣的存儲器類型、繁複的線程層次、沒法自動完成多數任務的編譯器之間苦苦掙扎。他在博客說:「細細閱讀開發說明是很是有必要的,否則就沒法理解CUDA是多麼複雜,以及開發人員不得不一樣時記住多少不一樣的條條框框。」 

   畢竟傳統計算模式下的編程發展了多年,輕鬆的編程方式和快捷的工具數不勝數。Cuda想要俘獲開發人員還須要在這些方面作更多的努力。 

資料: 
使用CUDA的軟件開發 
   CUDA開發包是一個完整的使用GPU的軟件開發方案。在SDK包含了標準的FFT和BLAS庫、使用NV GPU的C編譯器和運行時驅動。CUDA運行時驅動是與經常使用的同DX和GL協同工做的驅動獨立的。同時CUDA對Linux和XP的支持也是相同的。 

技術特性
CUDA爲線程計算提供了一個統一的硬件和軟件解決方案來使用支持CUDA的GPU 
可支持CUDA的GPU爲高性能計算提供並行數據緩衝和線程執行管理器的支持 
能夠在GPU上使用的標準C語言 
提供了標準數值庫FFT和BLAS 
爲計算提供了獨立的CUDA驅動 
優化了GPU和CPU之間的數據通訊路徑 
CUDA驅動能夠在圖形設備之間互操做 
支持 LINUX 與 XP 操做系統 
從高性能的專業圖形解決方案到移動和嵌入式GPU均能使用 
爲高計算密度程序內建多GPU支持 
爲程序開發和優化提供硬件調試的性能測試的支持編程

四 cuda技術展望 
    近期盛行於網絡的IT十大技術預測中,其中提到一條,從此10年以內,將會出現集成了操做系統的主板。這個預測的本質無非是向人們彰顯芯片技術的發展以及硬件的力量。在處理器芯片向多核邁進的同時,計算機的計算能力也從CPU向橫向的硬件設備發展,這就是計算機系統結構中的多計算單元架構。 

    集成了高性能芯片的其它計算單元帶來的計算革命將是罕見和空前的,它將會給從此的軟件開發技術帶來極大的挑戰,而基於GPU的cuda技術架構即是其中的先行者。 

    GPGPU是一個神奇的事物,由於若是處理得好的話,那麼能夠幾千倍的打破摩爾定律,而跳躍到下一個時代。GPGPU的問題就在於編程的痛苦性過高, CUDA就是爲此目的而設計,儘管編程難度還需進一步下降,但至少已經使開發者能夠依據現有經驗編程了。 

    正如David Kirk博士所言,計算性能提升十倍會使如今的工具變得很方便,計算性能提升一百倍會使如今的軟件更新換代。而計算性能提升一千倍,則會完全改變人們的工做方式。曾經不可能的慢慢變爲可能。咱們期待着CUDA技術以及將來的新的GPGPU技術可以帶領咱們走向新的時代!服務器

相關文章
相關標籤/搜索