使用英特尔mkl进行的mxnet构建始终会引发错误“英特尔MKL致命错误:无法加载mkl_intel_thread.dll。”

时间:2019-03-06 07:29:09

标签: c++ dll intel-mkl mxnet

  • os:Windows 10 64位
  • 编译器:vc2015 64位更新3
  • mxnet:1.3.1

正在构建mxnet 1.3.1(mxnet1.4.0存在错误,无法在Windows下构建,请检查14203以获取更多详细信息)。

我可以使用cpp-package构建mxnet,但是当我调用Executor的转发函数时,它会不断抛出

英特尔MKL致命错误:无法加载mkl_intel_thread.dll。

以下是我构建mxnet的步骤

  1. git clone --recursive https://github.com/apache/incubator-mxnet mxnet
  2. cd mxnet
  3. 下载英特尔mkl(w_mkl_2019.2.190.exe)
  4. 安装
  5. 打开cmake3.11.0
  6. enter image description here
  7. enter image description here

    • 我禁用了cpp_package,opencv,cuda,USE_MKLML_MKL(否则mshadow将使用openBLAS)。
    • 我也禁用了USE_TENSORRT和USE_VTUNE
  8. 按配置,禁用BUILD_TESTING

  9. 再次按配置,全绿色
  10. 按生成,全绿色
  11. 打开ALL_BUILD.vcxproj
  12. 选择发布版本
  13. 所有版本
  14. 所有绿色,但安装项目失败

>文件无法创建目录:C:/ Program Files / mxnet / lib。可能需要 1>管理权限。

已经以管理员身份打开vc,仍然是相同的错误

  1. 将Anaconda3添加到PATH
  2. 将libmxnet.dll和C:\ Program Files(x86)\ IntelSWTools \ compilers_and_libraries_2019.2.190 \ windows \ redist \ intel64_win \ mkl \ mkl_rt.dll添加到OS可以找到的文件夹中
  3. 从cmake gui中选择使用cpp_package构建
  4. 配置->生成
  5. 重新打开ALL_BUILD.vcxproj
  6. 选择ALL_BUILD-> build
  7. 由于安装不起作用,我将文件lib复制到build_cpu / install

enter image description here

  1. 由于op.h的lrs和wds没有声明类型,我需要为其添加mx_float
  2. 编写一个简单的程序,可以编译
  3. 当我向前调用执行器时,程序抛出英特尔MKL致命错误:无法加载mkl_intel_thread.dll。
  4. 在操作系统中可以找到将C:\ Program Files(x86)\ IntelSWTools \ compilers_and_libraries_2019.2.190 \ windows \ redist \ intel64_win \ mkl的mkl_intel_thread.dll添加到文件夹中 26.再次运行,仍然是相同的错误英特尔MKL致命错误:无法加载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

有人知道如何解决此问题吗?谢谢

1 个答案:

答案 0 :(得分:3)

此问题应该是由静态MKL链接引起的,以下一些建议可能对您有所帮助。

  1. 您是否曾经尝试为预加载库设置环境变量,

这是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(“您的库路径”)或Pyinstaller numpy "Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll" ...

  1. 如果上述建议没有帮助,请尝试修改“ CMakeList.txt”文件,将第44〜47行更改为单动态链接,然后重新进行make安装:

    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)