- 操作系统:windows 10 64位
- 编译器:vc2015 64bits update 3
- MXnet:1.3.1
构建mxnet 1.3.1(mxnet1.4.0有bug,windows下无法构建,请查看14203了解更多详情)。
我可以用 cpp-package 构建 mxnet,但是当我调用 Executor 的 forward 函数时,它一直抛出错误
英特尔 MKL fatal error :无法加载 mkl_intel_thread.dll。
以下是我搭建mxnet的步骤
- git clone --recursive https://github.com/apache/incubator-mxnet网路
- cd mxnet
- 下载英特尔 mkl(w_mkl_2019.2.190.exe)
- 安装它
- 打开cmake3.11.0
-
- 我禁用 cpp_package、opencv、cuda、USE_MKLML_MKL(否则 mshadow 将使用 openBLAS)。
- 我也禁用了 USE_TENSORRT 和 USE_VTUNE
按配置,禁用BUILD_TESTING
- 再次按配置,全绿
- 按generate,全绿
- 打开 ALL_BUILD.vcxproj
- 选择发布版本
- 全部构建
- 所有绿色,除了安装项目失败
>文件无法创建目录:C:/Program Files/mxnet/lib。也许需要 1> 管理权限。
已经用admin打开了vc,还是一样的错误
- 将 Anaconda3 添加到 PATH 中
- 将 libmxnet.dll 和 C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.2.190\windows\redist\intel64_win\mkl\mkl_rt.dll 添加到操作系统可以找到的文件夹中
- 从 cmake gui 选择使用 cpp_package 构建
- 配置->生成
- 重新打开 ALL_BUILD.vcxproj
- 选择 ALL_BUILD->build
- 因为install不行,我把lib文件复制到build_cpu/install
- 因为op.h的lrs和wds没有声明类型,我需要为他们加上mx_float
- 写一个简单的程序,能编译
- 当我向前调用 Executor 时,程序抛出 Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.
- 将C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.2.190\windows\redist\intel64_win\mkl的mkl_intel_thread.dll添加到os可以找到的文件夹中 26.再次运行,还是一样的错误Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.
我的Anaconda3安装了mxnet,里面也有mkl_intel_thread.dll和mkl_rt.dll,不知是否有冲突,问题是我没有把Anaconda3的bin路径加到PATH中。
我试图将不同的 mkl_intel_thread.dll 和 mkl_rt.dll 复制到 exe 所在的文件夹中,但它们的每种组合都会给我同样的错误。
这些dll来自以下路径
- C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.2.190\windows\redist\intel64_win\mkl
- C:\Users\yyyy\Anaconda3\envs\gluon\Library\bin
- C:\Users\yyyy\Anaconda3\Library\bin
- C:\Users\yyyy\Anaconda3\pkgs\mkl-2019.1-144\Library\bin
有人知道如何解决这个问题吗?谢谢
最佳答案
这个问题应该是静态MKL链接引起的,这里有一些建议可能对你有帮助。
- 您是否尝试过为预加载库设置环境变量,
这是Linux
export LD_PRELOAD=/opt/intel/mkl/lib/intel64/libmkl_def.so:/opt/intel/mkl/lib/intel64/libmkl_avx2.so:/opt/intel/mkl/lib/intel64/libmkl_core.so:/opt/intel/mkl/lib/intel64/libmkl_intel_lp64.so:/opt/intel/mkl/lib/intel64/libmkl_intel_thread.so:/opt/intel/lib/intel64_lin/libiomp5.so
在 Windows 中,通过 mkl/bin/mklvars.bat intel64 设置环境,然后在相同的环境中运行你的 python
或在 python 中手动添加库 sys.path.append("your path to the library") 或 Pyinstaller numpy "Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll" ...
如果以上建议没有帮助,请尝试修改'CMakeList.txt'文件,将第44~47行更改为单动态链接并重新cmake安装:
if(MSVC) set(LIBS ${LIBS} mkl_rt ${MKL_COMPILER_LIB_FILE} PARENT_SCOPE) else() set(LIBS ${LIBS} mkl_rt ${MKL_COMPILER_LIB_FILE} PARENT_SCOPE)
关于c++ - mxnet 使用 intel mkl 构建总是抛出错误 "Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55017740/