3.23.0-rc1: Regression using CUDA_ARCHITECTURES with nvcc 11.5+
Specifying CMAKE_CUDA_ARCHITECTURES before target creation or setting the target property CUDA_ARCHITECTURES does not affect compilation options passed to nvcc. With CMake 3.22.2 it works as expected.
Generator: Visual Studio 17 2022
CUDA version: 11.6
Here is a small example CMakeLists.txt:
cmake_minimum_required(VERSION 3.23)
set(CMAKE_CUDA_ARCHITECTURES 75)
project(example LANGUAGES CUDA)
set(src "${CMAKE_CURRENT_BINARY_DIR}/main.cu")
file(CONFIGURE OUTPUT ${src} CONTENT "int main(){}")
add_executable(test ${src})
set_target_properties(test PROPERTIES CUDA_ARCHITECTURES "75")
This is the resulting compiler invocation:
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin\nvcc.exe" -gencode=arch=compute_52,code=\"sm_52,compute_52\" --use-local-env -ccbin "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\HostX64\x64" -x cu -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include" --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -Xcompiler="/EHsc -Zi -Ob0" -g -D_WINDOWS -D"CMAKE_INTDIR=\"Debug\"" -D_MBCS -D"CMAKE_INTDIR=\"Debug\"" -Xcompiler "/EHsc /W1 /nologo /Od /Fdtest.dir\Debug\vc143.pdb /FS /Zi /RTC1 /MDd " -o test.dir\Debug\main.obj "D:\build\bad_cuda_architectures\main.cu"
The bad part:
-gencode=arch=compute_52,code=\"sm_52,compute_52\"