nvcc fatal : Unsupported gpu architecture 'compute_11'
???????? 使用VS編譯OpenCV編譯源代碼時候,對Cmake生成的工程文件編譯,會出現 nvcc fatal : Unsupported gpu architecture 'compute_11'? 問題。原因是CUDA7.5不支持較為古老的顯卡版本,因此1.1,2.0,2.1,之類的顯卡選項是多余的。
??????? 需要更改Cmake GUI對工程的配置,去掉對compute_11的支持
1. 打開cmakelist.txt
? ? ? CMake的選項中聲明 -D CUDA_GENERATION=Kepler?
即添加:
if(WIN32 AND NOT MINGW)add_definitions(-D_VARIADIC_MAX=10) endif(WIN32 AND NOT MINGW)#此處為添加代碼 if(1) add_definitions( -D_CUDA_GENERATION=Maxwell)不能消除這種現象,問題沒有得到解決。
參考:安裝caffe的血淚史
? ? ? ? ?? cmake 命令命令安裝、用法
?????????? cmake常用變量速查手冊
?????????? linux版本編譯OpenCV可能出現的Compute_11問題
?????????? 對于Maxwell的支持,參考:Vs13+Win7+OpenCV2.4.13+CUDA7.5支持?
2.
改正方法:
?? ? ? 把CUDA欄目里面,CUDA_ARCH_BIN 項目里面,3.0前面的都去掉,改成如下所示。
???????
之前,
1. 先把CUDA_generation 修改為Auto
??????
2. 打開 sources\cmake 目錄,使用文本編輯器編輯OpenCVDetectCUDA.cmake
找到下面一段
if(NOT DEFINED __cuda_arch_bin)if(ANDROID)set(__cuda_arch_bin "3.2")set(__cuda_arch_ptx "")else()if(${CUDA_VERSION} VERSION_LESS "5.0")set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")else()set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1 3.0 3.5")endif()set(__cuda_arch_ptx "3.0")endif()endif()把第二個1.1? 1.2? 1.3? 2.0 2.1? 去掉,修改為 if(NOT DEFINED __cuda_arch_bin)if(ANDROID)set(__cuda_arch_bin "3.2")set(__cuda_arch_ptx "")else()if(${CUDA_VERSION} VERSION_LESS "5.0")set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")else()set(__cuda_arch_bin "3.0 3.5")endif()set(__cuda_arch_ptx "3.0")endif()endif()
或者直接修改為使用于本機GTX960 顯卡的 5.2,
才能把CUDA_ARCH_BIN 的1.1 1.2 1.3 2.0 2.1 去掉,進而解決 nvcc fatal : Unsupported gpu architecture 'compute_11'? 問題。
若不能通過編輯選項去掉,應該有其他可行的方法???
則可以編譯通過。
總結
以上是生活随笔為你收集整理的nvcc fatal : Unsupported gpu architecture 'compute_11'的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信读书如何切换账号
- 下一篇: 银行存款利率表2022最新利率死期,各银