From 698f704cd015ee0de469b46cfdeddce4584f6bf8 Mon Sep 17 00:00:00 2001 From: Frederik Hennig <frederik.hennig@fau.de> Date: Wed, 19 Mar 2025 15:16:57 +0100 Subject: [PATCH] Prepare and test CUDA support --- tests/BasicLbmScenarios/CMakeLists.txt | 29 +++++++++++++++++++++----- tests/CMakeLists.txt | 2 +- tests/CMakePresets.json | 13 +++++++++++- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/tests/BasicLbmScenarios/CMakeLists.txt b/tests/BasicLbmScenarios/CMakeLists.txt index 4b9eef3..42a1ced 100644 --- a/tests/BasicLbmScenarios/CMakeLists.txt +++ b/tests/BasicLbmScenarios/CMakeLists.txt @@ -15,18 +15,37 @@ foreach( TestID ${TestIDs} ) endforeach() +if( $CACHE{WALBERLA_BUILD_WITH_CUDA} ) + find_package( CUDAToolkit ) + + # Workaround: CUDA headers are included in core/timing + target_link_libraries( TestBasicLbmScenariosCPU PRIVATE CUDA::cudart ) + + set( _codegen_suffixes hpp cu ) + + add_executable( TestBasicLbmScenariosCUDA TestBasicLbmScenarios.cpp ) + walberla_generate_sources( TestBasicLbmScenariosCUDA SCRIPTS LbmAlgorithms.py SCRIPT_ARGS --target=cuda FILE_EXTENSIONS ${_codegen_suffixes} ) + target_link_libraries( TestBasicLbmScenariosCUDA PRIVATE walberla::core walberla::blockforest walberla::field walberla::gpu walberla::geometry walberla::experimental CUDA::cudart ) + + add_dependencies( SfgTests TestBasicLbmScenariosCUDA ) + + foreach( TestID ${TestIDs} ) + add_test( NAME "BasicLbmScenarios - CUDA - ${TestID}" COMMAND TestBasicLbmScenariosCUDA ${TestID} ) + endforeach() +endif() + if( $CACHE{WALBERLA_BUILD_WITH_HIP} ) find_package(hip REQUIRED) set( _codegen_suffixes hpp cpp ) - add_executable( TestBasicLbmScenariosGPU TestBasicLbmScenarios.cpp ) - walberla_generate_sources( TestBasicLbmScenariosGPU SCRIPTS LbmAlgorithms.py SCRIPT_ARGS --target=hip FILE_EXTENSIONS ${_codegen_suffixes} ) - target_link_libraries( TestBasicLbmScenariosGPU PRIVATE walberla::core walberla::blockforest walberla::field walberla::gpu walberla::geometry walberla::experimental hip::host ) + add_executable( TestBasicLbmScenariosHIP TestBasicLbmScenarios.cpp ) + walberla_generate_sources( TestBasicLbmScenariosHIP SCRIPTS LbmAlgorithms.py SCRIPT_ARGS --target=hip FILE_EXTENSIONS ${_codegen_suffixes} ) + target_link_libraries( TestBasicLbmScenariosHIP PRIVATE walberla::core walberla::blockforest walberla::field walberla::gpu walberla::geometry walberla::experimental hip::host ) - add_dependencies( SfgTests TestBasicLbmScenariosGPU ) + add_dependencies( SfgTests TestBasicLbmScenariosHIP ) foreach( TestID ${TestIDs} ) - add_test( NAME "BasicLbmScenarios - HIP - ${TestID}" COMMAND TestBasicLbmScenariosGPU ${TestID} ) + add_test( NAME "BasicLbmScenarios - HIP - ${TestID}" COMMAND TestBasicLbmScenariosHIP ${TestID} ) endforeach() endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index eb3cb86..1d719cb 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required( VERSION 3.24 ) -project( sfg-walberla-testsuite ) +project( sfg-walberla-testsuite LANGUAGES CXX CUDA ) set(WALBERLA_BUILD_TESTS OFF CACHE BOOL "") set(WALBERLA_BUILD_BENCHMARKS OFF CACHE BOOL "") diff --git a/tests/CMakePresets.json b/tests/CMakePresets.json index b187c21..a064ccf 100644 --- a/tests/CMakePresets.json +++ b/tests/CMakePresets.json @@ -7,13 +7,24 @@ }, "configurePresets": [ { - "name": "testsuite-dbg", + "name": "testsuite-dbg-cpu", "binaryDir": "${sourceDir}/build/${presetName}", "generator": "Ninja", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "WALBERLA_BUILD_TESTS": false } + }, + { + "name": "testsuite-dbg-cuda", + "binaryDir": "${sourceDir}/build/${presetName}", + "generator": "Ninja", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug", + "WALBERLA_BUILD_TESTS": false, + "WALBERLA_BUILD_WITH_CUDA": true, + "CMAKE_CUDA_ARCHITECTURES": "native" + } } ] } -- GitLab