一、介紹:先簡單Mark一下網上的介紹資料,弄清楚MKL是個啥,已經與openblas等的關系。
- 矩陣運算庫blas, cblas, openblas, atlas, lapack, mkl之間有什么關系,在性能上區別大嗎? 摘自:https://www.zhihu.com/question/27872849
-
比較OpenBLAS,Intel MKL和Eigen的矩陣相乘性能。 摘自:http://www.leexiang.com/the-performance-of-matrix-multiplication-among-openblas-intel-mkl-and-eigen
二、MKL使用:
-
之前的項目使用的是openblas,需要替換成MKL,然后測試不同庫的效率。首先需要注意的是,這種換庫,或者更新cudnn的版本,需要重新編譯caffe。
-
具體步驟:
- STEP1: 取消之前對openblas.lib靜態庫的依賴,然后刪除openblas.dll(我為了避免是openblas還在起作用)。重新編譯caffe的話,應該會在math_function.h中報錯。
- STEP2: 在網上下載MKL的庫,官網地址:https://software.intel.com/en-us/mkl。這里我有點疑問,看某些教程說是下載parallel_studio_xe,我理解MKL集成在parallel_studio_xe里面了。因此下載兩個都是OK的。
只下載MKL的話,VS中右鍵項目不會出現Intel Compile那個選項。但是我之后也沒有用到過這個選項。
- STEP3: 按照網上的教程:
-
在“配置屬性”下的“Intel Performance Libraries”面板上的“Use Intel MKL”條目的右邊的下拉框選擇“Parallel”
-
在“VC++目錄”下設置以下:
可執行文件目錄為:D:\Program Files (x86)\Intel\Composer XE 2015\redist\intel64\mkl
包含目錄為:D:\Program Files (x86)\Intel\Composer XE 2015\mkl\include
庫目錄為:D:\Program Files (x86)\Intel\Composer XE 2015\compiler\lib\intel64;D:\Program Files (x86)\Intel\Composer XE 2015\mkl\lib\intel64
注意:如果是32位的,就不是“intel 64”而是“ia32” -
在“自定義生成步驟”下,設置“附加依賴項”,選擇以下lib文件,缺少什么可能需要嘗試以下,一般是這幾個:
mkl_intel_c.lib
mkl_intel_thread.lib
mkl_core.lib
libiomp5md.lib - 基本以上步驟就夠了,或者參考intel官方給出的文檔。
-
三、效率比較:我的理解,MKL對GPU並沒有太多的加速功能,對CPU的加速效果還是比較明顯的,跑了一個行人結構化分析:
前兩次都是openblas的,最后是cudnn_6+MKL。