|
|
@@ -1,9 +1,17 @@
|
|
|
cmake_minimum_required(VERSION 3.18)
|
|
|
+unset(ENV{CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP}) # CUBIN needs true native arch
|
|
|
project(CudaCUBIN LANGUAGES CUDA)
|
|
|
|
|
|
-
|
|
|
set(CMAKE_CUDA_ARCHITECTURES all-major)
|
|
|
|
|
|
+# CUBIN needs the true native arch to be supported by the CUDA toolkit.
|
|
|
+set(unavailable_native_archs "${CMAKE_CUDA_ARCHITECTURES_NATIVE}")
|
|
|
+list(REMOVE_ITEM unavailable_native_archs ${CMAKE_CUDA_ARCHITECTURES_ALL})
|
|
|
+if(unavailable_native_archs)
|
|
|
+ add_executable(CudaOnlyCUBIN main_no_native_archs.cu)
|
|
|
+ return()
|
|
|
+endif()
|
|
|
+
|
|
|
add_library(CudaCUBIN OBJECT kernelA.cu kernelB.cu kernelC.cu)
|
|
|
set_property(TARGET CudaCUBIN PROPERTY CUDA_CUBIN_COMPILATION ON)
|
|
|
set_property(TARGET CudaCUBIN PROPERTY CUDA_ARCHITECTURES native)
|