|
@@ -35,6 +35,20 @@ if (CUDAToolkit_FOUND)
|
|
|
if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.8")
|
|
if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.8")
|
|
|
list(APPEND CMAKE_CUDA_ARCHITECTURES 89-real)
|
|
list(APPEND CMAKE_CUDA_ARCHITECTURES 89-real)
|
|
|
endif()
|
|
endif()
|
|
|
|
|
+
|
|
|
|
|
+ if (CUDAToolkit_VERSION VERSION_GREATER_EQUAL "12.8")
|
|
|
|
|
+ # The CUDA architecture 120f-virtual would in principle work for Blackwell support
|
|
|
|
|
+ # but the newly added "f" suffix conflicted with a preexising regex for validating CUDA architectures in CMake.
|
|
|
|
|
+ # So either a recent CMake version or one with the backported fix is needed.
|
|
|
|
|
+ # The following versions should work:
|
|
|
|
|
+ # - CMake >= v3.31.8 && CMake < v4.0.0
|
|
|
|
|
+ # - CMake >= v4.0.2
|
|
|
|
|
+ # This is NOT documented in the CMake release notes,
|
|
|
|
|
+ # check Modules/Internal/CMakeCUDAArchitecturesValidate.cmake in the CMake git repository instead.
|
|
|
|
|
+ # However, the architectures 120a-real and 121a-real should work with basically any CMake version and
|
|
|
|
|
+ # until the release of e.g. Rubin there is no benefit to shipping virtual architectures for Blackwell.
|
|
|
|
|
+ list(APPEND CMAKE_CUDA_ARCHITECTURES 120a-real 121a-real)
|
|
|
|
|
+ endif()
|
|
|
endif()
|
|
endif()
|
|
|
endif()
|
|
endif()
|
|
|
message(STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}")
|
|
message(STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}")
|
|
@@ -62,7 +76,7 @@ if (CUDAToolkit_FOUND)
|
|
|
else()
|
|
else()
|
|
|
foreach(ARCH ${CMAKE_CUDA_ARCHITECTURES})
|
|
foreach(ARCH ${CMAKE_CUDA_ARCHITECTURES})
|
|
|
if(ARCH MATCHES "^12[0-9](-real|-virtual)?$")
|
|
if(ARCH MATCHES "^12[0-9](-real|-virtual)?$")
|
|
|
- message(FATAL_ERROR "Compute capability ${ARCH} used, use ${ARCH}a or ${ARCH}f for Blackwell specific optimizations")
|
|
|
|
|
|
|
+ message(FATAL_ERROR "Compute capability ${ARCH} used, use ${ARCH}a or ${ARCH}f for Blackwell-specific optimizations")
|
|
|
endif()
|
|
endif()
|
|
|
endforeach()
|
|
endforeach()
|
|
|
endif()
|
|
endif()
|