inherited architecture compute_20,sm_20

CUDA 8.0 + VS2012 SP1 + Intel VF2013 on 64 Win7

We upgrade to CUDA 8 (from CUDA 7) and try to remove the message “obsolete compute_20 and sm_20”. Our solution did not set the architecture. I am trying to specify 30, 40 and 50 and I have experienced few issues. Here is one (others are on different topics).

  1. When specifying let’s say compute_50,sm_50 in the project’s properties (CUDA C+±>device) a build message mentions the obsolete compute_20 and sm_20. This seems to be an inherited value. Q1: from where? Q2: how can I remove this default (as call to nvcc includes both architectures (see the error message below for evidence)?

error MSB3721: The command ““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe” -dlink -o x64\Release\cvfac.device-link.obj -Xcompiler “/EHsc /W3 /nologo /O2 /Zi /MD " -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64” -LE:\MDE\Release\ cudart_static.lib cudart.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib E:\MDE\x64\Release\ambi.lib -gencode=arch=compute_50,code=sm_50 -gencode=arch=compute_20,code=sm_20 --machine 64 x64\Release\ x64\Release\” exited with code 1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\CUDA 8.0.targets 773 9 cvfac

CUDA 8 does not generate errors when specifying compute_20 or sm_20. It generates warnings. The error MSB3721 is arising from something else. You may be able to get more information by turning on verbose output in VS.

Inheritance can occur from project defaults as well as per-file inheritance. Both methods are present in VS, you will need to check each depending on how you have your project set up.