From a4b60d948dabf91764deeab14b786858d978913d Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 7 Oct 2024 11:58:57 -0400 Subject: [PATCH] FindOpenMP: Add support for CUDA when compiling with Clang --- .gitlab/ci/configure_cuda12.2_clang.cmake | 2 ++ Help/release/dev/FindOpenMP-CUDA.rst | 3 +-- Modules/FindOpenMP.cmake | 8 +++----- Tests/FindOpenMP/Test/main.c | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.gitlab/ci/configure_cuda12.2_clang.cmake b/.gitlab/ci/configure_cuda12.2_clang.cmake index 8f10f862d1..ce4afaa33d 100644 --- a/.gitlab/ci/configure_cuda12.2_clang.cmake +++ b/.gitlab/ci/configure_cuda12.2_clang.cmake @@ -1,4 +1,6 @@ set(CMake_TEST_CUDA "Clang" CACHE STRING "") set(CMake_TEST_CUDA_STANDARDS "03;11;14;17;20;23" CACHE STRING "") +set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_CUDA "ON" CACHE BOOL "") include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/Help/release/dev/FindOpenMP-CUDA.rst b/Help/release/dev/FindOpenMP-CUDA.rst index 388085515c..9c21d5318f 100644 --- a/Help/release/dev/FindOpenMP-CUDA.rst +++ b/Help/release/dev/FindOpenMP-CUDA.rst @@ -1,5 +1,4 @@ FindOpenMP-CUDA --------------- -* The :module:`FindOpenMP` module gained support for ``CUDA`` when using - a CUDA compiler that supports OpenMP on the host. +* The :module:`FindOpenMP` module gained support for the ``CUDA`` language. diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake index 32e4cf238f..07eaf66188 100644 --- a/Modules/FindOpenMP.cmake +++ b/Modules/FindOpenMP.cmake @@ -183,12 +183,10 @@ set(OpenMP_C_CXX_TEST_SOURCE int main(void) { #ifdef _OPENMP omp_get_max_threads(); - return 0; -#elif defined(__HIP_DEVICE_COMPILE__) - return 0; -#else - breaks_on_purpose +#elif !defined(__CUDA_ARCH__) && !defined(__HIP_DEVICE_COMPILE__) +# error \"_OPENMP not defined!\" #endif + return 0; } ") diff --git a/Tests/FindOpenMP/Test/main.c b/Tests/FindOpenMP/Test/main.c index f7abef85bb..f60fce8b3c 100644 --- a/Tests/FindOpenMP/Test/main.c +++ b/Tests/FindOpenMP/Test/main.c @@ -3,7 +3,7 @@ int main(void) { #ifdef _OPENMP omp_get_num_threads(); -#else +#elif !defined(__CUDA_ARCH__) && !defined(__HIP_DEVICE_COMPILE__) # error "_OPENMP not defined!" #endif return 0;