MFEM: add new version v4.6 (#40170)

* [mfem] Initial changes for v4.6

* [@spackbot] updating style on behalf of v-dobrev

* [mfem] Set the proper download link for v4.6
This commit is contained in:
Veselin Dobrev 2023-10-06 15:31:23 -07:00 committed by GitHub
parent 482525d0f9
commit b5079614b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 16 deletions

View File

@ -6,6 +6,7 @@
import os
import shutil
import sys
from platform import machine
from spack.package import *
@ -48,6 +49,13 @@ class Mfem(Package, CudaPackage, ROCmPackage):
# other version.
version("develop", branch="master")
version(
"4.6.0",
sha256="5fa9465b5bec56bfb777a4d2826fba48d85fbace4aed8b64a2fd4059bf075b15",
url="https://bit.ly/mfem-4-6",
extension="tar.gz",
)
version(
"4.5.2",
sha256="7003c908c8265810ff97cb37531521b3aed24959975833a01ea05adfdb36e0f7",
@ -286,6 +294,11 @@ class Mfem(Package, CudaPackage, ROCmPackage):
"sundials@5.4.0:+cuda cuda_arch={0}".format(sm_),
when="@4.2.0:+sundials+cuda cuda_arch={0}".format(sm_),
)
for gfx in ROCmPackage.amdgpu_targets:
depends_on(
"sundials@5.7.0:+rocm amdgpu_target={0}".format(gfx),
when="@4.6.0:+sundials+rocm amdgpu_target={0}".format(gfx),
)
depends_on("pumi", when="+pumi~shared")
depends_on("pumi+shared", when="+pumi+shared")
depends_on("pumi@2.2.3:2.2.5", when="@4.2.0:4.3.0+pumi")
@ -296,6 +309,16 @@ class Mfem(Package, CudaPackage, ROCmPackage):
depends_on("gslib@1.0.7:", when="@4.3.0:+gslib")
depends_on("suite-sparse", when="+suite-sparse")
depends_on("superlu-dist", when="+superlu-dist")
for sm_ in CudaPackage.cuda_arch_values:
depends_on(
"superlu-dist+cuda cuda_arch={0}".format(sm_),
when="+superlu-dist+cuda cuda_arch={0}".format(sm_),
)
for gfx in ROCmPackage.amdgpu_targets:
depends_on(
"superlu-dist+rocm amdgpu_target={0}".format(gfx),
when="+superlu-dist+rocm amdgpu_target={0}".format(gfx),
)
depends_on("strumpack@3.0.0:", when="+strumpack~shared")
depends_on("strumpack@3.0.0:+shared", when="+strumpack+shared")
for sm_ in CudaPackage.cuda_arch_values:
@ -921,7 +944,7 @@ def find_optional_library(name, prefix):
options += ["HIP_DIR=%s" % hipsparse["rocsparse"].prefix]
if "%cce" in spec:
# We assume the proper Cray CCE module (cce) is loaded:
craylibs_path = env["CRAYLIBS_" + env["MACHTYPE"].capitalize()]
craylibs_path = env["CRAYLIBS_" + machine().upper()]
craylibs = ["libmodules", "libfi", "libcraymath", "libf", "libu", "libcsup"]
hip_libs += find_libraries(craylibs, craylibs_path)
if hip_libs:

View File

@ -14,9 +14,9 @@ rocm_arch="gfx908"
spack_jobs=''
# spack_jobs='-j 128'
mfem='mfem@4.5.2'${compiler}
mfem='mfem@4.6.0'${compiler}
# mfem_dev='mfem@develop'${compiler}
mfem_dev='mfem@4.5.2'${compiler}
mfem_dev='mfem@4.6.0'${compiler}
backends='+occa+raja+libceed'
backends_specs='^occa~cuda ^raja~openmp'
@ -24,11 +24,9 @@ backends_specs='^occa~cuda ^raja~openmp'
# ~fortran is needed for Cray Fortran linking with tcmalloc*
conduit_spec='^conduit~fortran'
# petsc spec
petsc_spec='^petsc+suite-sparse+mumps'
petsc_spec_cuda='^petsc+cuda+suite-sparse+mumps'
# superlu-dist specs
superlu_spec_cuda='^superlu-dist+cuda cuda_arch='"${cuda_arch}"
superlu_spec_rocm='^superlu-dist+rocm amdgpu_target='"${rocm_arch}"
petsc_spec='^petsc+mumps'
petsc_spec_cuda='^petsc+cuda+mumps'
petsc_spec_rocm='^petsc+rocm+mumps'
# strumpack spec without cuda (use version > 6.3.1)
strumpack_spec='^strumpack~slate~openmp~cuda'
strumpack_cuda_spec='^strumpack+cuda~slate~openmp'
@ -138,7 +136,7 @@ builds_cuda=(
+superlu-dist+strumpack+suite-sparse+gslib+petsc+slepc \
+sundials+pumi+mpfr+netcdf+zlib+gnutls+libunwind+conduit+ginkgo+hiop \
^raja+cuda+openmp ^hiop+shared'" $strumpack_cuda_spec"' \
'"$superlu_spec_cuda $petsc_spec_cuda $conduit_spec"
'"$petsc_spec_cuda $conduit_spec"
# hypre with cuda:
# TODO: restore '+libceed' when the libCEED CUDA unit tests take less time.
@ -150,7 +148,7 @@ builds_cuda=(
+superlu-dist+strumpack+suite-sparse+gslib \
+pumi+mpfr+netcdf+zlib+gnutls+libunwind+conduit+ginkgo+hiop \
^raja+cuda+openmp ^hiop+shared ^hypre+cuda \
'" $superlu_spec_cuda $strumpack_cuda_spec $conduit_spec"
'" $strumpack_cuda_spec $conduit_spec"
#
# same builds as above with ${mfem_dev}
@ -175,7 +173,7 @@ builds_cuda=(
+superlu-dist+strumpack+suite-sparse+gslib+petsc+slepc \
+sundials+pumi+mpfr+netcdf+zlib+gnutls+libunwind+conduit+ginkgo+hiop \
^raja+cuda+openmp ^hiop+shared'" $strumpack_cuda_spec"' \
'"$superlu_spec_cuda $petsc_spec_cuda $conduit_spec"
'"$petsc_spec_cuda $conduit_spec"
# hypre with cuda:
# TODO: restore '+libceed' when the libCEED CUDA unit tests take less time.
@ -187,7 +185,7 @@ builds_cuda=(
+superlu-dist+strumpack+suite-sparse+gslib \
+pumi+mpfr+netcdf+zlib+gnutls+libunwind+conduit+ginkgo+hiop \
^raja+cuda+openmp ^hiop+shared ^hypre+cuda \
'"$superlu_spec_cuda $strumpack_cuda_spec $conduit_spec"
'"$strumpack_cuda_spec $conduit_spec"
)
@ -203,15 +201,14 @@ builds_rocm=(
^raja+rocm~openmp ^occa~cuda~openmp ^hypre+rocm'
# hypre without rocm:
# TODO: add "+petsc+slepc $petsc_spec_rocm" when it is supported.
# TODO: add back '+hiop' when it is no longer linked with tcmalloc* through
# its magma dependency.
# TODO: add back '+ginkgo' when the Ginkgo example works.
${mfem}'+rocm+openmp+raja+occa+libceed amdgpu_target='"${rocm_arch}"' \
+superlu-dist+strumpack+suite-sparse+gslib \
+superlu-dist+strumpack+suite-sparse+gslib+petsc+slepc \
+sundials+pumi+mpfr+netcdf+zlib+gnutls+libunwind+conduit \
^raja+rocm~openmp ^occa~cuda'" $strumpack_rocm_spec"' \
'"$superlu_spec_rocm $conduit_spec"
'"$petsc_spec_rocm $conduit_spec"
# hypre with rocm:
# TODO: add back "+petsc+slepc $petsc_spec_rocm" when it works.
@ -223,7 +220,7 @@ builds_rocm=(
+superlu-dist+strumpack+suite-sparse+gslib \
+pumi+mpfr+netcdf+zlib+gnutls+libunwind+conduit \
^raja+rocm~openmp ^occa~cuda ^hypre+rocm \
'"$strumpack_rocm_spec $superlu_spec_rocm $conduit_spec"
'"$strumpack_rocm_spec $conduit_spec"
#
# same builds as above with ${mfem_dev}