雙劍合璧:CPU+GPU異構計算完全解析


引用自:http://tech.sina.com.cn/mobile/n/2011-06-20/18371792199.shtml

這篇文章寫的深入淺出,把異構計算的思想和行業趨勢描述的非常清楚,難得一見的好文章。按捺不住轉一下。^_^

 

相對於串行計算,並行計算可以劃分成時間並行和空間並行時間並行即流水線技術,空間並行使用多個處理器執行併發計算,當前研究的主要是空間的並行問題。以程序和算法設計人員的角度看,並行計算又可分爲數據並行和任務並行數據並行把大的任務化解成若干個相同的子任務,處理起來比任務並行簡單。

雙劍合璧:CPU+GPU異構計算完全解析

並行計算,解放不堪重負的處理器

空間上的並行導致兩類並行機的產生,按照麥克·弗萊因(Michael Flynn)的說法分爲單指令流多數據流(SIMD)和多指令流多數據流(MIMD),而常用的串行機也稱爲單指令流單數據流(SISD)MIMD類的機器又可分爲常見的五類:並行向量處理機(PVP)、對稱多處理機(SMP)、大規模並行處理機(MPP)、工作站機羣(COW)分佈式共享存儲處理機(DSM)。

從自然哲學層面上來講:任何最爲複雜的事情,都可以被拆分成若干個小問題去解決這就是當今並行計算的哲學理論依據。然而在當今的雙路四路、八路甚至多路處理器系統中,並行計算的概念早已得到廣泛應用。目前業界最爲普及的並行計算規範就是OpenMP。

雙劍合璧:CPU+GPU異構計算完全解析

OpenMP:同構計算最爲普及的標準

雙劍合璧:CPU+GPU異構計算完全解析

OpenMP(Open Multi-Processing)是由OpenMP Architecture Review Board牽頭提出的,並已被廣泛接受的,用於共享內存並行系統的多線程程序設計的一套指導性註釋(Compiler Directive)OpenMP支持的編程語言包括C語言、C++和Fortran;而支持OpenMP的編譯器包括Sun Studio和Intel Compiler,以及開放源碼的GCC和Open64編譯器OpenMP提供了對並行算法的高層的抽象描述,程序員通過在源代碼中加入專用的pragma來指明自己的意圖,由此編譯器可以自動將程序進行並行化,並在必要之處加入同步互斥以及通信當選擇忽略這些pragma,或者編譯器不支持OpenMP時,程序又可退化爲通常的程序(一般爲串行),代碼仍然可以正常運作,只是不能利用多線程來加速程序執行

雙劍合璧:CPU+GPU異構計算完全解析

OpenMP的特色

OpenMP提供的這種對於並行描述的高層抽象降低了並行編程的難度和複雜度,這樣程序員可以把更多的精力投入到並行算法本身,而非其具體實現細節對基於數據分集的多線程程序設計,OpenMP是一個很好的選擇。同時,使用OpenMP也提供了更強的靈活性,可以較容易的適應不同的並行系統配置。線程粒度和負載平衡等是傳統多線程程序設計中的難題,但在OpenMP中,OpenMP庫從程序員手中接管了部分這兩方面的工作

OpenMP的缺點

作爲高層抽象,OpenMP並不適合需要複雜的線程間同步和互斥的場合OpenMP的另一個缺點是不能在非共享內存系統(如計算機集羣)上使用。由此如果我們想將不同類型的計算器、計算機聯和起來,協同工作。我們就需要使用異構計算技術。

雙劍豈可合璧:什麼是異構計算?

異構計算(Heterogeneous computing)主要是指使用不同類型指令集和體系架構的計算單元組成系統的計算方式常見的計算單元類別包括CPU、GPU等協處理器、DSP、ASICFPGA等。

異構計算近年來得到更多關注,主要是因爲通過提升CPU時鐘頻率和內核數量而提高計算能力的傳統方式遇到了散熱和能耗瓶頸而與此同時,GPU等專用計算單元雖然工作頻率較低,具有更多的內核數和並行計算能力,總體性能-芯片面積比和性能-功耗比都很高,卻遠遠沒有得到充分利用

廣義上,不同計算平臺的各個層次上都存在異構現象,除硬件層的指令集、互聯方式、內存層次之外,軟件層中應用二進制接口API、語言特性底層實現等的不同,對於上層應用和服務而言,都是異構的。

從實現的角度來說,異構計算就是制定出一系列的軟件與硬件的標準,讓不同類型的計算設備能夠共享計算的過程和結果同時不斷優化和加速計算的過程,使其具備更高的計算效能。

雙劍合璧:CPU+GPU異構計算完全解析

計算的發展歷程:從32bit到異構計算(上)

2003年以前,是32bit的時代處理器製造廠商,不斷提升製造工藝技術,使用更精細的製程來製造處理器。同時也不斷提高處理器的時脈,如133MHz、166MHz200MHz、300MHz……最終頻率提升到了3GHz後,就難作寸進了。到目前爲止我們也未曾見到Intel和AMD發佈高於4GHz主頻的處理器產品。

2003年出現了x86-64,有時會簡稱爲“x64”,是64位微處理器架構及其相應指令集的一種,也是Intel x86架構的延伸產品“x86-64”1999由AMD設計,AMD首次公開64位集以擴充給IA-32,稱爲x86-64(後來改名爲AMD64)其後也爲英特爾所採用,現時英特爾稱之爲“Intel 64”,在之前曾使用過Clackamas Technology (CT)IA-32e及EM64T。外界多使用"x86-64"或"x64"去稱呼此64位架構,從而保持中立,不偏袒任何廠商

AMD64代表AMD放棄了跟隨Intel標準的一貫作風,選擇了像把16位的Intel 8086擴充成32位的80386般,去把x86架構擴充成64位版本,且兼容原有標準

AMD64架構在IA-32上新增了64位暫存器,併兼容早期的16位和32位軟件,可使現有以x86爲對象的編譯器容易轉爲AMD64版本除此之外,NX bit也是引人注目的特色之一。

不少人認爲,像DEC Alpha般的64位RISC芯片,最終會取代現有過時及多變的x86架構但事實上,爲x86系統而設的應用軟件實在太龐大,成爲Alpha不能取代x86的主要原因,AMD64能有效地把x86架構移至64位的環境,並且能兼容原有的x86應用程序

雙劍合璧:CPU+GPU異構計算完全解析

計算的發展歷程:從32bit到異構計算(下)

2006年出現了雙核心多核心多核心,也叫多微處理器核心是將兩個或更多的獨立處理器封裝在一起的方案,通常在一個集成電路(IC)中雙核心設備只有兩個獨立的微處理器一般說來,多核心微處理器允許一個計算設備在不需要將多核心包括在獨立物理封裝時執行某些形式的線程級併發處理(Thread-Level Parallelism,TLP)這種形式的TLP通常被認爲是芯片級多處理在遊戲中你必須要使用驅動程序來利用第二顆核心

此後處理器製造廠商發現,利用多核心架構可以在不提升處理器頻率的情況下,繼續不斷提升處理器的效能

2008年通用計算GPGPU

通用圖形處理器(General-purpose computing on graphics processing units,簡稱GPGPU),是一種利用處理圖形任務的圖形處理器來計算原本由中央處理器處理的通用計算任務這些通用計算常常與圖形處理沒有任何關係。由於現代圖形處理器強大的並行處理能力和可編程流水線,令流處理器可以處理非圖形數據特別在面對單指令流多數據流(SIMD),且數據處理的運算量遠大於數據調度和傳輸的需要時,通用圖形處理器在性能上大大超越了傳統的中央處理器應用程序

3D顯示卡的性能從NVIDIA的GeForce256時代就頗受矚目,時間到了2008年,顯示卡的計算能力開始被用在實際的計算當中並且其處理的速度也遠遠超越了傳統的x86處理器。

雙劍合璧:CPU+GPU異構計算完全解析

2010年CPU+GPU異構計算

對於GPGPU表現出的驚人計算能力叫人爲之折服,但是在顯卡進行計算的同時,處理器處於閒置狀態由此處理器廠商也想參與到計算中來,他們希望CPU和GPU能夠協同運算,完成那些對計算量有着苛刻要求的應用同時也希望將計算機的處理能力再推上一個新的高峯

雙劍合璧:CPU+GPU異構計算完全解析

異構計算要求CPU和GPU協同運算

天河星雲:異構計算大顯神威

國際TOP500組織TOP500.org在網站上公佈了最新全球超級計算機TOP500強排行榜,由國防科學技術大學研製,部署在國家超級計算天津中心,中國千萬億次超級計算機“天河一號”位居第一位,實測運算速度可以達到每秒2570萬億次

“天河一號”耗資6億元,連接了上萬個美國英特爾和Nvidia公司製造的CPU和GPU,屬異構混合架構在過去一年裏,天河一號進行了大升級,目前的配置是14336顆英特爾六核至強X5670 2.93GHz CPU和7168顆Nvidia Tesla M2050 GPU和2048顆自主研發的八核飛騰FT-1000 CPU處理內核數突破20萬顆,是去年24576顆的8.25倍

雙劍合璧:CPU+GPU異構計算完全解析

排名第三的是曙光公司研製的“星雲”高性能計算機,其實測運算速度達到每秒1270萬億次petaflop/s,千萬億次計算單位星雲系統峯值爲每秒3000萬億次(3PFlops),實測Linpack值每秒1271萬億次(1.271PFlops),是中國第一臺世界第三臺實測雙精度浮點計算超千萬億次的超級計算機。

星雲超級計算機採用自主設計的HPP體系結構,處理器是32nm工藝的六核至強X5650,並且採用了Nvidia Tesla C2050 GPU做協處理,由4640個計算單元組成它採用了高效異構協同計算技術,系統包括了9280顆通用CPU和4640顆專用GPGPU組成。計算網絡採用了單向40Gbps QDR Infiniband技術,核心存儲採用了自主設計的Parastor高速I/O系統

美國橡樹嶺國家實驗室的“美洲虎”超級計算機此前排名第一,在新榜單中,其排名下滑一位“美洲虎”的實測運算速度可達每秒1750萬億次。有趣的是中國的兩套系統和東京工業大學的系統,所使用的都是NVIDIA的GPU通用計算加速方案。事實上,在Top 500強超級計算機榜單中,有28套系統採用的是圖形處理器作爲通用計算加速有16套系統採用的是Cell處理器,其中有10套採用的是NVIDIA的芯片,有2套採用的是AMD的Radeon芯片目前的Top 500強中有10大系統超越了千萬億次大關這些超級計算機中有五套來自美國,而其他則來自中國,日本,法國,德國。

迥異:不同計算架構的特點

上文提到的採用的異構計算架構都屬於大型計算機的範疇對於個人計算機而言,尤其是x86架構的計算機,異構計算的步伐則要慢許多。這是因爲,無論是處理器還是顯示卡,又或者其他運算部件,都有其自身的架構和特性他們是針對不同領域,面向不同應用所設計的芯片。所以他們在功能性方面千差萬別。要想將他們都統一起來,除了需要制定共同的規範和標準之外,還要針對其計算的特點設計軟件。

雙劍合璧:CPU+GPU異構計算完全解析

舉例來說,CPU和GPU在進行計算時,就有許多不同對於處理器來說,它是一顆通用處理器。它要應對各種類型的計算應用。無論是數學方面的,還是邏輯方面的運算。我們可以看到,一顆比較常規的處理器其中的ALU計算單元僅僅佔據整個核心面積的25%以內在處理器中,超過50%的核心面積用來製作Cache高速緩存,無論是L1、L2還是片上的L3。而另外還有25%的核心面積用來作爲控制器。它控制着處理管線的運作,控制着各種分支預測,讓多核心處理器可以更有效率

而我們再反觀GPU,其結構要簡單的多。GPU的任務是加速3D像素的計算因此我們在顯卡中可以看到數以百計的流處理器單元或者是CUDA核心。而在整個計算過程中,GPU承擔的邏輯計算任務非常小同時它有着更寬的顯存帶寬,有着更高速的顯存。所以在GPU芯片中,也就無需更大容量的片上緩存機制。

通過上文的分析,我們可以看到CPU的在處理時,適合作所有工作,各個方面都比較平均邏輯處理能力要比GPU快,但是對於數學計算方面,其速度不如具有海量處理核心的GPU快。而GPU方面,數學計算性能強大,大規模並行處理機制強大,但是邏輯處理能力不足,僅僅能在某些計算領域應用

Llano核心解析:一個真正的異構計算芯片

AMD前不久發佈的新一代Llano處理器,是一顆真正意義上的異構計算處理器從這張這新架構圖中,我們可以看到Llano具備四個處理核心,每一顆核心具有不同類型的L1高速緩存。同時每一個處理核心具備512KB X 2的容量爲1MB的L2高速緩存由此在處理器的部分,構成了4MB的二級緩存。

在整個芯片接近50%的面積上,是GPU的部分一顆處理芯片同時包含了CPU和GPU的部分,這可以說是非常典型的異構計算架構。同時,在芯片的兩邊我們也可以看到高度集成的4個PCIe總線控制器,還有一個128bit位寬的DDR3內存控制器

這樣的異構計算芯片可以充分發揮不同計算部件的優勢。當需要進行較多邏輯計算時,可以使用CPU部分完成當需要大量的浮點運算時,可以借用GPU的浮點運算處理管線來完成。同時如果處理器的某些核心正處於空閒,也可以讓其加入到計算中來由此可見異構計算不僅僅是需要統一起不同類型的計算部件,同時也需要有針對性的讓更適合的硬件作適用的計算工作

雙劍合璧:CPU+GPU異構計算完全解析

新的計算架構需要全新的軟件標準

對於異構計算來說,更重要的軟件雖然現在我們看到許多計算機中都應用了GPGPU的通用計算,使用顯卡來進行大規模的並行計算任務,但是在這個過程中,處理器就被閒置了例如許多轉碼程序在運行的時候,僅僅是顯卡在跑,而處理器並未參與到轉碼加速中來將異構的運算部件,全部有效的調用起來,這是一件困難的編程工作。

如下圖所示,傳統意義上的多路處理器計算時,僅僅使用的是處理器的並行計算並未讓GPU加入到其中。而現在我們常說的GPGPU通用計算,包括NVIDIA的CUDA和AMD的Stream在計算的時候,也僅僅是GPU在跑,處理器是閒置的

雙劍合璧:CPU+GPU異構計算完全解析

 除了應用軟件之外,曾經我們耳熟能詳的評測軟件,也並未對異構計算作出優化無論是PCmark還是3Dmark,在這些軟體進行測試的時候,會將CPU和GPU利用不同的測試項目分別進行測試並沒有將它們合併在一起,進行有效的異構計算。

雙劍合璧:CPU+GPU異構計算完全解析

Sysmark僅僅是建立許多計算任務,然後讓系統來跑,這僅僅是針對的是處理器的部分而Chinebench系列的軟體,僅僅是考察的CPU的渲染性能。對於多核心和超線程雖然有很好的支持,但是並未讓GPU加入測試如你所見,目前針對x86或者臺式機平臺的異構計算軟件少之甚少,甚至連一款像樣的異構計算評測軟件都無有。

CUDA:在夾縫中掙扎求存

CUDA(Compute Unified Device Architecture,統一計算架構)是由NVIDIA所推出的一種集成技術,是該公司對於GPGPU的正式名稱通過這個技術,用戶可利用NVIDIA的GeForce 8以後的GPU和較新的Quadro GPU進行計算亦是首次可以利用GPU作爲C-編譯器的開發環境。NVIDIA營銷的時候,往往將編譯器與架構混合推廣,造成混亂。實際上,CUDA架構可以兼容OpenCL或者自家的C-編譯器無論是CUDA C-語言或是OpenCL,指令最終都會被驅動程序轉換成PTX代碼,交由顯示核心計算。

雙劍合璧:CPU+GPU異構計算完全解析

以GeForce 8800 GTX爲例,其核心擁有128個內處理器利用CUDA技術,就可以將那些內處理器串通起來,成爲線程處理器去解決數據密集的計算。而各個內處理器能夠交換同步和共享數據。利用NVIDIA的C-編譯器,通過驅動程序,就能利用這些功能。亦能成爲流處理器,讓應用程序利用進行運算。GeForce 8800 GTX顯示卡的運算能力可達到520GFlops,如果建設SLI系統,就可以達到1TFlops

利用CUDA技術,配合適當的軟件(例如MediaCoder),就可以利用顯示核心進行高清視頻編碼加速視頻解碼方面,同樣可以利用CUDA技術實現此前,NVIDIA的顯示核心本身已集成PureVideo單元。可是,實現相關加速功能的一個微軟API-DXVA,偶爾會有加速失效問題所以利用CoreAVC配合CUDA,變相在顯示核心上實現軟件解碼,解決兼容性問題。另外,配合適當的引擎,顯示核心就可以計算光線跟蹤NVIDIA就放出了自家的Optix實時光線跟蹤引擎,通過CUDA技術利用GPU計算光線跟蹤。

FireStream:慢慢淡出我們的視野

Firestream,是AMD旗下的品牌系列之一與Radeon(用於消費級顯卡)和FirePro(用於專業顯卡)不同,FireStream主要用於AMD的高性能計算卡系列FireStream產品中的GPU不是用來作3D加速用途,而是利用GPU內置的流處理器變成一羣並行處理器,作爲浮點運算協處理器,協助中央處理器計算複雜的浮點運算程序,例如複雜的科學運算Firestream的競爭對手是nVIDIA的Tesla系列高性能計算卡。

早在數年前,人們就意識到GPU不但可以處理圖形數據,還可以處理其他數據BionicFX就試過利用GeForce 6800處理音頻數據,ATI亦做過同樣的試驗。而且史丹佛大學的Folding@Home研究項目亦可利用Radeon X1900作運算加速;通過GPU來模擬蛋白質合成,進而找尋有關蛋白質的疾病

雙劍合璧:CPU+GPU異構計算完全解析

第一個產品,FireStream 580,是建基於R580圖形芯片它將是一塊採用R580顯核的特殊顯示卡,R580顯示核心中的48個獨立的像素處理器能帶來強大的浮點運算性能該產品採用PCI Express x16作爲接口,流處理器的頻率是600 MHz,可以同時運行512線程,並配備了1GB GDDR3存儲器,頻率是1300 MHz並有可能使用多個核心併發處理數據。這個流處理器的功耗爲165瓦特。

雙劍合璧:CPU+GPU異構計算完全解析

FireStream 580

NVIDIA PhysX:最出色的GPGPU應用實例

PPU (Physics Processing Unit)

物理處理單元,即 PPU,是一種特別爲減輕 CPU 計算,尤其是物理運算部分的處理器這概念類似於對上10年間GPU。在現代 計算機中,GPU用於處理 矢量圖形,並且延伸到3D圖形。但GPU對物理處理無能爲力,故目前大部分物理處理都交給CPU處理,這無疑是加重了CPU本來就不輕的負擔

雙劍合璧:CPU+GPU異構計算完全解析

NVIDIA PhysX

PhysX 是一套由 AGEIA 設計的執行復雜的物理運算的PPU,又可以代表一款物理引擎AGEIA 聲稱,PhysX 將會使設計師在開發遊戲的過程中,使用複雜的物理效果,而不需要像以往那樣,耗費漫長的時間開發一套物理引擎以往使用了物理引擎,還會使一些配置較低的電腦,無法流暢運行遊戲。AGEIA 更宣稱 PhysX 執行物理運算的效率,比當前的 CPU 與物理處理軟件的組合高出 100 倍遊戲設計語言 Dark Basic Pro 將會支持 PhysX,並允許其用戶利用 PhysX 執行物理運算在 2005年7月20日,索尼同意在即將發售的 PlayStation 3 中使用 AGEIA 的 PhysX 和它的 SDK —— NovodeX現時,AGEIA公司己被NVIDIA收購,相關的顯卡亦可以加速該物理引擎。

雙劍合璧:CPU+GPU異構計算完全解析

NVIDIA PhysX是一種功能強大的物理加速引擎,可在頂級PC和遊戲中實現實時的物理學計算PhysX軟件被廣泛應用於數百個遊戲中,軟件註冊用戶數量已超過20,000名。索尼的Playstation 3、微軟的Xbox 360任天堂的Wii以及個人計算機均支持PhysX。

PhysX設計用途是利用具備數百個內核的強大處理器來進行硬件加速加上GPU超強的並行處理能力,PhysX將使物理加速處理能力呈指數倍增長並將您的遊戲體驗提升至一個全新的水平,在遊戲中呈現豐富多彩身臨其境的物理學遊戲環境。

OpenCL:無人能模仿 很難被超越

2008年6月的WWDC大會上,蘋果提出了OpenCL規範,旨在提供一個通用的開放API,在此基礎上開發GPU通用計算軟件隨後,Khronos Group宣佈成立GPU通用計算開放行業標準工作組,以蘋果的提案爲基礎創立OpenCL行業規範

OpenCL (Open Computing Language,開放計算語言) 是一個爲異構平臺編寫程序的框架,此異構平臺可由CPU,GPU或其他類型的處理器組成OpenCL由一門用於編寫kernels(在OpenCL設備上運行的函數)的語言(基於C99)和一組用於定義並控制平臺的API組成OpenCL提供了基於任務分區和數據分區的並行計算機制。

  OpenCL類似於另外兩個開放的工業標準OpenGL和OpenAL,這兩個標準分別用於三維圖形和計算機音頻方面OpenCL擴展了GPU用於圖形生成之外的能力。OpenCL由非盈利性技術組織Khronos Group掌管

雙劍合璧:CPU+GPU異構計算完全解析

OpenCL最初蘋果公司開發,擁有其商標權,並在與AMD,IBM,英特爾和nVIDIA技術團隊的合作之下初步完善隨後,蘋果將這一草案提交至Khronos Group。2010年6月14日,OpenCL 1.1 發佈

OpenCL:奠定了異構計算的基礎

雖然蘋果制定OpenCL的私心路人皆知,希望通過OpenGL來讓自家的Mac電腦可以順利的使用兩個顯卡巨頭的產品做GPGPU運算但是蘋果的這一舉措卻爲未來的x86平臺異構計算奠定了堅實的基礎因爲無論是CUDA還是FireStream,無論是CUDA核心還是流處理器,軟件開發人員都可以通過OpenCL來支持

雙劍合璧:CPU+GPU異構計算完全解析

中國用戶可以登錄英偉達中文官方網站上下載到最新的驅動程序,只要您下載的驅動是195.62版本或更高,就可以在Geforce 8系列或更高級的顯卡中開啓OpenCL,在安裝好新版本的顯卡驅動程序並重新啓動後,OpenCL就自動開啓了當有需要使用CPU來完成的工作如轉換視頻時,GPU代替CPU進行運算,以提高轉換速度但是在3D遊戲中應該是不會調用OpenCL的,因爲顯卡有自己的硬件加速功能以及物理引擎。

雙劍合璧:CPU+GPU異構計算完全解析

當然同樣,在NVIDIA的Quadro系列專業顯卡中,同樣能夠使用OpenCL技術只要您的顯卡能夠達到CUDA的要求,就能夠正常使用OpenCL,以獲得優異的CPU運算效率。

在AMD-ATI的Stream技術中,已經爲日常使用辦公、遊戲等提供物理加速。原理與OpenCL基本相同,但是,目前AMD-ATI還沒有進行推廣,但是官方承諾,在日後會逐漸增多Stream支持的遊戲但是Stream使用的顯卡平臺還是比較高,而性能非常優異的顯卡無疑帶來更高昂的價格,我們也同樣希望AMD能夠做到像NVIDIA那樣,只需要支持DirectX10的顯卡就能開啓OpenCL,以方便更多的AMD-ATI用戶Geforce 8系列以上的顯卡能完美支持DirectX10,所以官方將開啓OpenCL的顯卡最低定爲8系列

DirectCompute:立足DX11,應用廣泛

Microsoft DirectCompute是一個應用程序接口(API),允許Windows Vista或Windows 7平臺上運行的程序利用圖形處理器(GPU)進行通用計算,DirectCompute是Microsoft DirectX的一部分雖然DirectCompute最初在DirectX 11 API中得以實現,但支持DX10的GPU可以利用此API的一個子集進行通用計算,支持DX11的GPU則可以使用完整的DirectCompute功能

雙劍合璧:CPU+GPU異構計算完全解析

顯卡對DirectX的支持程度影響可用的DirectCompute版本:

DirectX 10:DirectCompute 4.0
DirectX 10.1:DirectCompute 4.1
DirectX 11:DirectCompute 5.0

雙劍合璧:CPU+GPU異構計算完全解析

AMD開始全面支持異構計算

相比OpenGL豐富的功能和體系化的SDK來說,DirectCompute僅僅是以一個簡單的API存於世上,顯然不能贏得更多廠商的關注由此微軟又醞釀了C++ AMP……且看下文分解。

Llano:融聚今宵 真正的異構計算平臺

這是AMD近期發佈的最強Llano處理器,具有劃時代的意義,具備真正的異構計算架構AMD A8-3850配備了四個主頻2.9GHz的CPU核心,不過遺憾的是A8-3850並不支持Turbo Core自動超頻在GPU方面,A8-3850配備的是一顆完整功能的Radeon HD 6550D,該GPU核心配備了400個流處理器,核心頻率爲600MHz

雙劍合璧:CPU+GPU異構計算完全解析

A8-3850 APU處理器,採用Llano核心

實際上A8-3850 APU處理器的集成GPU核心性能平均要比Core i5 2500K快58%左右如果我們只考慮在遊戲裏的峯值性能的話,在類似於《現代戰爭2》這樣的遊戲裏,最新Llano桌面APU的GPU在幀頻表現上是可以達到Sandy Bridge兩倍的,這也再次證明了英特爾集成GPU在遊戲領域的尷尬至於Llano的GPU性能,相信這纔是玩家們最喜聞樂見的。

雖然我們也認爲Sandy Bridge在集成GPU性能方面是不錯的入門選擇,但是至少在2011年,Llano桌面APU仍然是懂行玩家最該做出的選擇值得注意的在這些測試裏,測試方隨後還爲Core i5 2500K GPU安裝了最新的2372驅動程序,結果證明大部分的結果仍然沒有改變,不過在少數領域英特爾發掘出了更多的潛力無論如何,在GPU測試裏,AMD的Llano桌面APU A8-3850發揮出了令人印象深刻的性能。

雙劍合璧:CPU+GPU異構計算完全解析

Socket-FM1接口

C++ AMP:微軟發佈異構計算編程語言

雙劍合璧:CPU+GPU異構計算完全解析

自從AMD發佈了Llano處理器,異構計算就真正進入了尋常百姓的家中雖然OpenCL作爲通用大規模並行計算的行業領軍標準,得到了AMD、Intel、NVIDIA等芯片業巨頭和大量行業廠商的支持,但唯獨缺少了微軟。

近日在AMD Fusion開發者峯會上,微軟終於拿出了自己的異構計算編程語言:“C++ AMP”,其中AMP三個字母是“accelerated massive parallelism”的縮寫,也就是加速大規模並行的意思

雙劍合璧:CPU+GPU異構計算完全解析

微軟的“異構並行計算”

C++ AMP是微軟Visual Studio和C++編程語言的新擴展包,用於輔助開發人員充分適應現在和未來的高度並行和異構計算環境它使用C++語言的句法,將捆綁在下個版本的Visual Studio中發佈,預計會在今年晚些時候放出測試版本

爲了與OpenCL相抗衡,微軟宣佈C++ AMP標準將是一種開放的規範,允許其它編譯器集成和支持這無疑是對OpenCL的最直接挑戰

雙劍合璧:CPU+GPU異構計算完全解析

C++ AMP的威力:剛體模擬性能綻放(上)

爲了展示了C++ AMP的威力,微軟現場運行了一個“剛體模擬”程序一個可執行文件能夠在多臺計算機和設備上同時運行這裏我們可以看到,Llano APU x86處理器可以貢獻出3GFlops的計算量。Llano APU的顯示核心與處理核心協同工作,可以提供500GFlops的計算量另外,Llano APU和Radeon HD 5800可以提供1000多GFlops的計算量,模擬4萬多個粒子即使是AMD的E-350這樣的僅有18W的低功耗筆記本處理器也可以提供16GFlops的計算量,能夠模擬16000多個粒子

雙劍合璧:CPU+GPU異構計算完全解析

E-350的CPU部分,可以得到3.2GFlops的計算量

雙劍合璧:CPU+GPU異構計算完全解析

僅僅可以模擬4096多個剛體粒子

雙劍合璧:CPU+GPU異構計算完全解析

請注意這裏鼠標所指示的運算量

C++ AMP的威力:剛體模擬性能綻放(中)

雙劍合璧:CPU+GPU異構計算完全解析

模擬的剛體粒子數量增加到5120個

雙劍合璧:CPU+GPU異構計算完全解析

CPU與GPU核心,聯合運算,可以提供60GFlops的運算量

雙劍合璧:CPU+GPU異構計算完全解析

下面加入更多剛體粒子

雙劍合璧:CPU+GPU異構計算完全解析

小貼士:什麼是剛體?

在任何力的作用下,體積和形狀都不發生改變的物體叫做剛體(Rigid body)在物理學內,理想的剛體是一個固體的,尺寸值有限的,形變情況可以被忽略的物體。不論有否受力,在剛體內任意兩點的距離都不會改變在運動中,剛體上任意一條直線在各個時刻的位置都保持平行。

C++ AMP的威力:剛體模擬性能綻放(下)

雙劍合璧:CPU+GPU異構計算完全解析

加入更多剛體粒子,模擬20160個

雙劍合璧:CPU+GPU異構計算完全解析

Llano APU可以貢獻出500GFlops的計算量,這與AMD之前宣稱的個人超級計算機的口號屬實

雙劍合璧:CPU+GPU異構計算完全解析

  剛體的模擬數量達到了40960個的時候,就需要極大的計算量才能保證穩定輸出30fps的幀率下面這張圖,你可以看到在聯合了兩臺臺式機之後,計算量接近1TFlops。

雙劍合璧:CPU+GPU異構計算完全解析

一觸即發:異構計算行業標準大戰

NVIDIA並未獲得Intel關於x86架構的授權,就連開發x86的模擬器的自由都被封殺無奈之下CUDA也僅僅是GPGPU的單獨運算。OpenCL是免費開放的,也是目前異構計算的唯一選擇。

而微軟的C++ AMP會與Windows緊密貼合起來。雖然也屬於開放性的標準,但是微軟對其未來方向的掌控,其執行應該更有效力OpenCL有多家主力廠商支持,技術紛爭不斷,爲了自家產品的利益難免在新版本制定方面出現歧路。現在的局面就有點類似曾經OpenGL對決DirectX的時代,不知道這次微軟是否還能夠全面勝出

雙劍合璧:CPU+GPU異構計算完全解析

上面這張圖表明,如果你的計算量僅有630GFlops的話,你的幀數僅僅能維持在19fps左右

發佈了1 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章