ExaGO 1.5.1 release (#35595)

* Update exago w/ 1.5.1 and small updates to hiop.
* Fix styling.
* Add RAJA back to ExaGO package.
* Update RAJA requirement for ExaGO and HiOp.
* Update last RAJA requirement in HiOp.
This commit is contained in:
Cameron Rutherford 2023-02-21 17:56:59 -05:00 committed by GitHub
parent 27ee08f5bb
commit 0a233ce83a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 28 deletions

View file

@ -15,6 +15,7 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
git = "https://gitlab.pnnl.gov/exasgd/frameworks/exago.git" git = "https://gitlab.pnnl.gov/exasgd/frameworks/exago.git"
maintainers("ryandanehy", "CameronRutherford", "pelesh") maintainers("ryandanehy", "CameronRutherford", "pelesh")
version("1.5.1", commit="7abe482c8da0e247f9de4896f5982c4cacbecd78", submodules=True)
version("1.5.0", commit="227f49573a28bdd234be5500b3733be78a958f15", submodules=True) version("1.5.0", commit="227f49573a28bdd234be5500b3733be78a958f15", submodules=True)
version("1.4.1", commit="ea607c685444b5f345bfdc9a59c345f0f30adde2", submodules=True) version("1.4.1", commit="ea607c685444b5f345bfdc9a59c345f0f30adde2", submodules=True)
version("1.4.0", commit="4f4c3fdb40b52ace2d6ba000e7f24b340ec8e886", submodules=True) version("1.4.0", commit="4f4c3fdb40b52ace2d6ba000e7f24b340ec8e886", submodules=True)
@ -33,8 +34,8 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
# Progrmming model options # Progrmming model options
variant("mpi", default=True, description="Enable/Disable MPI") variant("mpi", default=True, description="Enable/Disable MPI")
variant("raja", default=False, description="Enable/Disable RAJA") variant("raja", default=False, description="Enable/Disable RAJA")
variant("python", default=True, description="Enable/Disable Python bindings") variant("python", default=True, when="@1.4:", description="Enable/Disable Python bindings")
conflicts("+python", when="@:1.3.0", msg="Python bindings require ExaGO 1.4") variant("logging", default=True, description="Enable/Disable spdlog based logging")
conflicts( conflicts(
"+python", when="+ipopt+rocm", msg="Python bindings require -fPIC with Ipopt for rocm." "+python", when="+ipopt+rocm", msg="Python bindings require -fPIC with Ipopt for rocm."
) )
@ -47,13 +48,14 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
"~hiop~ipopt @:1.4", "~hiop~ipopt @:1.4",
msg="ExaGO needs at least one solver enabled. PFLOW only mode is supported in 1.5+", msg="ExaGO needs at least one solver enabled. PFLOW only mode is supported in 1.5+",
) )
# We will better support minimal builds with Python in future.
# You can use Python with PFLOW if desired ~ipopt~hiop # You can use Python with PFLOW if desired ~ipopt~hiop
conflicts( conflicts(
"~hiop~ipopt+python", msg="ExaGO Python wrapper requires at least one solver enabled." "~hiop~ipopt+python @:1.5.0",
msg="ExaGO Python wrapper requires at least one solver enabled.",
) )
# Dependencies # Dependencies
depends_on("python@3.6:", when="@1.3.0:+python")
depends_on("py-pytest", type=("build", "run"), when="@1.5.0:+python") depends_on("py-pytest", type=("build", "run"), when="@1.5.0:+python")
depends_on("py-mpi4py", when="@1.3.0:+mpi+python") depends_on("py-mpi4py", when="@1.3.0:+mpi+python")
depends_on("pkgconfig", type="build") depends_on("pkgconfig", type="build")
@ -64,13 +66,6 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
depends_on("raja", when="+raja") depends_on("raja", when="+raja")
depends_on("umpire", when="+raja") depends_on("umpire", when="+raja")
depends_on("umpire@6.0.0", when="@1.1.0: +raja")
depends_on("raja@0.14.0", when="@1.1.0: +raja")
depends_on("camp@0.2.3", when="@1.1.0: +raja")
# Some allocator code in Umpire only works with static libs
depends_on("umpire+cuda~shared", when="+raja+cuda")
depends_on("cmake@3.18:", type="build") depends_on("cmake@3.18:", type="build")
# Profiling # Profiling
@ -108,15 +103,26 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
# ^ need to depend when both hpctoolkit and tau # ^ need to depend when both hpctoolkit and tau
# HiOp dependency logic # HiOp dependency logic
depends_on("hiop+raja", when="+hiop+raja")
depends_on("hiop@0.3.99:", when="@0.99:+hiop") depends_on("hiop@0.3.99:", when="@0.99:+hiop")
depends_on("hiop@0.5.1:", when="@1.1.0:+hiop") depends_on("hiop@0.5.1:", when="@1.1.0:+hiop")
depends_on("hiop@0.5.3:", when="@1.3.0:+hiop") depends_on("hiop@0.5.3:", when="@1.3.0:+hiop")
depends_on("hiop@0.7.0:0.7.1", when="@1.5.0:+hiop") depends_on("hiop@0.7.0:", when="@1.5.0:+hiop")
depends_on("hiop~mpi", when="+hiop~mpi") depends_on("hiop~mpi", when="+hiop~mpi")
depends_on("hiop+mpi", when="+hiop+mpi") depends_on("hiop+mpi", when="+hiop+mpi")
# RAJA dependency logic
# ExaGO will support +raja~hiop in the future
depends_on("hiop+raja", when="+hiop+raja")
# This is duplicated from HiOp
# RAJA > 0.14 and Umpire > 6.0 require c++ std 14
# We are working on supporting newer Umpire/RAJA versions
depends_on("raja@0.14.0:0.14", when="@1.1.0:+raja")
depends_on("umpire@6.0.0:6", when="@1.1.0:+raja")
depends_on("camp@0.2.3:0.2", when="@1.1.0:+raja")
# This is no longer a requirement in RAJA > 0.14
depends_on("umpire+cuda~shared", when="+raja+cuda ^raja@:0.14")
depends_on("petsc@3.13:3.14", when="@:1.2.99") depends_on("petsc@3.13:3.14", when="@:1.2.99")
depends_on("petsc@3.16.0:3.16", when="@1.3.0:1.4") depends_on("petsc@3.16.0:3.16", when="@1.3.0:1.4")
depends_on("petsc@3.18.0:3.18", when="@1.5.0:") depends_on("petsc@3.18.0:3.18", when="@1.5.0:")
@ -127,16 +133,15 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
cuda_dep = "+cuda cuda_arch={0}".format(arch) cuda_dep = "+cuda cuda_arch={0}".format(arch)
depends_on("hiop {0}".format(cuda_dep), when=cuda_dep) depends_on("hiop {0}".format(cuda_dep), when=cuda_dep)
depends_on("raja {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep)) depends_on("raja {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep))
depends_on("umpire {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep))
# For some versions of RAJA package, camp cuda variant does not get set
# correctly, so we must explicitly depend on it even though we don't use
# camp
depends_on("camp {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep)) depends_on("camp {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep))
for arch in ROCmPackage.amdgpu_targets: for arch in ROCmPackage.amdgpu_targets:
rocm_dep = "+rocm amdgpu_target={0}".format(arch) rocm_dep = "+rocm amdgpu_target={0}".format(arch)
depends_on("hiop {0}".format(rocm_dep), when=rocm_dep) depends_on("hiop {0}".format(rocm_dep), when=rocm_dep)
depends_on("raja {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep)) depends_on("raja {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep))
depends_on("umpire {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep))
depends_on("camp {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep))
flag_handler = build_system_flags flag_handler = build_system_flags
@ -173,6 +178,7 @@ def cmake_args(self):
self.define_from_variant("EXAGO_ENABLE_HIOP", "hiop"), self.define_from_variant("EXAGO_ENABLE_HIOP", "hiop"),
self.define_from_variant("EXAGO_ENABLE_IPOPT", "ipopt"), self.define_from_variant("EXAGO_ENABLE_IPOPT", "ipopt"),
self.define_from_variant("EXAGO_ENABLE_PYTHON", "python"), self.define_from_variant("EXAGO_ENABLE_PYTHON", "python"),
self.define_from_variant("EXAGO_ENABLE_LOGGING", "logging"),
] ]
) )

View file

@ -80,14 +80,18 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage):
depends_on("magma {0}".format(cuda_dep), when=cuda_dep) depends_on("magma {0}".format(cuda_dep), when=cuda_dep)
depends_on("raja {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep)) depends_on("raja {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep))
depends_on("ginkgo {0}".format(cuda_dep), when="+ginkgo {0}".format(cuda_dep)) depends_on("ginkgo {0}".format(cuda_dep), when="+ginkgo {0}".format(cuda_dep))
depends_on("umpire ~shared {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep)) depends_on("umpire {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep))
# Camp GPU arch doesn't get propogated correctly
depends_on("camp {0}".format(cuda_dep), when="+raja {0}".format(cuda_dep))
for arch in ROCmPackage.amdgpu_targets: for arch in ROCmPackage.amdgpu_targets:
rocm_dep = "+rocm amdgpu_target={0}".format(arch) rocm_dep = "+rocm amdgpu_target={0}".format(arch)
depends_on("magma {0}".format(rocm_dep), when=rocm_dep) depends_on("magma {0}".format(rocm_dep), when=rocm_dep)
depends_on("raja {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep)) depends_on("raja {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep))
depends_on("umpire {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep))
depends_on("ginkgo {0}".format(rocm_dep), when="+ginkgo {0}".format(rocm_dep)) depends_on("ginkgo {0}".format(rocm_dep), when="+ginkgo {0}".format(rocm_dep))
depends_on("umpire {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep))
# Camp GPU arch doesn't get propogated correctly
depends_on("camp {0}".format(rocm_dep), when="+raja {0}".format(rocm_dep))
magma_ver_constraints = (("2.5.4", "0.4"), ("2.6.1", "0.4.6"), ("2.6.2", "0.5.4")) magma_ver_constraints = (("2.5.4", "0.4"), ("2.6.1", "0.4.6"), ("2.6.2", "0.5.4"))
@ -101,9 +105,20 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage):
depends_on("umpire", when="+raja") depends_on("umpire", when="+raja")
depends_on("raja+openmp", when="+raja~cuda~rocm") depends_on("raja+openmp", when="+raja~cuda~rocm")
# Umpire > 0.14 and RAJA > 6.0 require c++ std 14 # RAJA > 0.14 and Umpire > 6.0 require c++ std 14
depends_on("raja@0.14.0:0.14", when="@0.5.0:0.6.2+raja") # We are working on supporting newer Umpire/RAJA versions
depends_on("umpire@6.0.0:", when="@0.5.0:0.6.2+raja") depends_on("raja@0.14.0:0.14", when="@0.5.0:+raja")
depends_on("umpire@6.0.0:6", when="@0.5.0:+raja")
depends_on("camp@0.2.3:0.2", when="@0.5.0:+raja")
# This is no longer a requirement in RAJA > 0.14
depends_on("umpire+cuda~shared", when="+raja+cuda ^raja@:0.14")
conflicts(
"+shared",
when="+cuda+raja ^raja@:0.14",
msg="umpire+cuda exports device code and requires static libs",
)
depends_on("hip", when="+rocm") depends_on("hip", when="+rocm")
depends_on("hipblas", when="+rocm") depends_on("hipblas", when="+rocm")
@ -117,12 +132,6 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage):
depends_on("ginkgo@1.5.0.glu_experimental", when="+ginkgo") depends_on("ginkgo@1.5.0.glu_experimental", when="+ginkgo")
conflicts(
"+shared",
when="+cuda+raja",
msg="umpire+cuda exports device code and requires static libs",
)
flag_handler = build_system_flags flag_handler = build_system_flags
def cmake_args(self): def cmake_args(self):