mxnet build с intel mkl всегда выдает ошибку «Intel MKL FATAL ERROR: Не удается загрузить mkl_intel_thread.dll». - PullRequest
0 голосов
/ 06 марта 2019
  • os: windows 10 64 бит
  • компилятор: vc2015 обновление 64 бит 3
  • mxnet: 1.3.1

Сборка mxnet 1.3.1 (mxnet1.4.0 имеет ошибки, не может собрать его под Windows ,, пожалуйста, проверьте 14203 для более подробной информации.

Я могу собрать mxnet с помощью cpp-пакета, но когда я вызываю функцию forwardo Исполнитель продолжает выдавать

Intel MKL FATAL ERROR: Не удается загрузить mkl_intel_thread.dll.

Ниже приведены мои шаги по созданию mxnet

  1. git clone --recursive https://github.com/apache/incubator-mxnet mxnet
  2. cd mxnet
  3. Скачать intel mkl (w_mkl_2019.2.190.exe)
  4. установить его
  5. открыто cmake3.11.0
  6. enter image description here
  7. enter image description here

    • Iотключить cpp_package, opencv, cuda, USE_MKLML_MKL (иначе mshadow будет использовать openBLAS).
    • Я отключаю USE_TENSORRT и USE_VTUNE тоже
  8. нажмите настроить configure отключить BUILD_TEST **

  9. нажмите снова настроить, все зеленые
  10. нажмите создать , все зеленые
  11. открыть ALL_BUILD.vcxproj
  12. Выбрать выпуск сборки
  13. Все сборки
  14. Все зеленые, кроме сбоя установки проекта

> файл не может создать каталог: C: / Program Files / mxnet / lib.Возможно, нужны 1> административные привилегии.

Уже открыт vc от имени администратора, все та же ошибка

Добавить Anaconda3 в PATH Добавить libmxnet.dll и C: \ Program Files (x86) \ IntelSWTools \ compilers_and_libraries_2019.2.190 \ windows \ redist \ intel64_win \ mkl \ mkl_rt.dll в папку, которая может бытьнайденный с помощью os выберите сборку с помощью cpp_package из cmake gui configure-> generate заново откройте ALL_BUILD.vcxproj выберите ALL_BUILD-> build Поскольку установка не работает , Я копирую файлы lib в build_cpu / install

enter image description here

Поскольку lrs и wds из op.h не объявляют тип , Мне нужно добавить для них mx_float написать простую программу, может скомпилировать Когда я вызываю форварда Executor ,программа выдает ФАКТИЧЕСКАЯ ОШИБКА Intel MKL: Невозможно загрузить mkl_intel_thread.dll. Добавить C: \ Program Files (x86) \ IntelSWTools \ compilers_and_libraries_2019.2.190 \ windows \ redist \ intel64_win \ mkl 的mkl_intel_thread.dll в папке может быть найден операционной системой 26. Запустите снова , все та же ошибка Intel MKL FATAL ERROR: невозможно загрузить mkl_intel_thread.dll.

Моя установка Anaconda3mxnet , он также получил mkl_intel_thread.dll и mkl_rt.dll , Интересно, что есть конфликт , Проблема в том, что я не добавил путь к корзине Anaconda3 в 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 Ответ

3 голосов
/ 10 мая 2019

Эта проблема должна быть вызвана статической связью 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 установите env с помощью mkl / bin / mklvars.bat intel64, затем запустите ваш python в той же среде

или в python, чтобы добавить библиотекувручную sys.path.append («ваш путь к библиотеке») или Pyinstaller numpy «Intel MKL FATAL ERROR: невозможно загрузить mkl_intel_thread.dll» ...

Если приведенные выше предложения не помогли, попробуйте изменить файл 'CMakeList.txt', измените строку 44 ~ 47 на однодинамическое связывание и повторите установку:

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)
...