mkldnn/onednn/openblas

測試mkldnn矩陣乘

需要將MKL_LIB_PATH="intel_2020.3.279/lib/intel64:intel_2020.3.279/mkl/lib/intel64"加入到LD_LIBRARY_PATH中。
example 目錄 intel_2020.3.279/mkl/examples/cblas/source/cblas_sgemmx.c 這是mkl自帶的example,還有cblas_gemm_s8u8s32x.c代表signed int8,unsigned int8,signed int32,對應(yīng)傳入的A、B、C矩陣數(shù)據(jù)類型,表示INT8量化加速接口。
編譯命令:
make libintel64 function=cblas_gemm_s8u8s32 compiler=gnu
make libintel64 function=cblas_sgemm compiler=gnu
可以指定編譯器為gnu還是intel的,也可以指定是并行多線程parallel還是單線程

Linux安裝oneDNN

先從git clone,然后需要指定make install的安裝目錄:

mkdir -p build && cd build
cmake -D CMAKE_INSTALL_PREFIX=/data1/duoren/oneDNN ..
make -j
make install

編譯程序時(shí)使用命令g++ -g -o sgemm -std=c++11 -I${DNNLROOT}/include -L${DNNLROOT}/lib64 cpu_sgemm_and_matmul.cpp -ldnnl
其中$DNNLROOT是make install的目錄,否則會(huì)報(bào)dnnl_config.h.in以及libdnnl.so找不到的錯(cuò)誤。
其中oneDNN/examples/tutorials/matmul/cpu_sgemm_and_matmul.cpp是測試矩陣乘接口的文件,但是要放到examples目錄下,因?yàn)樾枰雃xample_utils.hpp頭文件。
在onednn中,gemm有三種實(shí)現(xiàn)方案,gemm,static gemm和dynamic gemm。這些在mkl是沒有的。
舊版mkl-dnn的gemm使用的是mkl的gemm,mkl對于小矩陣的計(jì)算,速度并不快。舊版mkl-dnn主要是做cnn和lstm的優(yōu)化
onednn中,有兩個(gè)選擇,1繼續(xù)使用mkl的gemm,2使用新的gemm。

安裝OpenBlas

make
make install PREFIX=your_installation_directory

默認(rèn)安裝到/opt/OpenBLAS/lib,否則需要將其加到LD_LIBRARY_PATH。
編譯命令:g++ -g -o sgemm compare_sgemm_shgemm.c -I/opt/OpenBLAS/include -L/opt/OpenBLAS/lib/ -lopenblas

linux查看CPU型號

centos7.6 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
ubuntu18.04 grep "model name" /proc/cpuinfo |awk -F ':' '{print $NF}'
IDC服務(wù)器:Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
MIT服務(wù)器:Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容