問題描述
- 在升級tensorflow版本之後,更新了cudnn,再重新 import caffe 報錯 Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so
- 在嘗試把
libmkl_avx2.so
和libmkl_def.so
對應路徑加入LD_LIBRARY_PATH均未解決; - 網上提供的解決方法有重新安裝mkl,numpy,scipy等
快速解決方法
- 無需重新安裝,添加命令
export LD_PRELOAD=/<option your path>/anaconda2/lib/libmkl_rt.so
到~/.bashrc
中即可,親測有效; - 個人覺得該問題是因爲環境配置過程中mkl庫與其他庫的依賴關係出現混亂導致的,即mkl動態庫對應有多處路徑
LD_PRELOAD
是個環境變量,用於動態庫的加載,動態庫加載的優先級最高,一般情況下,其加載順序爲LD_PRELOAD > LD_LIBRARY_PATH > /etc/ld.so.cache> /lib > /usr/lib
,因此使用最高級別的直接指定,由於我是anaconda中的python內部報錯,所以指定anaconda/lib- 疑惑:按理說指定的庫應該是libmkl_avx2.so 或者 libmkl_def.so,但我嘗試之後,均無效,具體原因不知,
- 網上其他的替代方法也有把其他的庫都指定後解決的,但有點多。
Adding export LD_PRELOAD= /path/to/anaconda/lib/libmkl_def.so:/path/to/anaconda/lib/libmkl_avx.so:
/path/to/anaconda/lib/libmkl_core.so:/path/to/anaconda/lib/libmkl_intel_lp64.so:/path/to/anaconda/lib/libmkl_intel_thread.so:/path/to/anaconda/lib/libiomp5.so
to my ~/.bashrc causes the problem to disappear.