报错Intel MKL FATAL ERROR: Cannot load libmkl_core.so.的一种解决方法
问题
今天上80服务器跑mdistiller的代码时,意外发现torch、numpy都不能用了T_T
以torch为例,出现如下报错情况

以numpy为例,出现如下报错情况

我们先看看报错信息,这个报错来自Inter MKL。Inter MKL全称是The Intel Math Kernel Library,它是一个主要是用于科学计算的共享库,提供了很多与数学优化程序,例如向量矩阵操作什么的。
报错信息说明我们在导入torch/numpy库时,无法载入libmkl_core.so.和libmkl_rt.so.1.
这两个文件以so结尾,属于共享库文件。
在Linux系统上一般以.so文件扩展名(shared object), 在MacOS上以.dylib为文件扩展名, 在Windows上以.dll (dynamic link library)为文件扩展名。
共享库的出现的一个原因是防止重复造轮子,它允许多个程序使用同一份代码。
这样程序里面便不需要重复写相同的代码,只需要让程序指向共享库即可,提高了程序的可复用性,也让程序变得更modular了。
解决过程
从报错信息来看,它说我们无法载入某个文件。首先想到的是先确定这个文件是否存在,这里以libmkl_rt.so.1.来进行分析。
通过执行以下命令,我们来看看它是否存在
ls /home/jyg/anaconda3/envs/mdisPy37/lib/python3.7/site-pa
ckages/mkl/../../../libmkl_rt.so.1
在我的机器上运行结果如下,libmkl_rt.so.1.确实存在

那么如何让numpy或者torch库能够正确的找到Inter MKL共享库并载入它需要的共享文件呢?
这就不得不说一下LD_LIBRARY_PATH环境变量了。
LD_LIBRARY_PATH是Linux系统上一个与动态链接有关的环境变量。如果将各个程序想象成大小不一的拼图,那么链接的过程就是将这些杂乱的拼图正确地拼合起来。
当某个库或者程序需要用到其他的共享库时,在搜索标准库目录,例如/lib或者/usr/lib之前,操作系统会首先从由LD_LIBRARY_PATH指定路径下进行搜索。
因此,我们只需要将路径/home/jyg/anaconda3/envs/mdisPy37/lib添加到LD_LIBRARY_PATH即可,即执行如下命令
export LD_LIBRARY_PATH=/home/jyg/anaconda3/envs/mdisPy37/l
ib:$LD_LIBRARY_PATH
现在便能正常导入numpy或者torch库了

不要忘了,我们现在只是在当前session中临时设置了LD_LIBRARY_PATH的值,如果当前会话结束了,重新开一个会话时还需要重新export。
因此,我们可以考虑执行如下命令永久改变LD_LIBRARY_PATH的值
echo "export LD_LIBRARY_PATH=/home/jyg/anaconda3/envs/mdisPy37/lib:$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc
报错Intel MKL FATAL ERROR: Cannot load libmkl_core.so.的一种解决方法的更多相关文章
- Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll 在使用Anaconda创建一个虚拟环境出来,然后安装了scikit-learn.nump ...
- 遇到Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so问题的解决方法
运行一个基于tensorflow的模型时,遇到Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so问题. 解决方法:打开 ...
- 【MySQL】MySQL同步报错-> Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
这个报错网上搜索了一下,大部分是由于MySQL意外关闭或强制重启造成的binlog文件事务点读取异常造成的主从同步报错 Last_IO_Error: Got fatal error 1236 from ...
- vs2010编译错误(报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏)
报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 1> 这段时间忙于看文献,没用过VS了. 今天用着用着就报错了: LINK : fat ...
- Ubuntu下 fatal error: Python.h: No such file or directory 解决方法
参考: fatal error: Python.h: No such file or directory Ubuntu下 fatal error: Python.h: No such file or ...
- “fatal error: hdf5.h: 没有那个文件或目录”解决方法
問題一: Installing Caffe without CUDA: fatal error: cublas_v2.h No such file: 在Makefile.config中修改,將CPU_ ...
- 报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 1>
这段时间忙于看文献,没用过VS了. 今天用着用着就报错了: LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 1> 问度娘,大神给出了解决方法 ...
- C++笔记002:VS2010报错:LINK fatal error LNK1123 转换到 COFF 期间失败文件无效或损坏
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 错误描述: 1>------ 已启动生成: 项目: FirstCode, 配置: Debug Win32 ------ 1>生 ...
- 远程连接Linux mysql报错:Access denied for user ‘root’@‘localhost’(using password: YES)的解决方法
在新安装好的Centos7上刚安装好mysql,准备进去看看,但是登陆的时候,发现报错啦: ERROR 1045 (28000): Access denied for user 'root'@'loc ...
- dubbo-admin-2.5.3 运行报错: Bean property 'URIType' is not writable or has an invalid 解决方法
因为 jdk 是1.8的版本,和 dubbo-admin 存在兼容性问题.所以报错: Bean property 'URIType' is not writable or has an invalid ...
随机推荐
- Shodan使用指南
Shodan是用于搜索连接到互联网的设备的工具.与搜索引擎可以帮助你找到网站不同,Shodan可以帮助你找到有关台式机,服务器,IoT设备等的信息.此信息包括元数据,例如在每个设备上运行的软件. Sh ...
- Java 设计模式实战系列—策略模式
从优惠打折活动说起 电商平台为了增加销量经常搞一些活动,比如 618.双十一,还有一些节假日活动,根据销量的变化又经常更新不同的活动.最开始为了增加销量,全场都六折: // 打六折 public Bi ...
- 学习websocket,原来这么简单
简单介绍 websocket WebSocket是一种在TCP连接上进行全双工通信的协议. WebSocket通信协议于2011年被IETF定为标准. 然后WebSocket API也被W3C定为标准 ...
- Java使用joml计算机图形学库,将3D坐标旋转正交投影转为2D坐标
最近遇到了一个困扰我许久的难题,现将解决方案分享出来 由于我们的项目侧重点在前端绘图,导致了前后端工作量不协调,我后端接口很快就能写完,而前端一个图要画好久,领导见状将前端的任务分到后端一部分用Jav ...
- Unity的IGenerateNativePluginsForAssemblies:深入解析与实用案例
Unity IGenerateNativePluginsForAssemblies Unity是一款非常流行的游戏引擎,它支持多种平台,包括Windows.Mac.Linux.Android.iOS等 ...
- H5 WebGL实现水波特效
前言 零几年刚开始玩电脑的时候,经常在安装程序上看到一种水波特效,鼠标划过去的时候,就像用手在水面划过一样,感觉特别有意思.但是后来,就慢慢很少见过这种特效了.最近突然又想起了这种特效,于是开始折磨怎 ...
- TCP和UDP的应用场景
传输层的两个协议,TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议),有各自的应用场景. TCP ...
- sql相关小知识—
数据库系统达到了数据独立性是因为采用了三级模式结构 人们为数据库设计了一个严谨的体系结构,数据库领域公认的标准结构是三级模式结构,它包括外模式.概念模式.内模式,有效地组织.管理数据,提高了数据库的逻 ...
- Python 学习笔记:基础篇
! https://zhuanlan.zhihu.com/p/644232952 Python 学习笔记:基础篇 承接之前在<[[Python 学习路线图]]>一文中的规划,接下来,我将会 ...
- Android LinearLayout快速设置每个item间隔
原文地址: Android LinearLayout快速设置每个item间隔 平常使用LinearLayout的时候,有时候会需要对每个item设置间距,但是每个item都加上margin的方法实在有 ...