From c7b8f81fb96e0d6850aa4b1444ce41db14961dcc Mon Sep 17 00:00:00 2001 From: Simon Praetorius <simon.praetorius@tu-dresden.de> Date: Thu, 11 Jan 2018 16:10:59 +0100 Subject: [PATCH] Added cmake flags for openMP and MPI. Now, ENABLE_PARALLEL_DOMAIN requires ENABLE_MPI. --- AMDiS/CMakeLists.txt | 33 +++++++++++++++++++++++++-- AMDiS/cmake/amdis_parallel.cmake | 6 ----- AMDiS/cmake/enable_mtl4.cmake | 18 ++++----------- AMDiS/cmake3/amdis_parallel.cmake | 4 ---- AMDiS/cmake3/target_enable_mtl4.cmake | 10 +++----- 5 files changed, 39 insertions(+), 32 deletions(-) diff --git a/AMDiS/CMakeLists.txt b/AMDiS/CMakeLists.txt index 2342aaa3..adec7b9d 100644 --- a/AMDiS/CMakeLists.txt +++ b/AMDiS/CMakeLists.txt @@ -16,12 +16,35 @@ endif () # ------------------------------------------------------------------------------ # some options to control the build process -option(ENABLE_PARALLEL_DOMAIN "Use parallel domain decomposition" false) +option(ENABLE_MPI "Compile with MPI compiler and library" false) option(ENABLE_UMFPACK "Enable support for the UMFPACK solver" true) option(ENABLE_EXTENSIONS "Use extensions for AMDiS" false) option(ENABLE_HYPRE "Use HYPRE AMG solver" false) option(ENABLE_PNG "Use png reader/writer" false) -option(ENABLE_SEQ_PETSC "Use sequential PETSc solvers" false) + +include(CMakeDependentOption) +cmake_dependent_option(ENABLE_PARALLEL_DOMAIN + "Use parallel domain decomposition" true + "ENABLE_MPI" false) + +# additional options for parallel_domain +# { +include(CMakeDependentOption) +cmake_dependent_option(ENABLE_ZOLTAN + "Add support for the Parallel Partitioning suite Zoltan" false + "ENABLE_PARALLEL_DOMAIN" false) + +include(CMakeDependentOption) +cmake_dependent_option(ENABLE_PARALLEL_SOLVERS + "Add some problem dependent solver, e.g. Feti, Navier-Stokes and Cahn-Hilliard" true + "ENABLE_PARALLEL_DOMAIN" false) + +include(CMakeDependentOption) +cmake_dependent_option(ENABLE_BDDCML + "Add support for the BDDCML library" false + "ENABLE_PARALLEL_DOMAIN" false) +# } + # enable/disable some more features option(ENABLE_COMPRESSION "Use output compression for vtu and arh files" true) @@ -33,6 +56,12 @@ mark_as_advanced(ENABLE_REINIT) option(ENABLE_COMPOSITE_FEM "Compile compositeFEM library" true) mark_as_advanced(ENABLE_COMPOSITE_FEM) +option(ENABLE_OPENMP "Compile with OpenMP flags. (Experimental)" false) +mark_as_advanced(ENABLE_OPENMP) + +option(ENABLE_SEQ_PETSC "Use sequential PETSc solvers" false) +mark_as_advanced(ENABLE_SEQ_PETSC) + option(BUILD_SHARED_LIBS "Build all libraries as shared or static, default: shared" true) mark_as_advanced(BUILD_SHARED_LIBS) diff --git a/AMDiS/cmake/amdis_parallel.cmake b/AMDiS/cmake/amdis_parallel.cmake index c5ea733b..0d325c3b 100644 --- a/AMDiS/cmake/amdis_parallel.cmake +++ b/AMDiS/cmake/amdis_parallel.cmake @@ -1,10 +1,4 @@ if (ENABLE_PARALLEL_DOMAIN) - option(ENABLE_ZOLTAN "Add support for the Parallel Partitioning suite Zoltan" false) - option(ENABLE_PARALLEL_SOLVERS "Add some problem dependent solver, e.g. Feti, Navier-Stokes and Cahn-Hilliard" true) - option(ENABLE_BDDCML "Add support for the BDDCML library" false) - mark_as_advanced(ENABLE_PARALLEL_SOLVERS) - mark_as_advanced(ENABLE_BDDCML) - set(PARALLEL_DOMAIN_AMDIS_SRC ${SOURCE_DIR}/parallel/DofComm.cc ${SOURCE_DIR}/parallel/CheckerPartitioner.cc diff --git a/AMDiS/cmake/enable_mtl4.cmake b/AMDiS/cmake/enable_mtl4.cmake index ae2b3e3d..3b24ae48 100644 --- a/AMDiS/cmake/enable_mtl4.cmake +++ b/AMDiS/cmake/enable_mtl4.cmake @@ -12,22 +12,14 @@ macro(enable_mtl4 _FLAGS_ _INC_DIRS_ _LIBS_) endif (LINK_EXECUTABLE) list(APPEND ${_FLAGS_} "-DMTL_ASSERT_FOR_THROW=1") - - if (ENABLE_CXX11 OR AMDIS_NEED_CXX11) - set (CXX_ELEVEN_FEATURE_LIST "MOVE" "AUTO" "RANGEDFOR" "INITLIST" "STATICASSERT" "DEFAULTIMPL") - foreach (feature ${CXX_ELEVEN_FEATURE_LIST}) - list(APPEND ${_FLAGS_} "-DMTL_WITH_${feature}") - endforeach () - endif () - + set (CXX_ELEVEN_FEATURE_LIST "MOVE" "AUTO" "RANGEDFOR" "INITLIST" "STATICASSERT" "DEFAULTIMPL") + foreach (feature ${CXX_ELEVEN_FEATURE_LIST}) + list(APPEND ${_FLAGS_} "-DMTL_WITH_${feature}") + endforeach () if (ENABLE_OPENMP) find_package(OpenMP REQUIRED) - if (OPENMP_FOUND) - list(APPEND ${_FLAGS_} "-DMTL_WITH_OPENMP" ${OpenMP_CXX_FLAGS}) - else () - message(FATAL_ERROR "OpenMP not found") - endif (OPENMP_FOUND) + list(APPEND ${_FLAGS_} "-DMTL_WITH_OPENMP" "-DHAVE_OPENMP" ${OpenMP_CXX_FLAGS}) endif (ENABLE_OPENMP) endmacro(enable_mtl4) diff --git a/AMDiS/cmake3/amdis_parallel.cmake b/AMDiS/cmake3/amdis_parallel.cmake index ab09f39c..3a9ebc8b 100644 --- a/AMDiS/cmake3/amdis_parallel.cmake +++ b/AMDiS/cmake3/amdis_parallel.cmake @@ -1,8 +1,4 @@ if (ENABLE_PARALLEL_DOMAIN) - option(ENABLE_ZOLTAN "Add support for the Parallel Partitioning suite Zoltan" false) - option(ENABLE_PARALLEL_SOLVERS "Add some problem dependent solver, e.g. Feti, Navier-Stokes and Cahn-Hilliard" true) - mark_as_advanced(ENABLE_PARALLEL_SOLVERS) - add_library(amdis_parallel INTERFACE) target_sources(amdis PRIVATE ${SOURCE_DIR}/parallel/DofComm.cc diff --git a/AMDiS/cmake3/target_enable_mtl4.cmake b/AMDiS/cmake3/target_enable_mtl4.cmake index 90d5e2c0..517eae51 100644 --- a/AMDiS/cmake3/target_enable_mtl4.cmake +++ b/AMDiS/cmake3/target_enable_mtl4.cmake @@ -18,12 +18,8 @@ macro(target_enable_mtl4 _TARGET_ _SCOPE_) endforeach () if (ENABLE_OPENMP) - find_package(OpenMP REQUIRED) - if (OPENMP_FOUND) - target_compile_definitions(${_TARGET_} ${_SCOPE_} MTL_WITH_OPENMP) - target_compile_options(${_TARGET_} ${_SCOPE_} ${OpenMP_CXX_FLAGS}) - else () - message(FATAL_ERROR "OpenMP not found") - endif (OPENMP_FOUND) + find_package(OpenMP REQUIRED) + target_compile_definitions(${_TARGET_} ${_SCOPE_} MTL_WITH_OPENMP HAVE_OPENMP) + target_compile_options(${_TARGET_} ${_SCOPE_} ${OpenMP_CXX_FLAGS}) endif (ENABLE_OPENMP) endmacro(target_enable_mtl4) -- GitLab