From d26a21c16d6eb8747a2a01fbc823e329d5aa047d Mon Sep 17 00:00:00 2001 From: Soeren Peters <peters.soeren@gmx.net> Date: Wed, 10 Feb 2021 20:46:40 +0100 Subject: [PATCH] Move the find_package() OpenMP and MPI commands to the top level cmake list. --- 3rdParty/MuParser/CMakeLists.txt | 6 ++++-- CMake/3rd.cmake | 2 -- CMake/3rd/OpenMP.cmake | 13 ------------- CMake/3rd/mpi.cmake | 8 -------- CMake/VirtualFluidsMacros.cmake | 2 +- CMakeLists.txt | 11 +++++++++-- apps/gpu/LBM/DrivenCavity/CMakeLists.txt | 4 +--- src/basics/CMakeLists.txt | 7 ++----- src/cpu/VirtualFluidsCore/CMakeLists.txt | 11 +++++------ src/gpu/GksGpu/CMakeLists.txt | 7 +------ src/gpu/GridGenerator/CMakeLists.txt | 7 ++----- src/gpu/VirtualFluids_GPU/CMakeLists.txt | 14 +++++--------- 12 files changed, 30 insertions(+), 62 deletions(-) delete mode 100644 CMake/3rd/OpenMP.cmake delete mode 100644 CMake/3rd/mpi.cmake diff --git a/3rdParty/MuParser/CMakeLists.txt b/3rdParty/MuParser/CMakeLists.txt index a77276825..1634a2f15 100644 --- a/3rdParty/MuParser/CMakeLists.txt +++ b/3rdParty/MuParser/CMakeLists.txt @@ -44,7 +44,9 @@ add_library(muparser src/muParserTokenReader.cpp ) -linkOpenMP(muparser) +if(BUILD_USE_OPENMP) + target_link_libraries(muparser PUBLIC OpenMP::OpenMP_CXX) +endif() target_include_directories(muparser PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) # this compiles the "DLL" interface (C API) @@ -60,7 +62,7 @@ if (CMAKE_BUILD_TYPE STREQUAL Debug) target_compile_definitions(muparser PRIVATE _DEBUG) endif () -if(USE_OPENMP) +if(BUILD_USE_OPENMP) target_compile_definitions(muparser PRIVATE MUP_USE_OPENMP) endif() set_target_properties(muparser PROPERTIES diff --git a/CMake/3rd.cmake b/CMake/3rd.cmake index 5ec921758..781146111 100644 --- a/CMake/3rd.cmake +++ b/CMake/3rd.cmake @@ -1,4 +1,2 @@ include(${VF_CMAKE_DIR}/3rd/boost.cmake) include(${VF_CMAKE_DIR}/3rd/gmock.cmake) -include(${VF_CMAKE_DIR}/3rd/mpi.cmake) -include(${VF_CMAKE_DIR}/3rd/OpenMP.cmake) \ No newline at end of file diff --git a/CMake/3rd/OpenMP.cmake b/CMake/3rd/OpenMP.cmake deleted file mode 100644 index 45465ba4b..000000000 --- a/CMake/3rd/OpenMP.cmake +++ /dev/null @@ -1,13 +0,0 @@ -function (linkOpenMP targetName) - - if(NOT USE_OPENMP) - return() - endif() - - find_package(OpenMP REQUIRED) - - if(OpenMP_CXX_FOUND) - target_link_libraries(${targetName} PUBLIC OpenMP::OpenMP_CXX) - endif() - -endfunction() \ No newline at end of file diff --git a/CMake/3rd/mpi.cmake b/CMake/3rd/mpi.cmake deleted file mode 100644 index cb5e279d5..000000000 --- a/CMake/3rd/mpi.cmake +++ /dev/null @@ -1,8 +0,0 @@ -function (linkMPI) - - find_package(MPI REQUIRED) - - vf_get_library_name(library_name) - target_link_libraries(${library_name} PUBLIC MPI::MPI_CXX) - -endfunction() \ No newline at end of file diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake index e2d7ba967..debb5ee78 100644 --- a/CMake/VirtualFluidsMacros.cmake +++ b/CMake/VirtualFluidsMacros.cmake @@ -229,7 +229,7 @@ function(vf_add_library) target_include_directories(${library_name} PRIVATE "${VF_THIRD_DIR}/cuda_samples/") target_include_directories(${library_name} PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) endif() - + status("... configuring target: ${library_name} (type=${ARG_BUILDTYPE}) done") unset(CMAKE_CXX_CLANG_TIDY) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d7437689..efce16caa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,7 @@ option(BUILD_VF_GPU "Build VirtualFluids gpu variant" OFF) option(BUILD_USE_OPENMP "Build VirtualFluids with openmp" ON) + # vf gpu option(BUILD_VF_GPU "Build VirtualFluids GPU" ON ) option(BUILD_VF_GKS "Build VirtualFluids GKS" OFF ) @@ -60,12 +61,11 @@ else() set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") endif() -option(USE_OPENMP "Include OpenMP support" ON) - option(BUILD_VF_PYTHON_BINDINGS "" OFF) option(BUILD_VF_DOUBLE_ACCURACY "Use double accuracy" OFF) + ################################################################################# # MACROS ################################################################################# @@ -79,6 +79,13 @@ ENDIF() ################################################################################# # COMMON LIBRARIES ################################################################################# +if(BUILD_USE_OPENMP) + find_package(OpenMP REQUIRED) +endif() + +find_package(MPI REQUIRED) + + add_subdirectory(src/basics) ################################################################################# diff --git a/apps/gpu/LBM/DrivenCavity/CMakeLists.txt b/apps/gpu/LBM/DrivenCavity/CMakeLists.txt index ef0a07772..031a3ec15 100644 --- a/apps/gpu/LBM/DrivenCavity/CMakeLists.txt +++ b/apps/gpu/LBM/DrivenCavity/CMakeLists.txt @@ -2,8 +2,6 @@ PROJECT(DrivenCavity LANGUAGES CUDA CXX) #LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-DOMPI_SKIP_MPICXX" ) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES DrivenCavity.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator MPI::MPI_CXX FILES DrivenCavity.cpp) set_source_files_properties(DrivenCavity.cpp PROPERTIES LANGUAGE CUDA) - -linkMPI() diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt index 2eff85ba5..1703d6269 100644 --- a/src/basics/CMakeLists.txt +++ b/src/basics/CMakeLists.txt @@ -1,7 +1,7 @@ include(Core/buildInfo.cmake) -vf_add_library(EXCLUDE buildInfo.in.cpp) +vf_add_library(PUBLIC_LINK MPI::MPI_CXX EXCLUDE buildInfo.in.cpp) vf_get_library_name (library_name) target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Core) @@ -21,7 +21,4 @@ IF(MSVC) target_compile_definitions(${library_name} PUBLIC NOMINMAX) # Disable Min/Max-Macros ENDIF(MSVC) - -linkMPI() - -vf_add_tests() \ No newline at end of file +vf_add_tests() diff --git a/src/cpu/VirtualFluidsCore/CMakeLists.txt b/src/cpu/VirtualFluidsCore/CMakeLists.txt index e5e6ccfeb..8e0d20c0d 100644 --- a/src/cpu/VirtualFluidsCore/CMakeLists.txt +++ b/src/cpu/VirtualFluidsCore/CMakeLists.txt @@ -23,15 +23,14 @@ IF(${USE_DEM_COUPLING}) INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../DemCoupling/DemCoupling.cmake) ENDIF() -vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser ${CAB_ADDITIONAL_LINK_LIBRARIES}) - -vf_get_library_name(library_name) - if(BUILD_USE_OPENMP) - linkOpenMP(${library_name}) + list(APPEND CAB_ADDITIONAL_LINK_LIBRARIES OpenMP::OpenMP_CXX) endif() -linkMPI() +vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser MPI::MPI_CXX ${CAB_ADDITIONAL_LINK_LIBRARIES}) + +vf_get_library_name(library_name) + target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/BoundaryConditions) target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Connectors) diff --git a/src/gpu/GksGpu/CMakeLists.txt b/src/gpu/GksGpu/CMakeLists.txt index facd4b663..b6e91a2cb 100644 --- a/src/gpu/GksGpu/CMakeLists.txt +++ b/src/gpu/GksGpu/CMakeLists.txt @@ -1,8 +1,3 @@ project(GksGpu LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE shared PRIVATE_LINK basics GksMeshAdapter) - -linkMPI() - -vf_get_library_name(library_name) -linkOpenMP(${library_name}) +vf_add_library(BUILDTYPE shared PRIVATE_LINK basics GksMeshAdapter OpenMP::OpenMP_CXX MPI::MPI_CXX) diff --git a/src/gpu/GridGenerator/CMakeLists.txt b/src/gpu/GridGenerator/CMakeLists.txt index 57431eab6..1ce294bf4 100644 --- a/src/gpu/GridGenerator/CMakeLists.txt +++ b/src/gpu/GridGenerator/CMakeLists.txt @@ -1,12 +1,9 @@ project(GridGenerator LANGUAGES CUDA CXX) -vf_add_library(PRIVATE_LINK basics) -vf_get_library_name(library_name) - -linkOpenMP(${library_name}) - +vf_add_library(PRIVATE_LINK basics OpenMP::OpenMP_CXX) +vf_get_library_name(library_name) set_target_properties(${library_name} PROPERTIES CUDA_SEPARABLE_COMPILATION ON) # according to linker error when building static libraries. diff --git a/src/gpu/VirtualFluids_GPU/CMakeLists.txt b/src/gpu/VirtualFluids_GPU/CMakeLists.txt index 2df796f2f..95405b258 100644 --- a/src/gpu/VirtualFluids_GPU/CMakeLists.txt +++ b/src/gpu/VirtualFluids_GPU/CMakeLists.txt @@ -1,16 +1,12 @@ project(VirtualFluids_GPU LANGUAGES CUDA CXX) -IF(MSVC) - set(libsToLink ws2_32 GridGenerator basics Traffic) # ws_32 throws an error on Phoenix -ELSE(MSVC) - #set(libsToLink GridGenerator VirtualFluidsBasics Core Traffic) - set(libsToLink GridGenerator basics) -ENDIF(MSVC) +set(additional_libraries "") +if(MSVC) + set(additional_libraries ws2_32 Traffic) # ws_32 throws an error on Phoenix +endif() +vf_add_library(PRIVATE_LINK ${additional_libraries} GridGenerator basics MPI::MPI_CXX) -vf_add_library(PRIVATE_LINK ${libsToLink}) - -linkMPI() linkBoost(COMPONENTS "serialization") #SET(TPN_WIN32 "/EHsc") -- GitLab