zoukankan      html  css  js  c++  java
  • 在windows上编译MatConvNet

    有个BT的要求,在windows上使用MatConvNet,并且需要支持GPU。

    费了些力气,记录一下过程(暂不支持vl_imreadjpeg函数)

    这里下载MatConvNet,机器配置vs2010,Matlab2014a,CUDA6.5。

    1. 进入Matlab,切换到{matconvnet_root}:
      1. mex -c -largeArrayDims -lmwblas "matlab/src/bits/im2col.cpp"
      2. mex -c -largeArrayDims -lmwblas "matlab/src/bits/pooling.cpp"  
      3. mex -c -largeArrayDims -lmwblas "matlab/src/bits/normalize.cpp"
      4. mex -c -largeArrayDims -lmwblas "matlab/src/bits/subsample.cpp"
    2. 打开VS command prompt,切换到{matconvnet_root}:
      1. nvcc -c -gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=sm_30 --compiler-options=-fPIC "matlab/src/bits/im2col_gpu.cu"
      2. nvcc -c -gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=sm_30 --compiler-options=-fPIC "matlab/src/bits/pooling_gpu.cu"

      3. nvcc -c -gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=sm_30 --compiler-options=-fPIC "matlab/src/bits/normalize_gpu.cu"

      4. nvcc -c -gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=sm_30 --compiler-options=-fPIC "matlab/src/bits/subsample_gpu.cu"

    3. 再次切换到Matlab:
      1. setenv('MW_NVCC_PATH','C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.5in')
      2. mex "matlab/src/vl_nnconv.cu" "normalize.obj" "normalize_gpu.obj" "pooling.obj" "pooling_gpu.obj" "subsample_gpu.obj" "subsample.obj" "im2col_gpu.obj" -DENABLE_GPU -f mex_CUDA_win64.xml -largeArrayDims -lmwblas -L"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.5libx64" -lcublas -lcudart /NODEFAULTLIB:LIBCMT.lib

      3. mex "matlab/src/vl_nnnormalize.cu" "normalize.obj" "normalize_gpu.obj" "pooling.obj" "pooling_gpu.obj" "subsample_gpu.obj" "subsample.obj"  "im2col_gpu.obj" -DENABLE_GPU -f mex_CUDA_win64.xml -largeArrayDims -lmwblas -L"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.5libx64" -lcublas -lcudart /NODEFAULTLIB:LIBCMT.lib
      4. mex "matlab/src/vl_nnpool.cu" "normalize.obj" "normalize_gpu.obj" "pooling.obj" "pooling_gpu.obj" "subsample_gpu.obj" "subsample.obj" "im2col_gpu.obj" -DENABLE_GPU -f mex_CUDA_win64.xml -largeArrayDims -lmwblas -L"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv6.5libx64" -lcublas -lcudart /NODEFAULTLIB:LIBCMT.lib

    编译完成,运行'matlab/xtest/vl_test_nnlayers(1)'通过。大概就是这个样子。

    听小J说,有个比较奇怪的地方:在做卷积的时候,在GTX980、GTX970显卡上会报错。仔细验证过,不是CUDA SDK的问题,也不是显卡驱动的问题,使用GTX660这些显卡无异常。初步怀疑可能由于Maxwell架构指令集与Kepler架构指令集不兼容导致,不过这些就不是我要考虑的了。

     P.S. 对源文件做过小改动,主要是替换一些linux上的函数。

  • 相关阅读:
    mac下通过brew切换php版本
    大白话,讲编程之《ES6系列连载》汇总
    Mysql命令大全
    值得收藏的前端大牛博客
    web前端 —— 移动端知识的一些总结
    Linux 目录结构
    【WebSocket No.3】使用WebSocket协议来做服务器
    【WebSocket No.2】WebSocket和Socket实现聊天群发
    GroupBy分组的运用和linq左连接
    try、catch、finally详解,你不知道的异常处理
  • 原文地址:https://www.cnblogs.com/JackOne/p/4202215.html
Copyright © 2011-2022 走看看