From 494408ead6af31d064e33c721ca5a1c867e60999 Mon Sep 17 00:00:00 2001 From: Carsten Griwodz Date: Mon, 12 Aug 2024 11:20:21 +0200 Subject: [PATCH] explicit CC list for Jetson and Tegra platforms --- CMakeLists.txt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a9c033cb..de88e943 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,27 @@ # First-order language CUDA requires at least CMake 3.18 cmake_minimum_required(VERSION 3.24) +# Default seletion of CUDA Compute Capabilities. +# This must be called before project() or cmake sets it to the oldest non-deprecated CC +# "all" and "all-major" work for Intel and perhaps for ARM with discrete GPUs, but not Tegra and Jetson. +if(EXISTS "/etc/nv_tegra_release") + # The CC list for Tegras and Jetson will require manual updates + set(CMAKE_CUDA_ARCHITECTURES "53;62;72;87" + CACHE + STRING "Which CUDA CCs to support: native, all, all-major or an explicit list delimited by semicolons") +else() + # The CC list for discrete GPUs will require CMake updates + set(CMAKE_CUDA_ARCHITECTURES "all-major" + CACHE + STRING "Which CUDA CCs to support: native, all, all-major or an explicit list delimited by semicolons") +endif() + project(PopSift VERSION 1.0.0 LANGUAGES CXX CUDA) # Policy to support CUDA as a first-order language for CMake. # Since CMake 3.18. See https://cmake.org/cmake/help/latest/policy/CMP0104.html cmake_policy(SET CMP0104 NEW) -set(CMAKE_CUDA_ARCHITECTURES "all-major" - CACHE - STRING "Which CUDA CCs to support: native, all, all-major or an explicit list delimited by semicolons" - FORCE) - # Set build path as a folder named as the platform (linux, windows, darwin...) plus the processor type set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")