● shader靈活度測試:矩陣乘法
矩陣乘法是線性代數(shù)的基本構(gòu)成之一,它是各種通用計(jì)算以及shader處理過程中非常常見的數(shù)學(xué)操作方式,矩陣乘法的過程可以將許多非常復(fù)雜的模型轉(zhuǎn)換成相對簡單的表現(xiàn)形式,因此被廣泛應(yīng)用在了光柵化(坐標(biāo)變換)、光照(亮度直方操作)、陰影邊緣平滑(針對像素塊的切比雪夫不等式群)等幾乎所有圖形處理過程中。可以說只要進(jìn)行圖形處理過程,GPU就必定會(huì)進(jìn)行大量的矩陣乘法操作。
矩陣乘法可以被解離成大量的存在一階或者多階弱關(guān)聯(lián)度的行列式運(yùn)算,并行化的處理這些行列式,同時(shí)為操作過程提供合理的緩沖空間來釋放臨時(shí)結(jié)果勢必會(huì)極大地加快矩陣乘法操作的效率,進(jìn)而加快整個(gè)圖形過程的進(jìn)度。因此,對于矩陣乘法效率的測試,不僅可以讓我們獲得構(gòu)架并行度以及緩沖資源情況的信息,更能在趨勢上反映GPU執(zhí)行shader尤其是靈活shader的執(zhí)行效率。所以,無論是之前已經(jīng)進(jìn)行過的HD7970/7950效能測試還是本次的GCN體系對比測試,我們都將矩陣乘法測試作為構(gòu)架延展測試的第一個(gè)項(xiàng)目,通過它將Tahiti以及Pitcairn構(gòu)架的ALU團(tuán)簇部分剝離出來進(jìn)行專門的性能測試。
矩陣乘法需要構(gòu)架擁有良好的線程仲裁分配機(jī)制以及充足的緩沖體系,而這正是Tahiti構(gòu)架與Pitcairn,甚至是Tahiti構(gòu)架內(nèi)部最核心的差異。Tahiti與Pitcairn同樣擁有2組并行的ACE引擎,同樣的2組ACE引擎在HD7970上需要應(yīng)對32組CU共計(jì)2048個(gè)Vector ALU的需求,HD7950的運(yùn)算單元規(guī)模比HD7970縮減了12.5%,所以同樣的2組ACE引擎在一級線程隊(duì)列仲裁及管理壓力方面也要低于HD7970。HD7870及HD7850的ACE引擎與HD7900并無區(qū)別,但同樣的2組ACE引擎在Pitcairn中只需要管理20/16組CU,合計(jì)1280/1024個(gè)Vector ALU。不難看出,HD7800的CU可以輕松的獲得比HD7900更加充盈的線程塊供給,這對于提升單元復(fù)用率有著極大的貢獻(xiàn)。
測試結(jié)果支撐了我們的分析,盡管Pitcairn的運(yùn)算規(guī)模只有Tahiti的62.5%,但HD7800卻取得了超越HD7900的矩陣乘法性能,同時(shí)并完全沒有表現(xiàn)出HD7900資源匱乏從而重度依賴驅(qū)動(dòng)優(yōu)化所導(dǎo)致的矩陣操作性能起伏問題。而在Tahiti構(gòu)架內(nèi)部,HD7950亦表現(xiàn)出了優(yōu)于HD7970的性能增長趨勢。