Fix build issues with Clang CUDA
authorPaul Bauer <paul.bauer.q@gmail.com>
Fri, 30 Oct 2020 12:38:29 +0000 (12:38 +0000)
committerMark Abraham <mark.j.abraham@gmail.com>
Fri, 30 Oct 2020 12:38:29 +0000 (12:38 +0000)
Fixed missing changes in CMake property name
Apply properties correctly for test library.
Fix wrongly attributed gpu_utils test file.

src/gromacs/CMakeLists.txt
src/gromacs/gpu_utils/tests/CMakeLists.txt
src/testutils/CMakeLists.txt

index 00eb3031520203f061c5de9289c1eb4d50013535..a4430e9dd6b356d01de7f3b301ddda8994f4630d 100644 (file)
@@ -40,7 +40,7 @@ if (GMX_CLANG_CUDA)
 endif()
 
 set_property(GLOBAL PROPERTY GMX_LIBGROMACS_SOURCES)
-set_property(GLOBAL PROPERTY GMX_LIBGROMACS_GPU_IMPL_SOURCES)
+set_property(GLOBAL PROPERTY CUDA_SOURCES)
 set_property(GLOBAL PROPERTY GMX_INSTALLED_HEADERS)
 set_property(GLOBAL PROPERTY GMX_AVX_512_SOURCE)
 
@@ -171,19 +171,8 @@ list(APPEND LIBGROMACS_SOURCES ${GENERATED_VERSION_FILE})
 
 # Mark some shared GPU implementation files to compile with CUDA if needed
 if (GMX_GPU_CUDA)
-    get_property(LIBGROMACS_GPU_IMPL_SOURCES GLOBAL PROPERTY GMX_LIBGROMACS_GPU_IMPL_SOURCES)
-    set_source_files_properties(${LIBGROMACS_GPU_IMPL_SOURCES} PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ)
-endif()
-
-# set up CUDA compilation with clang
-if (GMX_CLANG_CUDA)
-    foreach (_file ${LIBGROMACS_SOURCES})
-        get_filename_component(_ext ${_file} EXT)
-        get_source_file_property(_cuda_source_format ${_file} CUDA_SOURCE_PROPERTY_FORMAT)
-        if ("${_ext}" STREQUAL ".cu" OR _cuda_source_format)
-            gmx_compile_cuda_file_with_clang(${_file})
-        endif()
-    endforeach()
+    get_property(CUDA_SOURCES GLOBAL PROPERTY CUDA_SOURCES)
+    set_source_files_properties(${CUDA_SOURCES} PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ)
 endif()
 
 if (GMX_GPU_CUDA)
@@ -290,10 +279,21 @@ if (GMX_GPU_CUDA AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
     # must suppress them.
     GMX_TEST_CXXFLAG(CXXFLAGS_NO_ZERO_AS_NULL_POINTER_CONSTANT "-Wno-zero-as-null-pointer-constant" NVCC_CLANG_SUPPRESSIONS_CXXFLAGS)
 
-    get_property(CUDA_SOURCES GLOBAL PROPERTY CUDA_SOURCES)
     foreach(_compile_flag ${NVCC_CLANG_SUPPRESSIONS_CXXFLAGS})
-        set_source_files_properties(${CUDA_SOURCES} PROPERTIES COMPILE_FLAGS ${_compile_flag})
+        set(GMX_CUDA_CLANG_FLAGS "${GMX_CUDA_CLANG_FLAGS} ${_compile_flag}")
     endforeach()
+    if (GMX_CLANG_CUDA)
+        foreach (_file ${LIBGROMACS_SOURCES})
+            get_filename_component(_ext ${_file} EXT)
+            get_source_file_property(_cuda_source_format ${_file} CUDA_SOURCE_PROPERTY_FORMAT)
+            if ("${_ext}" STREQUAL ".cu" OR _cuda_source_format)
+                gmx_compile_cuda_file_with_clang(${_file})
+            endif()
+        endforeach()
+    else()
+        get_property(CUDA_SOURCES GLOBAL PROPERTY CUDA_SOURCES)
+        set_source_files_properties(${CUDA_SOURCES} PROPERTIES COMPILE_FLAGS ${GMX_CUDA_CLANG_FLAGS})
+    endif()
 endif()
 
 # Only add the -fsycl flag to sources that really need it
index 6e4a700930ed6a1ec225b06a7920a54c1a74a6d6..604337d901bd295010220fb28bc92d1611a09fc1 100644 (file)
@@ -46,10 +46,10 @@ gmx_add_unit_test(GpuUtilsUnitTests gpu_utils-test HARDWARE_DETECTION
         device_stream_manager.cpp
         hostallocator.cpp
         pinnedmemorychecker.cpp
-        typecasts.cpp
         
     GPU_CPP_SOURCE_FILES
         device_buffer.cpp
+        typecasts.cpp
 
     CUDA_CU_SOURCE_FILES
         devicetransfers.cu
index 5e1c1ad329c173fa377735a5a20d4c2501716197..e932e692b077e4bb5f06138433150b8648aaae1f 100644 (file)
@@ -75,7 +75,10 @@ if (GMX_GPU_CUDA)
     if (NOT GMX_CLANG_CUDA)
         gmx_cuda_add_library(testutils ${TESTUTILS_SOURCES})
     else()
+        set_source_files_properties(test_device.cpp PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ)
+        gmx_compile_cuda_file_with_clang(test_device.cpp)
         add_library(testutils STATIC ${TESTUTILS_SOURCES})
+        target_link_libraries(testutils PRIVATE ${GMX_CUDA_CLANG_LINK_LIBS})
     endif()
     target_link_libraries(testutils PRIVATE ${CUDA_CUFFT_LIBRARIES})
 else()