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

  • 相关阅读:
    小程序云开发 -- 云函数定时触发器配置
    小程序echarts 构建中国地图并锚定区域点击事件
    微信小程序接入百度OCR(身份证识别)
    微信小程序开发技巧总结(三)-- 云开发时效数据刷新和存储 (access_token等)
    微信小程序仿朋友圈功能开发(发布、点赞、评论等功能)
    微信小程序开发技巧总结(二) -- 文件的选取、移动、上传和下载
    SpringBoot Jpa 自定义查询
    SpringBoot Jpa 分页查询最新配置方式
    【软工】提问回顾与个人总结
    【软工】[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE
  • 原文地址:https://www.cnblogs.com/JackOne/p/4202215.html
Copyright © 2011-2022 走看看