win7 64位下编译convnet

来源:互联网 发布:淘宝的来历,知乎 编辑:程序博客网 时间:2024/05/14 10:49

这篇方法主要参考香港中文大学xiong大的博文[1]。


需要预先安装的软件(64位)

  1. CUDA 6.0
  2. Python 2.7 我安装的是Ananconda,整合了很多package。这里多说一句,Anaconda自带的numpy在windows系统里只支持AMD64位,不支持Intel,所以需要下载MKL的numpy重新安装一下就好了。
  3. Pthreads我下载的版本是pthreads-w32-2-9-1-release,下载后直接解压就可以了。
  4. Intel C++ Composer 在本站搜parallel_studio_xe_2013_update4可以下到安装文件和许可证。
  5. Dependency Walker 不建议安装,因为它给出的检测结果往往不准确。
需要的原代码
  1. Cuda-convnet的原代码,by Alex Krizhevsky
  2. Convnet的VS工程文件,by Oriol Vinyals,下载解压后放在Alex的源文件夹内。
接下来要做的改造
  1. 用文本编辑器打开工程文件中的pyconvnet.vcxproj,找到
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

    部分,分别将AdditionalIncludeDirectories,AdditionalDependencies,AdditionalLibraryDirectories 和 Include部分改成:(根据自己文件位置不同而改动)
    <AdditionalIncludeDirectories>D:/Anaconda/Lib/site-packages/numpy/core/include/numpy;D:/Anaconda/include;./include/common;./include/nvmatrix;./include/cudaconv2;./include;./;$(CudaToolkitIncludeDir);D:/pthread/Pre-built.2/include;D:\OpenBlas\OpenBLAS-v0.2.8-x86_64-Win\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0\common\inc;C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v6.0/include</AdditionalIncludeDirectories><pre name="code" class="html"><AdditionalDependencies>mkl_intel_lp64_dll.lib;mkl_intel_thread_dll.lib;pthreadVC2.lib;cublas.lib;cudart.lib;curand.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;python27.lib;libopenblas.lib;%(AdditionalDependencies)</AdditionalDependencies>
    <AdditionalLibraryDirectories>D:\OpenBlas\OpenBLAS-v0.2.8-x86_64-Win\lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\lib\x64;$(CudaToolkitLibDir);D:/Anaconda/libs;D:/pthread/Pre-built.2/lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    <Include>./;./include;./include/common;./include/nvmatrix;./include/cudaconv2;C:/Program Files (x86)/Intel/Composer XE 2013/mkl/include;D:/Anaconda/include;D:/Anaconda/Lib/site-packages/numpy/core/include/numpy;D:/pthread/Pre-built.2/include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v6.0/common/inc</Include>

  2. 还是这个文件里,把所有CUDA 4.0 改成 CUDA 6.0(或者适合自己的版本)
  3. 现在可以用VS打开convnet.sln了。把工程设置为 Release x64,然后就可以rebuild了
  4. Rebuild生成pyconvnet.pyd文件,把它改名成_convnet.pyd
  5. 刚才下载解压好的Pthread文件夹里:pthread\Pre-built.2\dll\x64里找到pthreadVC2.dll,复制粘贴到convnet源文件夹里
  6. 把下列地址加入系统path:
    • C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64\mkl;
      C:\Program Files (x86)\Intel\Composer XE 2013\redist\ia32\mkl;
      C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64\mpirt;
      C:\Program Files (x86)\Intel\Composer XE 2013\redist\intel64\compiler;
      C:\Program Files (x86)\Intel\Composer XE 2013\redist\ia32\mpirt;
      C:\Program Files (x86)\Intel\Composer XE 2013\redist\ia32\compiler;
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\bin;
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\libnvvp;
      C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
    • D:\pthread\Pre-built.2\lib\x64;
      C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;
      C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler;
测试代码
  1. 下载CIFAR-10数据
  2. 在cmd里输入
    python convnet.py --data-path=F:/workspace/Data/CIFAR10/cifar-10-py-colmajor/ --save-path=./storage/tmp --test-range=6 --train-range=1-5 --layer-def=./example-layers/layers-19pct.cfg --layer-params=./example-layers/layer-params-19pct.cfg --data-provider=cifar --test-freq=13 --epoch=200

    就可以运行了



















Reference

[1] http://personal.ie.cuhk.edu.hk/~xy012/others/install_cudaconvnet.html

0 0
原创粉丝点击