CUDA: Update default architecture resolver, docs, and CI to sm_60 - PacketMath.h: Update architecture comment to reflect sm_60+ support for __ldg and native FP16. - EigenTesting.cmake: Default EIGEN_CUDA_COMPUTE_ARCH to 60 for CUDA < 13 so the default test target exercises the newly supported floor. - CMakeLists.txt: Update cache help text to document that empty selects sm_60 (or sm_75 on CUDA 13+). - ci/build.linux.gitlab-ci.yml: Add 60 to EIGEN_CI_CUDA_COMPUTE_ARCH for CUDA 11.8 CI builds to provide compile-time coverage for sm_60.
diff --git a/CMakeLists.txt b/CMakeLists.txt index 994f2e2..d5dde5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -715,7 +715,7 @@ endif() set(EIGEN_CUDA_CXX_FLAGS "" CACHE STRING "Additional flags to pass to the cuda compiler.") - set(EIGEN_CUDA_COMPUTE_ARCH "" CACHE STRING "The CUDA compute architecture(s) to target when compiling CUDA code, as a ;-separated list of sm_XX numbers (e.g. 75;90). Empty selects sm_70, or sm_75 with CUDA 13 and later, which dropped Volta.") + set(EIGEN_CUDA_COMPUTE_ARCH "" CACHE STRING "The CUDA compute architecture(s) to target when compiling CUDA code, as a ;-separated list of sm_XX numbers (e.g. 75;90). Empty selects sm_60, or sm_75 with CUDA 13 and later, which dropped Pascal and Volta.") option(EIGEN_TEST_SYCL "Add Sycl support." OFF) if(EIGEN_TEST_SYCL)
diff --git a/Eigen/src/Core/arch/GPU/PacketMath.h b/Eigen/src/Core/arch/GPU/PacketMath.h index e5a6597..e65bc1f 100644 --- a/Eigen/src/Core/arch/GPU/PacketMath.h +++ b/Eigen/src/Core/arch/GPU/PacketMath.h
@@ -19,7 +19,7 @@ namespace internal { // Read-only data cached load (__ldg) and native FP16 arithmetic are available -// on all supported GPU architectures (sm_70+ for CUDA, GFX906+ for HIP). +// on all supported GPU architectures (sm_60+ for CUDA, GFX906+ for HIP). // We need to distinguish ‘clang as the CUDA compiler’ from ‘clang as the host compiler, // invoked by NVCC’ (e.g. on MacOS). The former needs to see both host and device implementation
diff --git a/ci/build.linux.gitlab-ci.yml b/ci/build.linux.gitlab-ci.yml index 28c1032..953787e 100644 --- a/ci/build.linux.gitlab-ci.yml +++ b/ci/build.linux.gitlab-ci.yml
@@ -284,10 +284,11 @@ variables: # Additional flags passed to the cuda compiler. EIGEN_CI_CUDA_CXX_FLAGS: "" - # Default architecture coverage spans the GPUs used by CI: GitLab's SaaS - # runners are Tesla T4 (sm_75), and eigen-gpu-testing-001.gcloud is an L4 - # (sm_89). Jobs tied to one runner pool may override this set below. - EIGEN_CI_CUDA_COMPUTE_ARCH: "75;89" + # Default architecture coverage spans the minimum supported architecture + # (sm_60) and the GPUs used by CI: GitLab's SaaS runners are Tesla T4 + # (sm_75), and eigen-gpu-testing-001.gcloud is an L4 (sm_89). Jobs tied to + # one runner pool may override this set below. + EIGEN_CI_CUDA_COMPUTE_ARCH: "60;75;89" EIGEN_CI_BUILD_TARGET: buildtests_gpu EIGEN_CI_TEST_CUDA_CLANG: "off" EIGEN_CI_TEST_CUDA_NVC: "off"
diff --git a/cmake/EigenTesting.cmake b/cmake/EigenTesting.cmake index ae5944b..ed47a68 100644 --- a/cmake/EigenTesting.cmake +++ b/cmake/EigenTesting.cmake
@@ -90,14 +90,14 @@ # ccache does not cache; expect those as misses in the statistics. # Resolve EIGEN_CUDA_COMPUTE_ARCH once find_package(CUDA) has set CUDA_VERSION. # The cache entry defaults to empty, which selects the oldest architecture the -# toolkit still compiles for: sm_70, Eigen's documented floor (see Macros.h), -# or sm_75 from CUDA 13 on, which dropped offline compilation for Volta. Sets -# the directory-scope variable the arch flags are built from; an explicit cache -# value is used as given. +# toolkit still compiles for: sm_60, Eigen's documented floor (see Macros.h), +# or sm_75 from CUDA 13 on, which dropped offline compilation for Pascal and +# Volta. Sets the directory-scope variable the arch flags are built from; an +# explicit cache value is used as given. macro(ei_cuda_resolve_compute_arch) if("${EIGEN_CUDA_COMPUTE_ARCH}" STREQUAL "") if(CUDA_VERSION VERSION_LESS 13.0) - set(EIGEN_CUDA_COMPUTE_ARCH 70) + set(EIGEN_CUDA_COMPUTE_ARCH 60) else() set(EIGEN_CUDA_COMPUTE_ARCH 75) endif()