Caffe-GPU编译问题:nvcc fatal : Unsupported gpu architecture 'compute_92'

方法一

参考
https://github.com/BVLC/caffe/issues/6408
将build_win.cmd中的CUDA_ARCH_NAME=Auto改成CUDA_ARCH_NAME=XXXX
名字要和显卡对应,规则见
http://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/

方法二

参考
https://www.cnblogs.com/zjutzz/p/9532483.html

注意

1.修改D:\Caffe\cmake\Cuda.cmake时,将42,43行替换成set(__nvcc_out “6.1”)数字根据该文章中的情况设置

 42 #string(REGEX MATCH "([1-9].[0-9])" __nvcc_out "${__nvcc_out}")
 43 #string(REPLACE "2.1" "2.1(2.0)" __nvcc_out "${__nvcc_out}")

不过我设置完后仍然报错,所以在caffe_select_nvcc_arch_flags函数中(90-105行左右的位置)手动在if语句后将自己的__cuda_arch_bin设置为(60 61),如下,最后一行是我自己加的,也不知道为什么这样才起了作用。

 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()
  set(__cuda_arch_bin "60 61")

2.修改nvcc.hpp文件时,注释最后三行,用//注释。开始看到文件时一直以为#就是注释了呢。

你可能感兴趣的:(Caffe-GPU编译问题:nvcc fatal : Unsupported gpu architecture 'compute_92')