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:
parent
27ee08f5bb
commit
0a233ce83a
2 changed files with 43 additions and 28 deletions
|
@ -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"),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue