圖形巨頭NVIDIA推出的GPU通用計算技術CUDA相信大家都有所瞭解,然而隨著Windows 7逐漸成為熱門的關注對象,有一部分人對Windows 7是否支援CUDA、能否很好的支援CUDA產生了質疑。原因很直接——因為Windows 7支援微軟自家的Direct compute!
但事實真的是這樣嗎?今天,筆者就再一次針對CUDA的概念、架構等進行剖析,並且分別在Windows Vista與Windows 7作業系統上對CUDA效能進行對比測試,以達到撥亂反正的效果。
在進行正式的對比評測之前,我們首先必須要瞭解CUDA到底是什麼?而筆者也發現正是因為很多人沒有對CUDA進行真正準確客觀的瞭解,才導致了對CUDA和Direct Compute的誤解。我們先來看看NVIDIA官方如何解釋CUDA這個概念:
CUDA是一種由NVIDIA推出的通用並行計算架構,該架構使GPU能夠解決複雜的計算問題。它包含了CUDA指令集架構(ISA)以及GPU內部的並行計算引擎。開發人員現在可以使用C語言來為CUDA架構編寫程式,C語言是應用最廣泛的一種進階程式設計語言。所編寫出的程式於是就可以在支援CUDA的處理器上以超高效能運行。將來還會支援其它語言,包括FORTRAN以及C++。
NVIDIA提供的CUDA開發包中的C語言編譯器版本更新很快
可以看到,CUDA真正意義上來說是一種通用並行計算架構,但又包含了CUDA指令集架構和GPU內部的並行計算引擎。就如同CPU的情況一樣,X86的架構也包含ISA和執行指令的硬體架構。各種應用程式都基於這個架構進行開發並在此上運行。可以說CUDA架構的GPU是圖形渲染架構與並行計算架構的合體!
CUDA本意就是一種架構,但很多人認為CUDA是一種語言、或者是開發平台,這可能跟NVIDIA最初的宣傳、推廣策略有關係。在CUDA架構誕生之初(GeForce 8時代),尚不存在專門針對GPU並行計算的開發平台以及程式設計語言,因此NVIDIA必須給程式員提供一種簡單、易上手、並且完整的軟體開發解決方案,這樣NVIDIA所發布的CUDA包當中就包括了針對GPU的C語言編譯器、錯誤修正器/制模器、專用驅動和標準函數庫等。
除了支援自家C語言編譯器之外,更多的語言及API都能運行在CUDA架構
上圖就很好的反映出了CUDA與應用程式介面(API)以及各種語言編譯器的關係,其中的DX11計算也就是Direct Compute,可以看出CUDA架構和Direct Compute並無衝突。包括CUDA自家編譯器所採用的C語言擴充、OpenCL應用程式介面、Fortran甚至C++等都可以運行在CUDA架構之上,未來CUDA還將支援更多的語言。在整個產業的共同推動下,GPU計算可謂是前途無量!
實際上,在微軟的一份Direct Compute宣傳PPT中,我們也可以看到Direct Compute是完全建立在符合統一渲染架構GPU的基礎之上的。實際上,從DirectX 10開始,NVIDIA和AMD紛紛淡化管線和頂點的概念,就是為了使得流處理器可以執行更多非3D的應用,而如今微軟推出的Direct Compute,無疑對GPU通用計算應用有很大的推動性。
理清了CUDA以及Direct Compute的關係,我們來進入測試階段,看看Windows 7中的Direct Compute到底對NVIDIA CUDA有沒有影響,再一次驗證Direct Compute到底和CUDA是否存在衝突與競爭的關係。
本次我們採用封裝介面為LGA1156的i7搭配剛剛發布的P55主板進行測試,顯卡採用Inno3D推出的iChill-GTX260+金牛典藏版 ,並分別在不支援Direct Compute的Windows Vista作業系統和支援Direct Compute的Windows 7作業系統下進行對比。其中Windows Vista為64Bit,Windows 7為32Bit。
測試程式我們選擇了三個最具代表性的CUDA軟體,分別為國產轉碼軟體MediaCoder、CyberLink推出的視頻編輯軟體Power Director(威力導演)以及大家非常熟悉的轉碼軟體Badaboom,並分別以同樣的方法在Windows Vista和Windows 7下進行測試。
Badaboom是NVIDIA聯合Elemetal製作的Geforce GPU視頻轉碼工具,在CUDA標準推出初期,這技術是唯一一款支援CUDA加速的視頻轉碼軟體,通過這款軟體可以直接利用CUDA加速給iphone、 iTouch、PSP、Apple TV等多種裝置轉換視頻。目前,該軟體最新版本為1.2.1。
本次測試所採用的片源為電影《X戰警3》的一個長達11分鐘的預告片,原解析度為1920×1080,在本次測試中我們將其轉換成720P的MP4格式,以下分別是在Windows Vista和Windows 7下的效能截圖:
Windows Vista下:轉換時間為5分23秒