問(wèn)題
今天上80服務(wù)器跑mdistiller的代碼時(shí),意外發(fā)現(xiàn)torch、numpy都不能用了T_T
以torch為例,出現(xiàn)如下報(bào)錯(cuò)情況
以numpy為例,出現(xiàn)如下報(bào)錯(cuò)情況
我們先看看報(bào)錯(cuò)信息,這個(gè)報(bào)錯(cuò)來(lái)自Inter MKL。Inter MKL全稱是The Intel Math Kernel Library,它是一個(gè)主要是用于科學(xué)計(jì)算的共享庫(kù),提供了很多與數(shù)學(xué)優(yōu)化程序,例如向量矩陣操作什么的。
報(bào)錯(cuò)信息說(shuō)明我們?cè)趯?dǎo)入torch/numpy庫(kù)時(shí),無(wú)法載入libmkl_core.so.和libmkl_rt.so.1.
這兩個(gè)文件以so結(jié)尾,屬于共享庫(kù)文件。
在Linux系統(tǒng)上一般以.so文件擴(kuò)展名(shared object), 在MacOS上以.dylib為文件擴(kuò)展名, 在Windows上以.dll (dynamic link library)為文件擴(kuò)展名。
共享庫(kù)的出現(xiàn)的一個(gè)原因是防止重復(fù)造輪子,它允許多個(gè)程序使用同一份代碼。
這樣程序里面便不需要重復(fù)寫相同的代碼,只需要讓程序指向共享庫(kù)即可,提高了程序的可復(fù)用性,也讓程序變得更modular了。
解決過(guò)程
從報(bào)錯(cuò)信息來(lái)看,它說(shuō)我們無(wú)法載入某個(gè)文件。首先想到的是先確定這個(gè)文件是否存在,這里以libmkl_rt.so.1.來(lái)進(jìn)行分析。
通過(guò)執(zhí)行以下命令,我們來(lái)看看它是否存在
ls /home/jyg/anaconda3/envs/mdisPy37/lib/python3.7/site-pa
ckages/mkl/../../../libmkl_rt.so.1
在我的機(jī)器上運(yùn)行結(jié)果如下,libmkl_rt.so.1.確實(shí)存在
那么如何讓numpy
或者torch
庫(kù)能夠正確的找到Inter MKL共享庫(kù)并載入它需要的共享文件呢?
這就不得不說(shuō)一下LD_LIBRARY_PATH
環(huán)境變量了。
LD_LIBRARY_PATH
是Linux系統(tǒng)上一個(gè)與動(dòng)態(tài)鏈接有關(guān)的環(huán)境變量。如果將各個(gè)程序想象成大小不一的拼圖,那么鏈接的過(guò)程就是將這些雜亂的拼圖正確地拼合起來(lái)。
當(dāng)某個(gè)庫(kù)或者程序需要用到其他的共享庫(kù)時(shí),在搜索標(biāo)準(zhǔn)庫(kù)目錄,例如/lib或者/usr/lib之前,操作系統(tǒng)會(huì)首先從由LD_LIBRARY_PATH
指定路徑下進(jìn)行搜索。
因此,我們只需要將路徑/home/jyg/anaconda3/envs/mdisPy37/lib添加到LD_LIBRARY_PATH
即可,即執(zhí)行如下命令
export LD_LIBRARY_PATH=/home/jyg/anaconda3/envs/mdisPy37/l
ib:$LD_LIBRARY_PATH
現(xiàn)在便能正常導(dǎo)入numpy
或者torch
庫(kù)了
不要忘了,我們現(xiàn)在只是在當(dāng)前session中臨時(shí)設(shè)置了LD_LIBRARY_PATH
的值,如果當(dāng)前會(huì)話結(jié)束了,重新開(kāi)一個(gè)會(huì)話時(shí)還需要重新export。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-711567.html
因此,我們可以考慮執(zhí)行如下命令永久改變LD_LIBRARY_PATH
的值文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-711567.html
echo "export LD_LIBRARY_PATH=/home/jyg/anaconda3/envs/mdisPy37/lib:$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc
到了這里,關(guān)于報(bào)錯(cuò)Intel MKL FATAL ERROR: Cannot load libmkl_core.so.的一種解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!