【X開放日】演講嘉賓-張先軼老師演講速記:開源的高效能BLAS實現OpenBLAS

網際網路X實驗室發表於2014-05-15

【X開放日】第七位嘉賓是中國科技院軟體研究所助理研究員,張先軼先生。

enter image description here

張先軼:謝謝各位,能夠有機會介紹我們OpenBLAS專案。這Blas到底是什麼呢?他就是這四個英文,Basic、Linear、Algebra、subprog。如果不理解Blas做什麼呢?就是向量乘向量。

就比如說一開始幾個報告在講CNN什麼這些東西,CNN有一部分的操作可以轉化成這種操作,就是用Blas庫來實現。Blas庫最重要的東西就是三點,效能、效能、效能,就是要快,比所有平臺上快我們就成功了。以目前來說,這位仁兄,這位是一個日本人,他做了一個GotoBlas特別出名。這位先生,在2010年的時候去了微軟,我去的時候就說微軟那邊錢比較多。在微軟沒有多麼久,去年的時候就去了另外一家公司。

因為2010年這個庫就停止了,我們在2011年又發起了OpenBLAS,主要是我們的長遠目標最好的Blas的開源實現。是不是真的能夠做到最後的Blas?我們後面有一些新聞圖支援我們這一點。

目前我們市場主要是三個人,張先軼、王茜、Werner Saar,這相當於是一個愛好者,是加入到我們開發團隊,我們現在是一個三人開發團隊來做這樣的事情。

主要做的事情是三個事情,一、X86平臺,二、龍芯3,三、ARM平臺。這就是支援我們的資料了,我們是不是可以真的做得很好,紅顏色的線是我們的結果,藍顏色是商業的結果。這個效能,縱軸是代表了效能,就是越高代表越好,可以看到我們紅色線和藍色線基本上是重合在一起,少部分情況下要比藍色線高一些,雖然我們只有3個人,我們的結果還不錯。

這是龍芯3A,我們做了一些專門的優化,我們不是很客氣了,我們在OpenBLAS達到了最高的效能,這是具體的各個數值圖,具體不給大家看了。

這是ARM品牌,這是一個A9處理器上做的結果,這個藍色的線是我們的結果,剩下兩條線是其他人做的結果,我們至少超過了接近10%,比第二個線。

在效能優化裡邊,效能有兩個大流派,一個是手工優化,手工優化要做大量的彙編。比如說GotoBlas,它在其他的行列上要寫上千行的彙編。我不知道大家有沒有寫過上千編的。

這一大特點,這個典型庫就是ATLAS,他在調的時候要花費一天的時間。我們能否把手工和自動結合起來,做一個第三條路,把手工的經驗儘量自動化,這裡邊實際上就解決了自動的一個生成高效彙編,我們通過AUGEM,生成高效的彙編。

怎麼做的呢?就是這四個步驟。輸入是一個C程式碼,C程式碼這一層做一次優化,我們在這一層會發現一些模板,再找到一些模組,最把這些資源優化作為一個結果。這是一個優化後的乘法,這裡面做了一些迴圈級的變化,包括迴圈的一些融合這些Blas的東西。

在尋找模板的時候,我們預定義了6個模板,不過多介紹。在每一個模板裡面我們要做SIMD,暫存器分配、指令選取,通過這三步,就可以把模板內的效能做到比較好的效能。你當時只是在模板裡做的效能,最後還要做一下彙編的轉換。結論,我們效能是最好的,大家只有記住這一點就可以了,我們效能是最好的。我們減輕了開發資本,可以給大家提供一個資料,我們這個平臺一開始是在因特爾舊的處理器裡做的,我們可能花了3天的時間。就是說可以看到,當你有一個很好的基準之後,新的處理器平臺做效能優化的時候,你負擔量在顯著的降低了,可以大大加快我們庫的開發速度。我們在這裡邊用了一些自動搜尋的技術,我們引數比較小,所以不用花一天的時間,我們大概只需要不到半個小時的時間,就可以把引數調好。好,就到這裡,謝謝各位!

互動環節:

Q:我想問一下,您的系統如果想商業化,它有哪些路徑呢?在這上面是如何考慮的?

A:實際上,沒有商業化,只能靠大家捐款。這是一個基礎的庫,單獨從庫來說不適合做商業化的。因為靠公司來說MPL賣錢的,但是MPL是非常龐大的庫,我這個是那裡邊其中一個模組的庫,我覺得單獨靠模組賣錢的話是不可以的。如果你想要做商業模式的話,就要再往上走一層,比如說其他的東西,但是核心還是這個.

相關文章