MKL-DNN学习笔记 (一) windows下环境配置和编译sample

最近在研究超分辨率重建的推理加速,需要用到一些加速算法库。CPU下面要用到MKL-DNN的加速库,网上能找到的资源不多,这里把我学习的心得记录一下,给大家做个参考.。

 

MKL-DNN的官方网址在这里

https://github.com/intel/mkl-dnn

它是由Intel开发和维护的一个开源算法库,应该很多代码是出自Intel另一个闭源算法库mkl。从其他地方看到这个库NB的地方是用了JIT相关的一些技术,可以根据当前的CPU类型动态的使用最佳算法来计算。整个算法是完全开源的,本来想学习一下JIT的思路和实现,但是Intel牛X的地方就是你看到了每一行代码,但是就是看不懂。看来不下大功夫大时间下去啃代码是不行的。先学习怎么用再说吧。

这个项目里提供了源码和预编译好的加速库。我先跳过编译部分,直接用预编译的库来快速上手。我下载的库链接在这里

https://github.com/intel/mkl-dnn/releases/tag/v1.0.2 

用的是 mkldnn_win_1.0.2_cpu_iomp.zip 版本,因为根据我以往的经验intel openMP的效率会比TBB要高一些。把包下载回来,解压到自己的work目录里,下面开始编译包里examples目录下的cpu_getting_started.cpp

 

VS2017下创建一个空项目relu

创建空项目relu

再添加一个relu.cpp

将mkldnn_win_1.0.2_cpu_iomp\examples下面的cpu_getting_started.cpp的代码拷贝粘贴到relu.cpp中

下面开始配置编译环境

1. property的VC++ Directories下面

"Include Directories"加入 C:\work\mkldnn_win_1.0.2_cpu_iomp\include

"Library Directories"加入 C:\work\mkldnn_win_1.0.2_cpu_iomp\lib

2. Linker的Input下面

"Additional Dependencies"加入 mkldnn.lib

这3个改动,前2个是配置VS编译时候的查找头文件和查找链接库文件的路径,第3个是告诉VS生成可执行文件的时候link mkldnn.lib这个库文件。

我的编译设置是在x64 Release模式下,因为mkldnn不支持32bit x86模式。

 

接下来编译,生成可执行文件。再将mkldnn_win_1.0.2_cpu_iomp\bin下的mkldnn.dll拷贝到生成的可执行文件目录下即可。

运行一下

成功。

再在command console下面设置一个环境变量 set MKLDNN_VERBOSE=1

这个可以让mkldnn运行时候输出一些信息,便于以后的调试

看看效果

这句输出非常重要

mkldnn_verbose,exec,cpu,eltwise,jit:avx2,forward_inference,data_f32::blocked:acdb:f0 diff_undef::undef::f0,alg:eltwise_relu:0:0,1x3x13x13,4.81806
  • jit:avx2

        可以看出在我的i5-7440HQ上用了AVX2的代码来运行这个relu 

  • forward_inference,data_f32::blocked:acdb:f0 diff_undef::undef::f0,alg:eltwise_relu:0:0,1x3x13x13,

        可以看到操作的类型,以及内存对象的数据格式,最后1x3x13x13是内存对象的维度信息,4D 1x3x13x13 正好是代码里定义的NxCxHxW

  • 4.81806

        这个是这个操作的时间,单位是ms(毫秒)

 

 

搞定,收工!!!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值