zoukankan      html  css  js  c++  java
  • Windows下利用MKL加速caffe,与openblas比较

    一、介绍:先简单Mark一下网上的介绍资料,弄清楚MKL是个啥,已经与openblas等的关系。

    1. 矩阵运算库blas, cblas, openblas, atlas, lapack, mkl之间有什么关系,在性能上区别大吗? 摘自:https://www.zhihu.com/question/27872849
    2. 比较OpenBLAS,Intel MKL和Eigen的矩阵相乘性能。 摘自:http://www.leexiang.com/the-performance-of-matrix-multiplication-among-openblas-intel-mkl-and-eigen

    二、MKL使用:

    1. 之前的项目使用的是openblas,需要替换成MKL,然后测试不同库的效率。首先需要注意的是,这种换库,或者更新cudnn的版本,需要重新编译caffe。

    2. 具体步骤:

      - STEP1: 取消之前对openblas.lib静态库的依赖,然后删除openblas.dll(我为了避免是openblas还在起作用)。重新编译caffe的话,应该会在math_function.h中报错。

      - STEP2: 在网上下载MKL的库,官网地址:https://software.intel.com/en-us/mkl。这里我有点疑问,看某些教程说是下载parallel_studio_xe,我理解MKL集成在parallel_studio_xe里面了。因此下载两个都是OK的。

                        只下载MKL的话,VS中右键项目不会出现Intel Compile那个选项。但是我之后也没有用到过这个选项。

      - STEP3: 按照网上的教程:

        1. 在“配置属性”下的“Intel Performance Libraries”面板上的“Use Intel MKL”条目的右边的下拉框选择“Parallel” 
          这里写图片描述

        2. 在“VC++目录”下设置以下: 
          可执行文件目录为:D:Program Files (x86)IntelComposer XE 2015 edistintel64mkl 
          包含目录为:D:Program Files (x86)IntelComposer XE 2015mklinclude 
          库目录为:D:Program Files (x86)IntelComposer XE 2015compilerlibintel64;D:Program Files (x86)IntelComposer XE 2015mkllibintel64 
          注意:如果是32位的,就不是“intel 64”而是“ia32” 
          这里写图片描述

        3. 在“自定义生成步骤”下,设置“附加依赖项”,选择以下lib文件,缺少什么可能需要尝试以下,一般是这几个: 
          mkl_intel_c.lib 
          mkl_intel_thread.lib 
          mkl_core.lib 
          libiomp5md.lib 
          这里写图片描述

        4. 基本以上步骤就够了,或者参考intel官方给出的文档。

     三、效率比较:我的理解,MKL对GPU并没有太多的加速功能,对CPU的加速效果还是比较明显的,跑了一个行人结构化分析:

      

      前两次都是openblas的,最后是cudnn_6+MKL。

  • 相关阅读:
    基于事件的异步编程
    基于任务的异步编程
    C#异步编程
    C#2.0
    Mac上安装Brew
    PHP中三维数组转二位数组,并且根据某个字段去重
    LNMP环境安装Laravel之后, 除了根目录下可以访问, 其他都是404页面
    LNMP一键安装包安装的mysql远程连接不上的问题
    CentOS7 安装Redis4.0
    CentOS 7 源码包安装SVN及使用
  • 原文地址:https://www.cnblogs.com/liumeng-blog/p/7978861.html
Copyright © 2011-2022 走看看