裴向東,王慶林,2,廖林玉,2,李榮春,2,梅松竹,2,劉 杰,2,龐征斌
(1. 國(guó)防科技大學(xué) 計(jì)算機(jī)學(xué)院, 湖南 長(zhǎng)沙 410073; 2. 國(guó)防科技大學(xué) 并行與分布處理國(guó)防科技重點(diǎn)實(shí)驗(yàn)室, 湖南 長(zhǎng)沙 410073)
矩陣轉(zhuǎn)置是矩陣運(yùn)算中最常見的一種操作,廣泛應(yīng)用于科學(xué)和工程領(lǐng)域[1-2],如信號(hào)處理、科學(xué)計(jì)算和深度學(xué)習(xí)[3-5]。作為重要的基礎(chǔ)算子[6-7],矩陣轉(zhuǎn)置的效率高低對(duì)應(yīng)用的性能會(huì)產(chǎn)生直接的影響。特別是矩陣轉(zhuǎn)置操作屬于訪存受限型運(yùn)算,對(duì)訪存密集型應(yīng)用的影響將更大[8-9]。
面對(duì)各領(lǐng)域?qū)Ω咝阅芫仃囖D(zhuǎn)置操作的需求,國(guó)內(nèi)外學(xué)者對(duì)矩陣轉(zhuǎn)置優(yōu)化已經(jīng)進(jìn)行了大量的研究工作。遠(yuǎn)遠(yuǎn)等提出適應(yīng)對(duì)稱多處理器系統(tǒng)的兩維均衡細(xì)粒度交織矩陣轉(zhuǎn)置算法[10],通過提升矩陣在存儲(chǔ)器上的讀寫效率來降低矩陣轉(zhuǎn)置開銷。Zekri 等提出了面向Intel 處理器的矩陣轉(zhuǎn)置優(yōu)化算法[11],通過采用向量擴(kuò)展指令A(yù)VX來加速矩陣轉(zhuǎn)置運(yùn)算。王琦等提出了面向Intel KNL融合處理器的并行矩陣轉(zhuǎn)置優(yōu)化[12]。Springer等提出了面向張量轉(zhuǎn)置的編譯器TTC[13],以離線方式自動(dòng)產(chǎn)生高性能的C++轉(zhuǎn)置實(shí)現(xiàn)。TTC效率雖高,但不能直接應(yīng)用在運(yùn)行時(shí)才能確定張量大小與轉(zhuǎn)置需求的場(chǎng)景中,因此Springer等隨后又提出了支持在線自動(dòng)調(diào)優(yōu)的張量轉(zhuǎn)置庫(kù)HPTT[14],集成了自動(dòng)調(diào)優(yōu)、顯式向量化和多線程并行等優(yōu)化技術(shù),在多種中央處理器(central processing unit,CPU)硬件架構(gòu)上均展現(xiàn)了優(yōu)異的性能,是當(dāng)前面向CPU架構(gòu)的流行張量轉(zhuǎn)置開源庫(kù)。肖漢等采用OpenCL編程模型實(shí)現(xiàn)了面向圖形處理器(graphic processing unit,GPU)的并行矩陣轉(zhuǎn)置算法優(yōu)化,相比CUDA實(shí)現(xiàn),具有更好的可移植性[15]。……