Caffe+VS2015+CUDA10+RTX208显卡

由于工程原因,需要使用VS2015,可是微软版本的Caffe使用VS2015无法编译。

在这里写一个基于BVLC的官方版本的Caffe编译过程

caffe:https://github.com/BVLC/caffe/tree/windows

cuda9:自行下载并安装(开始用的是cuda10,编译过了运行总是出问题,最后换成了cuda9,现在想想可能cuda10也可以,但是懒得换回去了)

cmake:自行下载安装

vs2015:自行下载并安装

  • Technically only the VS C/C++ compiler is required (cl.exe)

一、按照caffe官方说明安装即可

说几个注意点:

1. 如果报错no CMAKE_CXX_COMPILER was found 或 no  CMAKE_C_COMPILER was found,需要设置一下cmake的环境变量

  • Pass CMake the path (Set CMAKE_C_COMPILER=your/path/to/cl.exe and CMAKE_CXX_COMPILER=your/path/to/cl.exe)

The path to cl.exe is usually something like "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/your_processor_architecture/cl.exe". 

2. 改一下.\caffe-windows\scripts\build_win.bat中的几个设置

 

需要改的是:

74行:你的vs版本,14对应vs2015

76行:CPU_ONLY=0,表示使用GPU

79行:cuda_arch_name,默认是AUTO,但是我的电脑不能自己识别,在这里总是报错: nvcc fatal   : Unsupported gpu architecture 'compute_481'。因此我改成了Kepler,注意的是cuda9以上的版本不支持Fermi那一栏了。

这个kelper是怎么来的,请参考caffe-windows\cuda\cuda.cmake文件里的

  if(${CUDA_ARCH_NAME} STREQUAL "Fermi")
    set(__cuda_arch_bin "20 21(20)")
  elseif(${CUDA_ARCH_NAME} STREQUAL "Kepler")
    set(__cuda_arch_bin "30 35")
  elseif(${CUDA_ARCH_NAME} STREQUAL "Maxwell")
    set(__cuda_arch_bin "50")
  elseif(${CUDA_ARCH_NAME} STREQUAL "Pascal")
    set(__cuda_arch_bin "60 61")
  elseif(${CUDA_ARCH_NAME} STREQUAL "All")
    set(__cuda_arch_bin ${Caffe_known_gpu_archs})
  elseif(${CUDA_ARCH_NAME} STREQUAL "Auto")
    caffe_detect_installed_gpus(__cuda_arch_bin)
  else()  # (${CUDA_ARCH_NAME} STREQUAL "Manual")
    set(__cuda_arch_bin ${CUDA_ARCH_BIN})
  endif()

 

注:如果用AUTO make没问题不需要改这些参数。

87行,你的python版本,注意下面还有python的路径要修改,需要跟这个版本匹配

其他按自己需要

OK~

二、在build_win的上一级目录下运行这个bat文件

运行的时候会自动下载第三方依赖库,默认存在C:/user/yourusername/.caffe中

遇到的一个问题是fatal error C1017:invalid integer constant expression

这是在编译.cu层的时候才会出现的错误,说明问题还是出在cuda相关的地方。

看红字部分,说问题出在nvcc.h文件中22行,打开这个文件把第22行开始注释掉,保存。

因为22行是判断cuda版本的代码,不影响,可以注释掉。

//#if !defined(__CUDACC_VER__) || (__CUDACC_VER__ < 70500)
//#   define BOOST_NO_CXX11_VARIADIC_TEMPLATES
//#endif

三、再运行build_win.bat成功, .\caffe-windows\build\tools\Release路径下的exe可以直接用

编译成功不代表成功……在使用caffe.exe训练的时候,出现错误

 error == cudaSuccess (209 vs. 0)  no kernel image is available for execution on the device

这个错误是由于在编译的时候caffe的cuda计算能力设置不正确导致的,跟上面build_win.bat中的79行的cuda_arch_name的设置有关系。

cuda9 最高支持到sm_70,最低sm_30

cuda10可以支持sm_75,最低sm_30

针对你的显卡和cuda版本,设置合适的cuda_arch_name

这里我用cuda9,故需要在cuda.cmake中增加一行gpu_arch 70的描述

第一处:第7行

第二处:63行

第三处:101行

四、上一个错误解决,出现新的报错Check failed: status == CUBLAS_STATUS_SUCCESS (13 vs. 0) CUBLAS_STATUS_EXECUTION_FAILED
去官网下载一个补丁2安装:download patch 2

https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal

重新make caffe

解决啦~~~~~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章