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上的函数。

  • 相关阅读:
    迭代器、生成器、内置函数
    函数
    文件操作
    使用 java 做爬虫的简单例子
    关于 spring 使用 mongodb 的 mongotemplate 对象操作数据库,对象注入问题(即该对象能否正常的调用相应的CRUD方法来处理数据)
    eclipse 使用 “全局搜索” 失灵的解决方法
    使用 Qrcode 生成中间带 logo 的二维码!
    将 BufferedImage 对象图片,转成 Base64 编码给前端<img src="编码"/>展示图片用
    使用 Qrcode 生成二维码
    链接转化成二维码
  • 原文地址:https://www.cnblogs.com/JackOne/p/4202215.html
Copyright © 2011-2022 走看看