ADVERTISEMENT
快速瀏覽:
- 運算篇:9倍快的雙精度運算
- 效能篇:GK110遊戲卡初登場
- 未來篇:Maxwell、Volta正港新架構
首張GK 110遊戲卡
雖然早在2012年的GTC大會上,NVIDIA就曾經發表採用GK 110核心的Tesla K20X與K20,但一直到快1年之後使用GK 110的遊戲卡才正式發表。本以為首張GK 110核心的遊戲卡,會是以GTX 780命名,但並不是這麼一回事。NVIDIA選擇在AMD仍未發表新核心之前的這個時間點,發表運算與遊戲並重的產品線TITAN,不失為一個好的選擇。
先發表遊戲、運算並重的TITAN,不僅能奪得曝光率,另外也能等待AMD出招。依照過去幾代AMD與NVIDIA的過往戰績來看,搶先發表的AMD的優勢在於能夠提前支援新標準,像是DirectX 10.1或是DirectX 11。不過既然NVIDIA的二代Kepler架構GK 110早已備妥,加上市面上高階卡仍以NVIDIA佔優勢,某些層面也不需要急著發表。
TITAN的命名由來
TITAN命名方式相當有意思,名稱是取自美國能源部旗下橡樹嶺國家實驗室(Oak Ridge National Laboratory)使用的超級電腦TITAN。這台超級電腦是第一台以GPGPU為主要運算單元的超級電腦,自2012年10月啟用至今,也是Top 500排名上最快的超級電腦,每秒運算效能達17.59PFLOPS。在另一個功耗效能比的Green 500排名中,TITAN每瓦可換得2.142GFLOPS運算效能,排名則是世界第三。
運算篇:9倍快的雙精度運算
筆者認為,TITAN是個全新的產品線,不宜只使用傳統遊戲的角度進行評測。這次TITAN幾乎有一半以上的價值都是在高速運算上,其中雙精度運算更是官方特別突顯出來的重點,那事實上表現如何,我們就來驗證看看。
通用運算2大關鍵
對於GPGPU(General Purpose Graphics Processing Unit)應用來說,由於牽扯到大量的資料運算,因此對於精確度的要求就很嚴苛。其中GPU的雙精度模式與記憶體的ECC校正,更是精確度中的關鍵。前者可在運算當中紀錄較多的位數,確保大量運算時的最高精確度,後者則是透過檢查碼,確保核心與記憶體資料傳遞時的正確性。
少了ECC的TITAN
很不幸地,為了讓TITAN與Tesla K20系列有所區隔,NVIDIA抹去了TITAN身上的ECC(Error Checking and Correcting,錯誤檢查及校正)技術,這也讓TITAN的運算可靠性下降。也因此不會有高速運算中心拿TITAN取代Tesla K20或K20X,藉此降低硬體成本。但對於TITAN的目標族群,個人工作室等環境來說,雖然少了ECC校正,但是成本卻只有Tesla K20的三分之一,相信還是相當有吸引力。
附帶一提,ECC技術NVIDIA在GF 110時期就已經支援,而AMD在Cayman之前只有EDC(Error Detection and Correction,錯誤檢測及校正)機制,其後才逐漸支援ECC。在通用運算領域之中,AMD起步雖然較早但相關技術支援較少,也讓OpenCL開放標準的ATI Stream名聲與推廣度,明顯不如NVIDIA私有標準CUDA。
ATI Stream與NVIDIA CUDA
ATI Stream與NVIDIA CUDA都是用於通用運算的標準,前者是ATI根據開放標準OpenCL訂定的運算標準,而CUDA則是NVIDIA訂定的私有標準,是在傳統C、C++的基礎上增加延伸語法。
ATI Stream早在2005年就被提出,且支援早期的GPGPU應用Folding@Home計畫。當年Top 500超級電腦中,天河一號內使用2560張HD 4870X2,但在天河一號第二期計畫後,就將顯卡改為7168張NVIDIA的Tesla M2050。
預先封印的雙精度
說來雙精度運算其實也不是什麼新技術,NVIDIA早在GT 200時期就將其納入核心當中,但是當年效能較差沒有實用價值,到了Fermi之後才逐漸嶄露頭角。而AMD方面則是波折較多,最初Cypress也就是HD 5870開始支援雙精度運算,但在Barts(HD 6800)卻又取消該功能,直到Cayman意即HD 6900之後才恢復支援。
雖然TITAN支援雙精度運算,且以此為賣點,但是TITAN出廠的雙精度功能卻是被關閉的,必須從驅動程式當中的CUDA選項手動開啟。原因相當簡單,開啟雙精度功能後,核心時脈會被限制,也連帶影響Boost時脈,會導致遊戲效能下降。
根據編輯部的測試,開啟雙精度運算後,遊戲效能約下降10%左右,因此若同時有通用運算、遊戲需求的人,務必手動切換CUDA中的雙精度選項,否則會白白損失許多效能。遊戲若開啟雙精度功能,效能表現會少了10%,那麼通用運算呢?相信這測出來的數值大會讓你感到驚訝。
FP32與FP64
經常聽到的單精度浮點數(Single Precision Floating Point,FP32)與雙精度浮點數(Double Precision Floating Point,FP64),都是IEEE 754二進位浮點算數標準的表示方式。其中單精度與雙精度的差異,主要在於前者是紀錄單位為32位元,後者則是64位元。依照紀錄的位數多寡,會影響到數值的精確度。因而在運算交換量龐大的通用計算中,是否具備精確度較高的雙精度運算就特別重要。
▲sign bit(符號):用於表示正負號/exponent(指數):用於表示次方數/mantissa(尾數):用於表示精確度
雙精度選項務必開啟
由於雙精度選項預設關閉,我們特地做了前後效能對照。利用OpenCL GPC benchmark這套軟體進行測試,可看出不論開啟與否,並不影響單精度運算的效能,但是對於雙精度影響相當巨大。雙精度加法(Add)、乘法(Multiply)部分,開啟後效能提升約567%,而在雙精度乘加(MAD)的部分則是提升約530%,最後特殊函數(Special Functions)提升幅度則約345%。
普遍而言開啟雙精度選項後,大致上會有3~5倍不等的效能提升。由此可見,對於有通用運算需求的玩家來說,雙精度是必要開啟的選項,效能差距大到無法忽視,關閉的話運算效能僅能跟GTX 680相當。
雙精度選項開啟前後對比(單精度測試:綠色、雙精度測試:藍色)
▲開啟雙精度(Double Precision)與否,會大幅影響TITAN的通用運算效能。開啟前後雙精度運算落差高達3~5倍不等,但對於單精度運算並沒有明顯影響。
雙精度預設關閉
預設環境下,Double Precision(雙精度)功能是被關閉的,且目前只有TITAN會出現Double Precision選項,GTX 680等卡則無法強制開啟。
前後代相差約9倍
若將TITAN跟GTX 680相比,在單精度運算方面,效能TITAN明顯領先,但領先幅度不到1倍。但在雙精度測試項目中,兩者的效能落差約9倍。TITAN在雙精度乘加中,運算效率最高可達1366.415GFLOPS,而GTX 680卻只有136.522GFLOPS,兩者相差9倍。
TITAN共有2688個CUDA Core,單精度環境中,2688個CUDA Core都能進行運算。但在雙精度模式中,進行雙精度運算的CUDA Core卻只有896個,是單精度的三分之一。而前代GTX 680則是每組SMX中,只有8個CUDA Core可進行雙精度運算,核心差異導致前後兩代的效能落差。加上官方可能有意無意的進行限制,導致前代雙精度運算效能不彰。
在官方數據中,TITAN單精度運算效能為4.5TFLOPS,雙精度為1.3TFLOPS,理論性能雙精度只有單精度的三分之一,在實際測試中,表現也相當符合理論數據。
GK 104、GK 110運算效能對比(GK 110:綠色、GK 104:藍色)
▲單精度環境(Single Precision)中,前後代Kepler運算效能受限於CUDA Core數量而有一些落差。至於在雙精度環境,效能幾乎差了9倍。
延伸閱讀:
一個打兩個,NVIDIA GeForce GTX TITAN 對決 GTX 680 SLI 實測
GeForce GTX 690 地表最快顯卡,基礎性能測試搶先報
(後面還有-效能篇:GK110遊戲卡初登場)
像這種昂貴的卡我是買不起的.......
一張上萬元的高階卡也不是每個人都買的起
買張5000~6000元的卡就非常好了