From 5eb16852e8541ccefae601fecccd6df6bd111585 Mon Sep 17 00:00:00 2001 From: Abhishek Yenpure <abhishek.yenpure@hotmail.com> Date: Tue, 30 Jan 2024 17:56:28 -0800 Subject: [PATCH] Changing VTK-m backend initialization while using Kokkos --- Accelerators/Vtkm/Core/CMakeLists.txt | 3 ++- .../Vtkm/Core/vtkmlib/vtkmInitializer.cxx | 4 ++-- Accelerators/Vtkm/DataModel/CMakeLists.txt | 16 ++++++++++------ Accelerators/Vtkm/Filters/CMakeLists.txt | 16 +++++++++------- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/Accelerators/Vtkm/Core/CMakeLists.txt b/Accelerators/Vtkm/Core/CMakeLists.txt index 1b41748f2ff..51f7ccfdc6b 100644 --- a/Accelerators/Vtkm/Core/CMakeLists.txt +++ b/Accelerators/Vtkm/Core/CMakeLists.txt @@ -53,11 +53,12 @@ if (TARGET vtkm::cuda) vtk_module_set_properties(VTK::AcceleratorsVTKmCore CUDA_SEPARABLE_COMPILATION ON) elseif (TARGET vtkm::kokkos_cuda) - string(APPEND CMAKE_CUDA_FLAGS " -Xnvlink -w") + add_compile_definitions(VTK_USE_KOKKOS) set_source_files_properties(${device_sources} PROPERTIES LANGUAGE CUDA) kokkos_compilation(SOURCE ${device_sources}) elseif (TARGET vtkm::kokkos_hip) + add_compile_definitions(VTK_USE_KOKKOS) set_source_files_properties(${device_sources} PROPERTIES LANGUAGE HIP) kokkos_compilation(SOURCE ${device_sources}) endif () diff --git a/Accelerators/Vtkm/Core/vtkmlib/vtkmInitializer.cxx b/Accelerators/Vtkm/Core/vtkmlib/vtkmInitializer.cxx index eb185d3112d..7af361d3221 100644 --- a/Accelerators/Vtkm/Core/vtkmlib/vtkmInitializer.cxx +++ b/Accelerators/Vtkm/Core/vtkmlib/vtkmInitializer.cxx @@ -9,8 +9,8 @@ VTK_ABI_NAMESPACE_BEGIN void InitializeVTKm() { -// Only Kokkos HIP backend needs to be initialized -#ifdef VTKM_HIP +// Kokkos enabled devices needs to be initialized +#ifdef VTK_USE_KOKKOS static bool isInitialized{ false }; if (!isInitialized) { diff --git a/Accelerators/Vtkm/DataModel/CMakeLists.txt b/Accelerators/Vtkm/DataModel/CMakeLists.txt index 0267d6af24b..9b6f144f96c 100644 --- a/Accelerators/Vtkm/DataModel/CMakeLists.txt +++ b/Accelerators/Vtkm/DataModel/CMakeLists.txt @@ -48,7 +48,7 @@ vtkm_add_target_information(${vtkm_accel_target} MODIFY_CUDA_FLAGS DEVICE_SOURCES ${sources}) -if (TARGET vtkm::cuda OR TARGET vtkm::kokkos_cuda) +if (TARGET vtkm::cuda) # Temporarily suppress "has address taken but no possible call to it" warnings, # until we figure out its implications. # We are disabling all warnings as nvlink has no known way to suppress @@ -59,14 +59,18 @@ if (TARGET vtkm::cuda OR TARGET vtkm::kokkos_cuda) set(cuda_impl ${nowrap_sources} vtkmDataSet.cxx) set_source_files_properties(${cuda_impl} PROPERTIES LANGUAGE CUDA) - if (TARGET vtkm::cuda) - vtk_module_set_properties(VTK::AcceleratorsVTKmDataModel - CUDA_SEPARABLE_COMPILATION ON) - endif() + vtk_module_set_properties(VTK::AcceleratorsVTKmDataModel CUDA_SEPARABLE_COMPILATION ON) vtk_module_compile_options(VTK::AcceleratorsVTKmDataModel PUBLIC $<$<COMPILE_LANGUAGE:CUDA>:-Xcudafe --diag_suppress=extra_semicolon>) -endif () + +elseif (TARGET vtkm::kokkos_cuda) + list(TRANSFORM nowrap_classes APPEND ".cxx" OUTPUT_VARIABLE nowrap_sources) + set(cuda_impl ${nowrap_sources} vtkmDataSet.cxx) + set_source_files_properties(${cuda_impl} PROPERTIES LANGUAGE CUDA) + kokkos_compilation(SOURCE ${cuda_impl}) + +endif() if (MSVC) set(msvc_warning_flags diff --git a/Accelerators/Vtkm/Filters/CMakeLists.txt b/Accelerators/Vtkm/Filters/CMakeLists.txt index 5f45cdfa7c8..c8fcdce4eae 100644 --- a/Accelerators/Vtkm/Filters/CMakeLists.txt +++ b/Accelerators/Vtkm/Filters/CMakeLists.txt @@ -106,7 +106,7 @@ vtkm_add_target_information(${vtkm_accel_target} MODIFY_CUDA_FLAGS DEVICE_SOURCES ${sources}) -if (TARGET vtkm::cuda OR TARGET vtkm::kokkos_cuda) +if (TARGET vtkm::cuda) # Temporarily suppress "has address taken but no possible call to it" warnings, # until we figure out its implications. # We are disabling all warnings as nvlink has no known way to suppress @@ -115,15 +115,17 @@ if (TARGET vtkm::cuda OR TARGET vtkm::kokkos_cuda) list(TRANSFORM classes APPEND ".cxx" OUTPUT_VARIABLE cuda_impl) set_source_files_properties(${cuda_impl} PROPERTIES LANGUAGE CUDA) - - if (TARGET vtkm::cuda) - vtk_module_set_properties(VTK::AcceleratorsVTKmFilters - CUDA_SEPARABLE_COMPILATION ON) - endif() + vtk_module_set_properties(VTK::AcceleratorsVTKmFilters CUDA_SEPARABLE_COMPILATION ON) vtk_module_compile_options(VTK::AcceleratorsVTKmFilters PUBLIC $<$<COMPILE_LANGUAGE:CUDA>:-Xcudafe --diag_suppress=extra_semicolon>) -endif () +elseif (TARGET vtkm::kokkos_cuda) + + list(TRANSFORM classes APPEND ".cxx" OUTPUT_VARIABLE cuda_impl) + set_source_files_properties(${cuda_impl} PROPERTIES LANGUAGE CUDA) + kokkos_compilation(SOURCE ${cuda_impl}) + +endif() if (MSVC) set(msvc_warning_flags -- GitLab