From 0e46b5e2fee587d8caa7bc5d8d0a69f978a037cb Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Thu, 30 Apr 2026 13:43:27 +0200 Subject: [PATCH] CUDA: Build for newer GPUs and restrict CUDA version to 12.8+ --- CMakeLists.txt | 15 +++++++++------ docs/SOFTWARE.md | 2 +- image_analysis/indexing/CMakeLists.txt | 2 -- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 35d03d0a..c29b706e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,21 +39,24 @@ INCLUDE(CheckLanguage) INCLUDE(CheckIncludeFile) CHECK_LANGUAGE(CUDA) -SET(CMAKE_CUDA_ARCHITECTURES 75 80 86 89) # T4, A100, RTX A4000, L4 +SET(CMAKE_CUDA_ARCHITECTURES 75 80 86 89 90 100 120) # T4, A100, RTX A4000, L4 SET(CMAKE_CUDA_STANDARD 17) SET(CMAKE_CUDA_FLAGS_RELEASE "-O3") +SET(CMAKE_CUDA_RUNTIME_LIBRARY Static) SET(JFJOCH_CUDA_AVAILABLE OFF) IF (CMAKE_CUDA_COMPILER) IF (JFJOCH_USE_CUDA) ENABLE_LANGUAGE(CUDA) - FIND_PACKAGE(CUDAToolkit REQUIRED) - SET(CMAKE_CUDA_RUNTIME_LIBRARY Static) MESSAGE(STATUS "CUDA VERSION: ${CMAKE_CUDA_COMPILER_VERSION}") - ADD_COMPILE_DEFINITIONS(JFJOCH_USE_CUDA) - FIND_LIBRARY(CUDART_LIBRARY cudart_static PATHS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES} REQUIRED) - SET(JFJOCH_CUDA_AVAILABLE ON) + IF (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "12.8") + FIND_PACKAGE(CUDAToolkit REQUIRED) + ADD_COMPILE_DEFINITIONS(JFJOCH_USE_CUDA) + SET(JFJOCH_CUDA_AVAILABLE ON) + ELSE() + MESSAGE(WARNING "CUDA older than 12.8 not supported") + ENDIF() ELSE() MESSAGE(WARNING "CUDA Available, but disabled by user") ENDIF() diff --git a/docs/SOFTWARE.md b/docs/SOFTWARE.md index d2304b59..d64671e8 100644 --- a/docs/SOFTWARE.md +++ b/docs/SOFTWARE.md @@ -19,7 +19,7 @@ Required: * JPEG library (preferably jpeg-turbo) - see [github.com/libjpeg-turbo/libjpeg-turbo](https://github.com/libjpeg-turbo/libjpeg-turbo) Optional: -* CUDA compiler version 11 or newer - required for MX fast feedback indexer +* CUDA compiler version 12.7 or newer - required for MX fast feedback indexer * FFTW library - for indexing if GPU/CUDA is absent * NUMA library - to pin threads to nodes/CPUs * Node.js - to make frontend diff --git a/image_analysis/indexing/CMakeLists.txt b/image_analysis/indexing/CMakeLists.txt index fbbb2df7..bea0431b 100644 --- a/image_analysis/indexing/CMakeLists.txt +++ b/image_analysis/indexing/CMakeLists.txt @@ -17,8 +17,6 @@ ADD_LIBRARY(JFJochIndexing STATIC TARGET_LINK_LIBRARIES(JFJochIndexing JFJochCommon) IF (JFJOCH_CUDA_AVAILABLE) - SET(CMAKE_CUDA_ARCHITECTURES 75 80 86 89) - FetchContent_Declare( fast-indexer GIT_REPOSITORY https://github.com/paulscherrerinstitute/fast-feedback-indexer/