From 0d08748ffac55268bb38848eac6211542355544e Mon Sep 17 00:00:00 2001 From: shawnz Date: Wed, 28 May 2025 11:42:49 +0800 Subject: [PATCH 1/2] Bug 5305842: Update CMakeLists.txt for cdp samples for sbsa CUDA Toolkit supporting on aarch64-linux platforms --- .../cdpAdvancedQuicksort/CMakeLists.txt | 11 ++++------- .../cdpBezierTessellation/CMakeLists.txt | 11 ++++------- Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt | 11 ++++------- Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt | 11 ++++------- .../3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt | 11 ++++------- 5 files changed, 20 insertions(+), 35 deletions(-) diff --git a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/CMakeLists.txt b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/CMakeLists.txt index e52a4a26..4d4784b0 100644 --- a/Samples/3_CUDA_Features/cdpAdvancedQuicksort/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpAdvancedQuicksort/CMakeLists.txt @@ -8,13 +8,10 @@ find_package(CUDAToolkit REQUIRED) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") - # Need to differentiate Tegra_aarch64 and other aarch64 systems(sbsa_aarch64) as they have different CUDA_ARCHITECTURES list - if(${BUILD_TEGRA}) - set(CMAKE_CUDA_ARCHITECTURES 87 110) - else() - set(CMAKE_CUDA_ARCHITECTURES 75 80 86 90) - endif() +# The aarch64/sbsa_aarch64 CUDA toolkit are support on Tegra since 13.0, so need to check which version of the toolkit is installed +string(FIND "${CUDAToolkit_INCLUDE_DIRS}" "aarch64-linux" _aarch64_ctk) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT _aarch64_ctk EQUAL -1) + set(CMAKE_CUDA_ARCHITECTURES 87 110) else() set(CMAKE_CUDA_ARCHITECTURES 75 80 86 89 90 100 110 120) endif() diff --git a/Samples/3_CUDA_Features/cdpBezierTessellation/CMakeLists.txt b/Samples/3_CUDA_Features/cdpBezierTessellation/CMakeLists.txt index f49eec53..c5eb4703 100644 --- a/Samples/3_CUDA_Features/cdpBezierTessellation/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpBezierTessellation/CMakeLists.txt @@ -8,13 +8,10 @@ find_package(CUDAToolkit REQUIRED) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") - # Need to differentiate Tegra_aarch64 and other aarch64 systems(sbsa_aarch64) as they have different CUDA_ARCHITECTURES list - if(${BUILD_TEGRA}) - set(CMAKE_CUDA_ARCHITECTURES 87 110) - else() - set(CMAKE_CUDA_ARCHITECTURES 75 80 86 90) - endif() +# The aarch64/sbsa_aarch64 CUDA toolkit are support on Tegra since 13.0, so need to check which version of the toolkit is installed +string(FIND "${CUDAToolkit_INCLUDE_DIRS}" "aarch64-linux" _aarch64_ctk) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT _aarch64_ctk EQUAL -1) + set(CMAKE_CUDA_ARCHITECTURES 87 110) else() set(CMAKE_CUDA_ARCHITECTURES 75 80 86 89 90 100 110 120) endif() diff --git a/Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt b/Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt index abfc5711..a3fd2eba 100644 --- a/Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpQuadtree/CMakeLists.txt @@ -8,13 +8,10 @@ find_package(CUDAToolkit REQUIRED) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") - # Need to differentiate Tegra_aarch64 and other aarch64 systems(sbsa_aarch64) as they have different CUDA_ARCHITECTURES list - if(${BUILD_TEGRA}) - set(CMAKE_CUDA_ARCHITECTURES 87 110) - else() - set(CMAKE_CUDA_ARCHITECTURES 75 80 86 90) - endif() +# The aarch64/sbsa_aarch64 CUDA toolkit are support on Tegra since 13.0, so need to check which version of the toolkit is installed +string(FIND "${CUDAToolkit_INCLUDE_DIRS}" "aarch64-linux" _aarch64_ctk) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT _aarch64_ctk EQUAL -1) + set(CMAKE_CUDA_ARCHITECTURES 87 110) else() set(CMAKE_CUDA_ARCHITECTURES 75 80 86 89 90 100 110 120) endif() diff --git a/Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt b/Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt index 7c4d11fa..e58ee19a 100644 --- a/Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpSimplePrint/CMakeLists.txt @@ -8,13 +8,10 @@ find_package(CUDAToolkit REQUIRED) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") - # Need to differentiate Tegra_aarch64 and other aarch64 systems(sbsa_aarch64) as they have different CUDA_ARCHITECTURES list - if(${BUILD_TEGRA}) - set(CMAKE_CUDA_ARCHITECTURES 87 110) - else() - set(CMAKE_CUDA_ARCHITECTURES 75 80 86 90) - endif() +# The aarch64/sbsa_aarch64 CUDA toolkit are support on Tegra since 13.0, so need to check which version of the toolkit is installed +string(FIND "${CUDAToolkit_INCLUDE_DIRS}" "aarch64-linux" _aarch64_ctk) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT _aarch64_ctk EQUAL -1) + set(CMAKE_CUDA_ARCHITECTURES 87 110) else() set(CMAKE_CUDA_ARCHITECTURES 75 80 86 89 90 100 110 120) endif() diff --git a/Samples/3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt b/Samples/3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt index fa2ab6a8..bbb61864 100644 --- a/Samples/3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt +++ b/Samples/3_CUDA_Features/cdpSimpleQuicksort/CMakeLists.txt @@ -8,13 +8,10 @@ find_package(CUDAToolkit REQUIRED) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") - # Need to differentiate Tegra_aarch64 and other aarch64 systems(sbsa_aarch64) as they have different CUDA_ARCHITECTURES list - if(${BUILD_TEGRA}) - set(CMAKE_CUDA_ARCHITECTURES 87 110) - else() - set(CMAKE_CUDA_ARCHITECTURES 75 80 86 90) - endif() +# The aarch64/sbsa_aarch64 CUDA toolkit are support on Tegra since 13.0, so need to check which version of the toolkit is installed +string(FIND "${CUDAToolkit_INCLUDE_DIRS}" "aarch64-linux" _aarch64_ctk) +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT _aarch64_ctk EQUAL -1) + set(CMAKE_CUDA_ARCHITECTURES 87 110) else() set(CMAKE_CUDA_ARCHITECTURES 75 80 86 89 90 100 110 120) endif() From 74a9a08887994426aedc0db4f1de25eb971c4d52 Mon Sep 17 00:00:00 2001 From: shawnz Date: Wed, 28 May 2025 12:43:16 +0800 Subject: [PATCH 2/2] Bug 5305854: Update aarch64 toolchain for SBSA CUDA Toolkit support --- cmake/toolchains/toolchain-aarch64-linux.cmake | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cmake/toolchains/toolchain-aarch64-linux.cmake b/cmake/toolchains/toolchain-aarch64-linux.cmake index 912d0dd5..ffe08512 100644 --- a/cmake/toolchains/toolchain-aarch64-linux.cmake +++ b/cmake/toolchains/toolchain-aarch64-linux.cmake @@ -15,9 +15,15 @@ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -ccbin ${CMAKE_CXX_COMPILER}" CACHE ST # Use a local sysroot copy if(DEFINED TARGET_FS) + # The aarch64/sbsa_aarch64 CUDA toolkit are support on Tegra since 13.0, so need to check which version of the toolkit is installed + set(CUDA_AARCH64_TARGET "aarch64-linux") + if(NOT EXISTS "/usr/local/cuda/targets/${CUDA_AARCH64_TARGET}") + set(CUDA_AARCH64_TARGET "sbsa-linux") + endif() + set(CMAKE_SYSROOT "${TARGET_FS}") list(APPEND CMAKE_FIND_ROOT_PATH - "/usr/local/cuda/targets/aarch64-linux" + "/usr/local/cuda/targets/${CUDA_AARCH64_TARGET}" ) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) @@ -51,7 +57,7 @@ if(DEFINED TARGET_FS) endif() if (DEFINED TARGET_CUDA_ROOT) - list(APPEND CMAKE_LIBRARY_PATH "${TARGET_CUDA_ROOT}/targets/aarch64-linux/lib") + list(APPEND CMAKE_LIBRARY_PATH "${TARGET_CUDA_ROOT}/targets/${CUDA_AARCH64_TARGET}/lib") # Define NVVM paths for build and runtime set(ENV{LIBNVVM_HOME} "${TARGET_CUDA_ROOT}") set(RUNTIME_LIBNVVM_PATH "${TARGET_CUDA_ROOT}/nvvm/lib64")