MATLAB编码器:我如何构建英特尔MKL-DNN库深度学习c++代码生成和部署?

209(30天)
我看到一些深度学习网络支持代码生成使用MATLAB编码器:金宝app
我想从我的深入学习网络生成代码(如AlexNet、GoogLeNet ResNet, SqueezeNet, VGG-16/19,等等)上运行英特尔cpu使用MATLAB编码器和英特尔MKL-DNN图书馆。这样做的步骤是什么?

接受的答案

比尔周”class=
比尔周 2021年5月13日
编辑:比尔周 2022年7月29日
注意:以下适用于R2021a和MATLAB编码器和MKL-DNN v1.4更新版本的发布 在这里 。更新的版本,请参阅下面的下一个回答。
注意:英特尔最近改名为图书馆MKL-DNN oneDNN,所以我们使用MKL-DNN和oneDNN互换。
背景
生成并运行深度学习c++代码,您必须英特尔数学内核库深层神经网络(英特尔MKL-DNN)。不使用预构建图书馆因为一些必需的文件丢失。相反,从源代码构建图书馆。
下面描述了为MKL-DNN在Windows和Linux平台上构建指令。
从源代码构建英特尔MKL-DNN库,您必须:
  • 操作系统与英特尔64架构的支持金宝app
  • 与c++ 11标准c++编译器的支持金宝app
  • CMake 2.8.11或更高版本
Windows MKL-DNN构建指令
这些MKL-DNN构建步骤已经验证通过使用Visual Studio 2017版本15.0在64位Windows平台上。如果你想使用一个新版本的Visual Studio构建MKL-DNN图书馆工作,使用它在你自己的自由裁量权。
1。从这个链接下载MKL-DNN v1.4源代码( https://github.com/oneapi-src/oneDNN/archive/v1.4.zip )和提取源代码。这个动作创建文件夹 onednn - 1.4
2。在Windows命令行,改变当前目录 onednn - 1.4 。生成一个微软Visual Studio解决方案”英特尔MKL-DNN (R)。sln”通过运行这些命令:
mkdir构建
cd构建
cmake- g“Visual Studio 15 2017 Win64”. .
3所示。改变当前目录 onednn - 1.4 \构建 。运行这个命令:
cmake——构建。——配置版本
这个动作在文件夹中创建这些库 onednn - 1.4 \制造\ src \释放 :
  • dnnl.lib
  • dnnl.dll
里面的文件夹 C:\Program Files 创建一个文件夹,命名 mkl-dnn 。然后,在文件夹中 C:\Program Files\mkl-dnn 创建一个文件夹,命名 自由 。将生成的库复制到文件夹中 C:\Program Files\mkl-dnn\lib
在Windows操作系统中,允许特殊字符和空格的路径只有8.3文件名被启用。如果不启用,替换 C:\Program Files\mkl-dnn\lib 的路径不包含空格。8.3文件名称的更多信息,请参阅Windows文档。
包含文件的副本 onednn - 1.4 \包括 onednn - 1.4 \制造\包括 C:\Program Files\mkl-dnn\include
4所示。MATLAB环境变量设置 INTEL_MKLDNN C:\Program Files\mkl-dnn 。在MATLAB命令提示符,输入:
setenv (“INTEL_MKLDNN”,“C: \ Program Files \ mkl-dnn”)
添加 C:\Program Files\mkl-dnn\lib PATH变量,运行:
setenv (“路径”,采用“INTEL_MKLDNN”)filesep“自由”pathsep getenv (“路径”)))
5。如果你已经没有这么做,你必须设置一个环境变量窗口。在Windows命令行,输入:
路径=% %路径;C:\Program Files\mkl-dnn\lib
此外,创建和设置 INTEL_MKLDNN 环境变量在Windows指向 C:\Program Files\mkl-dnn
Linux MKL-DNN构建指令
c++编译器要求:
  • 安装任何一个GNU编译器版本的GNU compiler Collection。包括版本4.8,5.4,6.1,7.2和8.1。
1。从这个链接下载MKL-DNN v1.4源代码( https://github.com/oneapi-src/oneDNN/archive/v1.4.tar.gz )和运行此命令提取源代码的Linux终端:
焦油-xvzf oneDNN-1.4.tar.gz
这个动作创建文件夹 onednn - 1.4
2。生成makefile进行编译,运行这些命令的终端 onednn - 1.4 文件夹:
mkdir- p构建
cd构建
cmake-DCMAKE_BUILD_TYPE =释放. .
3所示。建立图书馆,在终端的运行此命令 onednn - 1.4 /构建 文件夹:
使- j
这些命令创建这些库的文件夹 onednn - 1.4 /构建/ src :
  • libdnnl.so
  • libdnnl.so.1
  • libdnnl.so.1.4
这些库复制到 /usr/local/mkl-dnn/lib
包含文件的副本 onednn - 1.4 /包括 onednn - 1.4 /构建/包括 /usr/local/mkl-dnn/include
4所示。MATLAB环境变量设置 INTEL_MKLDNN /usr/local/mkl-dnn 。在MATLAB命令行,输入:
setenv (“INTEL_MKLDNN”,/usr/local/mkl-dnn”)
5。添加 /usr/local/mkl-dnn/lib 路径 变量:
setenv (“LD_LIBRARY_PATH”,采用“INTEL_MKLDNN”)filesep“自由”pathsep getenv (“LD_LIBRARY_PATH”)));
如果你已经没有这么做,你必须为Linux设置环境变量。使用Linux的Linux终端设置变量的语法 LD_LIBRARY_PATH /usr/local/mkl-dnn/lib 和环境变量 INTEL_MKLDNN /usr/local/mkl-dnn
macOS MKL-DNN构建指令
c++编译器要求:
1。从这个链接下载MKL-DNN v1.4源代码( https://github.com/oneapi-src/oneDNN/archive/v1.4.tar.gz 通过运行这个命令)和提取源代码终端:
焦油-xvzf oneDNN-1.4.tar
这个动作创建文件夹 onednn - 1.4
2。macOS叮当声编译器并不附带OpenMP。得到OpenMP启用mkldnn库,您必须安装酿造和libomp:
a。主机mac电脑上安装家酿啤酒通过运行这个命令在bash终端
/usr/bin/ruby - e“$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
b。安装OpenMP利用酿造用命令:
美元(BREW_INSTALL_PATH) /酿造安装libomp
3所示。生成makefile进行编译,运行这些命令的终端 onednn - 1.4 文件夹:
mkdir- p构建
cd构建
美元(CMAKE_INSTALL_PATH) cmake . .-DOpenMP_CXX_FLAGS =“-Xclang -fopenmp - i (OMP_INSTALL_PATH) /美元包括“-DOpenMP_C_FLAGS =“-Xclang -fopenmp - i (OMP_INSTALL_PATH) /美元包括“-DOpenMP_CXX_LIB_NAMES = libomp -DOpenMP_C_LIB_NAMES = libomp -DOpenMP_libomp_LIBRARY =美元(OMP_INSTALL_PATH) / lib / libomp。dylib -DCMAKE_SHARED_LINKER_FLAGS =“- l (OMP_INSTALL_PATH) / lib -lomp美元”
4所示。建立图书馆,在终端的运行此命令 onednn - 1.4 /建立文件夹 :
使- j
这些命令创建这些库的文件夹 onednn - 1.4 /构建/ src :
  • libdnnl.dylib
  • libdnnl.1.dylib
  • libdnnl.1.4.dylib
这些库复制到 /usr/local/mkl-dnn/lib
包含文件的副本 onednn - 1.4 /包括 /usr/local/mkl-dnn/include
5。复制OpenMP MKL-DNN所需的依赖项:
  • OpenMP图书馆美元(OMP_INSTALL_PATH) / lib/usr/local/mkl-dnn/lib
  • OpenMP包括文件从(OMP_INSTALL_PATH) /包括美元/usr/local/mkl-dnn/include
6。OpenMP库路径很难约束mkldnn图书馆。列出这个硬绑定,运行以下命令:
otool- l libdnnl.dylib
7所示。这硬绑定路径必须改变的可移植性和其他mac机器。要做到这一点,运行:
install_name_tool改改/usr/local/opt/libomp/lib/libomp.dylib @rpath / libomp。dylib libdnnl.1.dylib
install_name_toolid“@rpath / libomp。dylib”libomp.dylib
改变, rpath 允许的可移植性 mkldnn / OpenMP 图书馆和其他mac机器。这可以避免任何运行时链接问题。
8。MATLAB环境变量设置 INTEL_MKLDNN /usr/local/mkl-dnn 。在MATLAB命令行,输入:
setenv (“INTEL_MKLDNN”,/usr/local/mkl-dnn”)
11日评论
那加人赛孔雀舞Swaroop Ainapurapu”class=
移动:比尔周 2023年2月14日
我有一个错误
代码生成FeatureInputLayer输入不支持mkldnn目标。金宝app看到
文档的列表支持与每个目标层。金宝app

登录置评。

更多的答案(2)

比尔周”class=
比尔周 2019年2月27日
编辑:比尔周 2023年2月14日
注意:以下适用于R2018b, R2019a, R2019b版本的MATLAB编码器和MKL-DNN v0.14描述 在这里 。更新的版本,请参阅上方和下方的答案。
背景
生成并运行深度学习c++代码,您必须英特尔数学内核库深层神经网络(英特尔MKL-DNN)。不使用预构建图书馆因为一些必需的文件丢失。相反,从源代码构建图书馆。
下面描述了为MKL-DNN在Windows和Linux平台上构建指令。
Windows MKL-DNN构建指令
遵循这些指令,获得推荐的编译器和IDE:
  • 微软Visual Studio 2017
  • 英特尔从英特尔并行c++编译器18.0工作室
这些说明假设使用Microsoft Visual Studio IDE和编译器。cmake也是必需的。
2。将源代码解压到一个文件夹,MKLDNN。从MKLDNN文件夹,从命令提示符,输入:
cd脚本
。\ prepare_mkl.bat
cd。。
这将创建这些库在MKLDNN \ lib \外部\ mklml_win_ *:
  • libiomp5md.dll
  • libiomp5md.lib
  • mklml.dll
  • mklml.lib
3所示。从MKLDNN文件夹中运行这些命令:
mkdir- p构建
cd构建
cmake- g“Visual Studio 15 2017 Win64”. .
这将创建/构建这个Visual Studio解决方案文件:
  • 英特尔MKL-DNN.sln (R)
4所示。在Visual Studio中打开解决方案文件。设置 解决方案配置 下拉, 释放 。点击 构建>构建解决方案 。这将创建这些库MKLDNN \构建\ src \发布:
  • mkldnn.dll
  • mkldnn.lib
复制这些库和C:\Program Files\mkl-dnn\lib.第2步中生成的库
注意,在Windows®操作系统,允许特殊字符和空格的路径只有8.3文件名被启用。如果不启用,取代“C: \ Program Files \ mkl-dnn \ lib”的路径不包含一个空格。8.3文件名称的更多信息,请参阅Windows文档。
从MKLDNN \包括C:\Program Files\mkl-dnn\复制下列文件包括:
  • mkldnn.h
  • mkldnn.hpp
  • mkldnn_debug.h
  • mkldnn_types.h
5。将MATLAB环境变量设置INTEL_MKLDNN C:\Program Files\mkl-dnn.从MATLAB命令窗口中,输入:
setenv (“INTEL_MKLDNN”,“C: \ Program Files \ mkl-dnn \”)
C:\Program Files\mkl-dnn\lib添加到PATH变量。
setenv (“路径”,采用“INTEL_MKLDNN”)filesep“自由”pathsep getenv (“路径”)))
6。如果你没有这么做,你也应该为Windows设置环境变量。从Windows命令提示符,输入:
路径=% %路径;C:\Program Files\mkl-dnn\
Linux MKL-DNN构建指令
遵循这些指令,获得推荐的编译器:
  • GNU C g + + + + 11的金宝app支持
cmake也是必需的。
2。将源代码解压到一个文件夹,MKLDNN。从MKLDNN文件夹,从命令提示符,输入:
cd脚本
修改文件权限+ x prepare_mkl.sh
。/ prepare_mkl.sh
这将创建这些库在MKLDNN /外部/ mklml_lnx_ * / lib:
libiomp5.so
libmklml_intel.so。
3所示。从MKLDNN文件夹中运行这些命令:
mkdir- p构建
cd构建
cmake。。
使
4所示。这下创建这些库MKLDNN /构建/ src:
  1. libmkldnn.so
  2. libmkldnn.so.0
  3. libmkldnn.so.0.14.0。
在步骤2中复制这些库和thelibraries生成/usr/local/mkl-dnn/lib.
从MKLDNN复制下列文件/包括/usr/local/mkl-dnn/include:
  • mkldnn.h
  • mkldnn.hpp
  • mkldnn_debug.h
  • mkldnn_types.h
5。将MATLAB环境变量设置INTEL_MKLDNN /usr/local/mkl-dnn.从MATLAB命令窗口中,输入:
setenv (“INTEL_MKLDNN”,/usr/local/mkl-dnn”)
/usr/local/mkl-dnn/lib添加到PATH变量:
setenv (“LD_LIBRARY_PATH”,采用“INTEL_MKLDNN”)filesep“自由”pathsep getenv (“LD_LIBRARY_PATH”)));
如果你没有这么做,你也应该为Linux设置环境变量。使用Linux语法在Linux终端设置变量LD_LIBRARY_PATH /usr/local/mkl-dnn/lib,和环境变量INTEL_MKLDNN /usr/local/mkl-dnn.
21日的评论

登录置评。


比尔周”class=
比尔周 2020年6月11日
编辑:比尔周 2023年2月14日
注意:以下适用于R2020a和R2020b版本的MATLAB编码器和MKL-DNN v1.0 在这里 。更新的版本,请参阅上面的其他答案。
注意:英特尔最近改名为图书馆MKL-DNN oneDNN,所以我们使用MKL-DNN和oneDNN互换。
背景
生成并运行深度学习c++代码,您必须英特尔数学内核库深层神经网络(英特尔MKL-DNN)。不使用预构建图书馆因为一些必需的文件丢失。相反,从源代码构建图书馆。
下面描述了为MKL-DNN在Windows和Linux平台上构建指令。
从源代码构建英特尔MKL-DNN库,您必须:
  • 操作系统与英特尔64架构的支持金宝app
  • 与c++ 11标准c++编译器的支持金宝app
  • CMake 2.8.11或更高版本
Windows MKL-DNN构建指令
c++编译器要求:
  • 微软Visual c++ 14.0 (Visual Studio 2015更新3)
  • 如果你面对编译错误而构建MKL-DNN,请使用MSVC编译器19.16版。xx或更新的
1。下载mkldnn v1.0源代码的链接( https://github.com/oneapi-src/oneDNN/archive/v1.0.zip )和提取源代码。这个动作创建文件夹 onednn - 1.0
2。生成一个微软Visual Studio解决方案”英特尔MKL-DNN (R)。sln”通过运行这些命令在命令行 onednn - 1.0 文件夹:
mkdir构建
cd构建
cmake- g“Visual Studio 15 2017 Win64”. .
3所示。运行以下命令在命令行 onednn - 1.0 \构建 文件夹:
cmake——构建。——配置版本
这个动作在文件夹中创建这些库 onednn - 1.0 \制造\ src \释放 :
  • mkldnn.lib
  • mkldnn.dll
复制这些生成的库 C:\Program Files\mkl-dnn\lib
注意,在Windows操作系统中,允许特殊字符和空格的路径只有8.3文件名被启用。如果不启用,替换 C:\Program Files\mkl-dnn\lib 的路径不包含一个空格。8.3文件名称的更多信息,请参阅Windows文档。
包含文件的副本 onednn - 1.0 \包括 onednn - 1.0 \制造\包括 C:\Program Files\mkl-dnn\include
4所示。MATLAB环境变量设置 INTEL_MKLDNN C:\Program Files\mkl-dnn 。在MATLAB命令提示符,输入:
setenv (“INTEL_MKLDNN”,“C: \ Program Files \ mkl-dnn”)
添加 C:\Program Files\mkl-dnn\lib 路径 变量。
setenv (“路径”,采用“INTEL_MKLDNN”)filesep“自由”pathsep getenv (“路径”)))
5。如果你已经没有这么做,你必须设置一个环境变量窗口。在Windows命令提示符,输入:
路径=% %路径;C:\Program Files\mkl-dnn\lib
创建和设置 INTEL_MKLDNN 环境变量指向的窗户 C:\Program Files\mkl-dnn
Linux MKL-DNN构建指令
c++编译器要求:
  • 安装任何一个GNU编译器版本的GNU compiler Collection 4.8, 5.4, 6.1, 7.2和8.1
1。下载mkldnn v1.0源代码的链接( https://github.com/oneapi-src/oneDNN/archive/v1.0.tar.gz 通过运行这个命令)和提取源代码终端:
焦油-xvzf oneDNN-1.0.tar.gz
这个动作创建文件夹 onednn - 1.0
2。生成makefile进行编译,运行这些命令的终端 onednn - 1.0 文件夹:
mkdir- p构建
cd构建
cmake-DCMAKE_BUILD_TYPE =释放. .
3所示。建立图书馆,在终端的运行此命令 onednn - 1.0 /构建 文件夹:
使- j
这些命令创建这些库的文件夹 onednn - 1.0 /构建/ src :
  • libmkldnn.so
  • libmkldnn.so.0
  • libmkldnn.so.1.0.0.0
这些库复制到 /usr/local/mkl-dnn/lib
包含文件的副本 onednn - 1.0 /包括 onednn - 1.0 /构建/包括 /usr/local/mkl-dnn/include
4所示。MATLAB环境变量设置 INTEL_MKLDNN /usr/local/mkl-dnn 。在MATLAB命令提示符,输入:
setenv (“INTEL_MKLDNN”,/usr/local/mkl-dnn”)
5。添加 /usr/local/mkl-dnn/lib 路径 变量:
setenv (“LD_LIBRARY_PATH”,采用“INTEL_MKLDNN”)filesep“自由”pathsep getenv (“LD_LIBRARY_PATH”)));
如果你已经没有这么做,你必须为Linux设置环境变量。使用Linux的Linux终端设置变量的语法 LD_LIBRARY_PATH /usr/local/mkl-dnn/lib 和环境变量 INTEL_MKLDNN /usr/local/mkl-dnn
macOS MKL-DNN构建指令(R2020b和更新)
c++编译器要求:
  • 安装支持Xcod金宝appe版本中提到的//www.tatmou.com/support/requirements/supported-compilers.html
1。从链接和下载mkldnn v1.0源代码提取源代码通过运行这个命令终端:
焦油-xvzf mkl-dnn-1.0.tar.gz
这个动作创建文件夹 mkl - - 1.0款
2。macOS叮当声编译器并不附带OpenMp。有一个OpenMp启用mkldnn图书馆,我们需要安装 啤酒,libomp
。家酿啤酒安装在主机mac电脑用下面命令使用bash终端
/usr/bin/ruby - e“$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
b。安装OpenMp使用酿造与命令
美元(BREW_INSTALL_PATH) /酿造安装libomp
3所示。生成makefile进行编译,运行这些命令的终端mkl - - 1.0款文件夹:
mkdir- p构建
cd构建
美元(CMAKE_INSTALL_PATH) cmake . .-DOpenMP_CXX_FLAGS =“-Xclang -fopenmp - i (OMP_INSTALL_PATH) /美元包括“-DOpenMP_C_FLAGS =“-Xclang -fopenmp - i (OMP_INSTALL_PATH) /美元包括“-DOpenMP_CXX_LIB_NAMES = libomp -DOpenMP_C_LIB_NAMES = libomp -DOpenMP_libomp_LIBRARY =美元(OMP_INSTALL_PATH) / lib / libomp。dylib -DCMAKE_SHARED_LINKER_FLAGS =“- l (OMP_INSTALL_PATH) / lib -lomp美元”
这些命令在文件夹中创建这些库mkl - - 1.0 /构建/ src款:
  • libmkldnn.dylib
  • libmkldnn.0.dylib
  • libmkldnn.1.0.0.0.dylib
这些库复制到 /usr/local/mkl-dnn/lib
包含文件的副本 mkld - - 1.0款/包括 /usr/local/mkl-dnn/include
4所示。复制OpenMp mkldnn所需的依赖项
  • OpenMP图书馆美元(OMP_INSTALL_PATH) / lib/usr/local/mkl-dnn/lib
  • OpenMP包括文件从(OMP_INSTALL_PATH) /包括美元/usr/local/mkl-dnn/include
5。OpenMp hardbinded mkldnn库库路径。下面的命令将列出这方面
otool- l libmkldnn.dylib
6。这硬绑定路径必须改变的可移植性和其他mac机器。使用下面的命令
install_name_tool改改/usr/local/opt/libomp/lib/libomp.dylib @rpath / libomp。dylib libmkldnn.0.dylib
install_name_toolid“@rpath / libomp。dylib”libomp.dylib
改变以rpath将使可移植性mkldnn / OpenMP图书馆不同的mac机。这可以避免任何运行时链接问题。
7所示。设置MATLAB环境变量INTEL_MKLDNN /usr/local/mkl-dnn.在MATLAB命令提示符,输入:
setenv (“INTEL_MKLDNN”,/usr/local/mkl-dnn”)
9日评论
Praveen Kumar Gajula”class=
Praveen Kumar Gajula 2021年8月16日
嗨Junyu,
您需要创建文件夹“mkl-dnn”,“自由”和复制库 C:\Program Files\mkl-dnn\lib
谢谢,
Praveen

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!