Skip to content

Commit

Permalink
Merge pull request #151 from awslabs/sjg/build-system-updates
Browse files Browse the repository at this point in the history
Build system updates
  • Loading branch information
sebastiangrimberg authored Dec 20, 2023
2 parents fc54d10 + ca8a6de commit 5aa3e4c
Show file tree
Hide file tree
Showing 33 changed files with 2,303 additions and 8,187 deletions.
26 changes: 20 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
# CMake superbuild for Palace and its dependencies
#

# CMake 3.18.1 was released in Jul. 2020
cmake_minimum_required(VERSION 3.18.1)
# CMake 3.21 was released in Jul. 2021 (required for HIP support)
cmake_minimum_required(VERSION 3.21)

# Prohibit in-source builds
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
Expand All @@ -18,8 +18,8 @@ project(palace-superbuild LANGUAGES CXX C VERSION 0.11.2)

# Define build settings and defaults
set(PALACE_WITH_64BIT_INT OFF CACHE BOOL "Use 64 bit integers")
set(PALACE_WITH_64BIT_BLAS_INT OFF CACHE BOOL "Use ILP64 BLAS/LAPACK interface instead of LP64 (not recommended)")
set(PALACE_WITH_OPENMP OFF CACHE BOOL "Use OpenMP")
set(PALACE_WITH_64BIT_BLAS_INT OFF CACHE BOOL "Use ILP64 BLAS/LAPACK interface instead of LP64 (experimental, not recommended)")
set(PALACE_WITH_OPENMP OFF CACHE BOOL "Use OpenMP for shared-memory parallelism")

set(PALACE_BUILD_EXTERNAL_DEPS ON CACHE BOOL "Build external third-party dependency libraries")
set(PALACE_WITH_SUPERLU ON CACHE BOOL "Build with SuperLU_DIST sparse direct solver")
Expand All @@ -28,6 +28,7 @@ set(PALACE_WITH_MUMPS OFF CACHE BOOL "Build with MUMPS sparse direct solver")
set(PALACE_WITH_SLEPC ON CACHE BOOL "Build with SLEPc eigenvalue solver")
set(PALACE_WITH_ARPACK OFF CACHE BOOL "Build with ARPACK eigenvalue solver")
set(PALACE_WITH_LIBXSMM ON CACHE BOOL "Build with LIBXSMM backend for libCEED")
set(PALACE_WITH_MAGMA ON CACHE BOOL "Build with MAGMA backend for libCEED")
set(PALACE_WITH_GSLIB ON CACHE BOOL "Build with GSLIB library for high-order field interpolation")

set(ANALYZE_SOURCES_CLANG_TIDY OFF CACHE BOOL "Run static analysis checks using clang-tidy")
Expand Down Expand Up @@ -86,6 +87,14 @@ if(CMAKE_C_COMPILER_ID STREQUAL "Intel" OR CMAKE_CXX_COMPILER_ID STREQUAL "Intel
have been replaced by the newer Clang-based icx/icpx from Intel oneAPI")
endif()

# MAGMA is only for GPU builds
if(PALACE_WITH_MAGMA AND NOT (PALACE_WITH_CUDA OR PALACE_WITH_HIP))
message(STATUS "Disabling MAGMA due to lack of CUDA or HIP support")
set(PALACE_WITH_MAGMA OFF CACHE BOOL
"Build with MAGMA backend when libCEED is enabled" FORCE
)
endif()

# MPI is required for most dependency builds
message(STATUS "====================== Configuring MPI dependency ======================")
find_package(MPI REQUIRED)
Expand All @@ -95,12 +104,17 @@ message(STATUS "================= Configuring BLAS/LAPACK dependencies =========
include(ExternalBLASLAPACK)

# Default arguments for all external CMake builds (needs to happen after BLAS/LAPACK
# detection in case CMAKE_PREFIX_PATH is modified)
# See https://spack.readthedocs.io/en/latest/build_systems/cmakepackage.html#cmake-arguments-provided-by-spack
# detection in case CMAKE_PREFIX_PATH is modified). Compilers and flags are added on a
# package by package basis.
# See Spack docs: http://tinyurl.com/43t2recp
set(PALACE_SUPERBUILD_DEFAULT_ARGS
"-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
"-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}"
"-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}"
"-DCMAKE_MODULE_LINKER_FLAGS=${CMAKE_MODULE_LINKER_FLAGS}"
"-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}"
"-DCMAKE_STATIC_LINKER_FLAGS=${CMAKE_STATIC_LINKER_FLAGS}"
)
if(NOT "${CMAKE_PREFIX_PATH}" STREQUAL "")
string(REPLACE ";" "$<SEMICOLON>" PALACE_CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}")
Expand Down
10 changes: 5 additions & 5 deletions cmake/ExternalGSLIB.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ set(GSLIB_OPTIONS
"MPI=1"
)

set(GSLIB_LDFLAGS)
set(GSLIB_CFLAGS ${CMAKE_C_FLAGS})
set(GSLIB_LDFLAGS ${CMAKE_EXE_LINKER_FLAGS})

# GSLIB will add -fPIC as necessary
if(BUILD_SHARED_LIBS)
Expand All @@ -36,11 +36,11 @@ if(NOT MPI_FOUND)
message(FATAL_ERROR "MPI is not found when trying to build GSLIB")
endif()
if(NOT CMAKE_C_COMPILER STREQUAL MPI_C_COMPILER)
string(REPLACE ";" " " GSLIB_MPI_LIBRARIES "${MPI_C_LIBRARIES}")
set(GSLIB_LDFLAGS "${GSLIB_LDFLAGS} ${GSLIB_MPI_LIBRARIES}")
foreach(INCLUDE_DIR IN LISTS MPI_C_INCLUDE_DIRS)
set(GSLIB_CFLAGS "${GSLIB_CFLAGS} -I${INCLUDE_DIR}")
endforeach()
string(REPLACE ";" " " GSLIB_MPI_LIBRARIES "${MPI_C_LIBRARIES}")
set(GSLIB_LDFLAGS "${GSLIB_LDFLAGS} ${GSLIB_MPI_LIBRARIES}")
endif()

# Don't build GSLIB with external BLAS (default option)
Expand All @@ -50,11 +50,11 @@ list(APPEND GSLIB_OPTIONS

# Configure BLAS dependency
# if(NOT "${BLAS_LAPACK_LIBRARIES}" STREQUAL "")
# string(REPLACE "$<SEMICOLON>" " " GSLIB_BLAS_LAPACK_LIBRARIES "${BLAS_LAPACK_LIBRARIES}")
# set(GSLIB_LDFLAGS "${GSLIB_LDFLAGS} ${GSLIB_BLAS_LAPACK_LIBRARIES}")
# foreach(INCLUDE_DIR IN LISTS BLAS_LAPACK_INCLUDE_DIRS)
# set(GSLIB_CFLAGS "${GSLIB_CFLAGS} -I${INCLUDE_DIR}")
# endforeach()
# string(REPLACE "$<SEMICOLON>" " " GSLIB_BLAS_LAPACK_LIBRARIES "${BLAS_LAPACK_LIBRARIES}")
# set(GSLIB_LDFLAGS "${GSLIB_LDFLAGS} ${GSLIB_BLAS_LAPACK_LIBRARIES}")
# if(BLA_VENDOR MATCHES "Intel")
# list(APPEND GSLIB_OPTIONS
# "BLAS=1"
Expand Down
58 changes: 43 additions & 15 deletions cmake/ExternalGitTags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ set(EXTERN_ARPACK_GIT_BRANCH
"Git branch for external ARPACK-NG build"
)
set(EXTERN_ARPACK_GIT_TAG
"e7cf106bc204ed7f7909d906fd9b1c3d18e86f76" CACHE STRING # 08/14/2023
"0eaf38bd51efd3046f0a7e61a08ddcd7ed1f1fcc" CACHE STRING # 11/22/2023
"Git tag for external ARPACK-NG build"
)

Expand All @@ -34,7 +34,7 @@ set(EXTERN_BUTTERFLYPACK_GIT_BRANCH
"Git branch for external ButterflyPACK build"
)
set(EXTERN_BUTTERFLYPACK_GIT_TAG
"6b0afaae91be4cd5e5cbc85f51f9c959921c0059" CACHE STRING # 07/19/2023
"893a5875e2e3a8f4abd5c7374397c773eb0c9724" CACHE STRING # 12/20/2023
"Git tag for external ButterflyPACK build"
)

Expand Down Expand Up @@ -76,7 +76,7 @@ set(EXTERN_HYPRE_GIT_BRANCH
"Git branch for external HYPRE build"
)
set(EXTERN_HYPRE_GIT_TAG
"b372b31a116a25d1432c689cef75881aac145a8e" CACHE STRING # 08/16/2023
"33524991d06f5e5b4c0c088ccf117aa09288867a" CACHE STRING # 12/13/2023
"Git tag for external HYPRE build"
)

Expand All @@ -90,7 +90,7 @@ set(EXTERN_LIBCEED_GIT_BRANCH
"Git branch for external libCEED build"
)
set(EXTERN_LIBCEED_GIT_TAG
"e5a301d7f3b471e9fc19701d6f25d22876a6f6b4" CACHE STRING # main @ 11/06/2023
"8c7774c6037866e54e1598be234a00f10d984861" CACHE STRING # main @ 12/18/2023
"Git tag for external libCEED build"
)

Expand All @@ -104,10 +104,24 @@ set(EXTERN_LIBXSMM_GIT_BRANCH
"Git branch for external LIBXSMM build"
)
set(EXTERN_LIBXSMM_GIT_TAG
"f4ba09230d84b78db0187320677d3c71d0d4854f" CACHE STRING # 08/21/2023
"b520352e4be31ef71d4f24684c898b945f1c1a58" CACHE STRING # 12/15/2023
"Git tag for external LIBXSMM build"
)

# MAGMA
set(EXTERN_MAGMA_URL
"https://bitbucket.org/icl/magma.git" CACHE STRING
"URL for external MAGMA build"
)
set(EXTERN_MAGMA_GIT_BRANCH
"master" CACHE STRING
"Git branch for external MAGMA build"
)
set(EXTERN_MAGMA_GIT_TAG
"a1625ff4d9bc362906bd01f805dbbe12612953f6" CACHE STRING # 12/20/2023
"Git tag for external MAGMA build"
)

# METIS
set(EXTERN_METIS_URL
"https://github.com/KarypisLab/METIS.git" CACHE STRING
Expand All @@ -132,7 +146,7 @@ set(EXTERN_MFEM_GIT_BRANCH
"Git branch for external MFEM build"
)
set(EXTERN_MFEM_GIT_TAG
"1c58d6d3d1f30d822d3a8b1ebefe07888b348e58" CACHE STRING # master @ 11/12/2023
"8a4affef5af84d74c9691f76b49624bdd7199d60" CACHE STRING # master @ 12/17/2023
"Git tag for external MFEM build"
)

Expand All @@ -146,7 +160,7 @@ set(EXTERN_MUMPS_GIT_BRANCH
"Git branch for external MUMPS build"
)
set(EXTERN_MUMPS_GIT_TAG
"1ea85fa01fd79cca8d06fefb52e0bfc2e996132f" CACHE STRING # 11/09/2023
"44fb7e74b5780a3ea1c26a76a55298a2c34279fe" CACHE STRING # 12/08/2023
"Git tag for external MUMPS build"
)

Expand Down Expand Up @@ -174,7 +188,7 @@ set(EXTERN_PETSC_GIT_BRANCH
"Git branch for external PETSc build"
)
set(EXTERN_PETSC_GIT_TAG
"7b506345644a939af5723216e40ffcdd7780697d" CACHE STRING # 11/14/2023
"9617a9bff32dac3e651f1a88b0773cde31a476b6" CACHE STRING # 12/19/2023
"Git tag for external PETSc build"
)

Expand All @@ -188,10 +202,24 @@ set(EXTERN_SCALAPACK_GIT_BRANCH
"Git branch for external ScaLAPACK build"
)
set(EXTERN_SCALAPACK_GIT_TAG
"acf286b783d53f73a42ec219ead74357e0b34501" CACHE STRING # 11/09/2023
"c68c29d5f6a786ddbcee8a912f205f9880aee985" CACHE STRING # 11/28/2023
"Git tag for external ScaLAPACK build"
)

# SLATE (for STRUMPACK)
set(EXTERN_SLATE_URL
"https://github.com/icl-utk-edu/slate.git" CACHE STRING
"URL for external SLATE build"
)
set(EXTERN_SLATE_GIT_BRANCH
"master" CACHE STRING
"Git branch for external SLATE build"
)
set(EXTERN_SLATE_GIT_TAG
"f9ac8c71f7dcc918cf3fb4c3955e2dab924ee654" CACHE STRING # 12/14/2022
"Git tag for external SLATE build"
)

# SLEPc
set(EXTERN_SLEPC_URL
"https://gitlab.com/slepc/slepc.git" CACHE STRING
Expand All @@ -202,7 +230,7 @@ set(EXTERN_SLEPC_GIT_BRANCH
"Git branch for external SLEPc build"
)
set(EXTERN_SLEPC_GIT_TAG
"228ef2b053da4df23e47def33189f7d6381cd660" CACHE STRING # 11/14/2023
"267bd1cd2687fe15592e8408731402b13343e3c5" CACHE STRING # 12/19/2023
"Git tag for external SLEPc build"
)

Expand All @@ -216,7 +244,7 @@ set(EXTERN_STRUMPACK_GIT_BRANCH
"Git branch for external STRUMPACK build"
)
set(EXTERN_STRUMPACK_GIT_TAG
"59d267964850b3dc3a97b37f2dba9d1b8228100f" CACHE STRING # 08/25/2023
"90dcaaa3c7f06e69f94da43aa1043dd9e030cc2a" CACHE STRING # 12/14/2023
"Git tag for external STRUMPACK build"
)

Expand All @@ -230,7 +258,7 @@ set(EXTERN_SUPERLU_GIT_BRANCH
"Git branch for external SuperLU_DIST build"
)
set(EXTERN_SUPERLU_GIT_TAG
"7af577d8bfd6defb65a7e5c5d585214ced77959b" CACHE STRING # 07/27/2023
"b3eecd3eaac3a1332d0d2c5fc052d1af114df192" CACHE STRING # 11/17/2023
"Git tag for external SuperLU_DIST build"
)

Expand All @@ -244,19 +272,19 @@ set(EXTERN_ZFP_GIT_BRANCH
"Git branch for external ZFP build"
)
set(EXTERN_ZFP_GIT_TAG
"bc5e24145ea6f168cf5dd672e0f11544013004da" CACHE STRING # 08/24/2023
"3f8de269007ad5b32f81103cdfe780eacc20f9a8" CACHE STRING # 12/15/2023
"Git tag for external ZFP build"
)

# nlohmann/json
set(EXTERN_JSON_URL
"https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz" CACHE STRING
"https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz" CACHE STRING
"URL for external nlohmann/json build"
)

# fmt
set(EXTERN_FMT_URL
"https://github.com/fmtlib/fmt/releases/download/10.0.0/fmt-10.0.0.zip" CACHE STRING
"https://github.com/fmtlib/fmt/releases/download/10.1.1/fmt-10.1.1.zip" CACHE STRING
"URL for external fmt build"
)

Expand Down
Loading

0 comments on commit 5aa3e4c

Please sign in to comment.