Ecp hdf5 vol (#35195)
* ECP-SDK: enable hdf5 VOL adapters - When +hdf5, enable VOL adapters suitable for the SDK. - Each VOL package must prepend to the HDF5_PLUGIN_PATH. - hdf5: 1.13.3 will break existing VOL packages, constrain VOLs related to SDK and add note to keep 1.13.2 available. - hdf5-vol-async: - Do not set HDF5_VOL_CONNECTOR, consumers must opt-in. - Enforce DAG constraints on MPI to require threaded version. - Depend on an explicit version of argbots to relax concretization issues in other spack environments. - paraview: fix compiler flag usage for the 110 ABI (followup to #33617). * ECP Data and ViS: Add constraits for HDF5 VOLS * CI: HDF5 1.14 builds without VisIt * hdf5-vol-async: Update docs string --------- Co-authored-by: Stephen McDowell <stephen.mcdowell@kitware.com>
This commit is contained in:
parent
12eff8daad
commit
4ace1e660a
6 changed files with 43 additions and 8 deletions
|
@ -52,6 +52,7 @@ spack:
|
|||
- matrix:
|
||||
- [$sdk_base_spec]
|
||||
- [$^paraview_specs]
|
||||
- - ^hdf5@1.14 # Non-VisIt can build HDF5 1.14
|
||||
# Test ParaView builds with differnt GL backends
|
||||
- matrix:
|
||||
- [$sdk_base_spec]
|
||||
|
|
|
@ -112,16 +112,31 @@ class EcpDataVisSdk(BundlePackage, CudaPackage, ROCmPackage):
|
|||
|
||||
dav_sdk_depends_on("faodel+shared+mpi network=libfabric", when="+faodel", propagate=["hdf5"])
|
||||
|
||||
# HDF5 1.14 is a soft requirement for the ECP Data and Vis SDK.
|
||||
# When building with VisIt and CinemaSci in the same SDK environment there is a conflict
|
||||
# in the build dependency of py-setuptools which prevents building a py-h5py that is
|
||||
# compatible with 'hdf5@1.14:'. Until there is a version of VisIt with an updated VTK or Spack
|
||||
# allows the concretization of multiple versions of the same build only dependency
|
||||
# concretization with VisIt and Cinema variants will not allow building VOLs.
|
||||
dav_sdk_depends_on("hdf5@1.12: +shared+mpi", when="+hdf5", propagate=["fortran"])
|
||||
|
||||
# HDF5 VOL Adapters require hdf5@1.14:
|
||||
|
||||
# hdf5-vfd-gds needs cuda@11.7.1 or later, only enable when 11.7.1+ available.
|
||||
depends_on("hdf5-vfd-gds@1.0.2:", when="+cuda+hdf5^cuda@11.7.1:")
|
||||
depends_on("hdf5-vfd-gds@1.0.2:", when="+cuda+hdf5 ^cuda@11.7.1: ^hdf5@1.14:")
|
||||
for cuda_arch in cuda_arch_variants:
|
||||
depends_on(
|
||||
"hdf5-vfd-gds@1.0.2: {0}".format(cuda_arch),
|
||||
when="+cuda+hdf5 {0} ^cuda@11.7.1:".format(cuda_arch),
|
||||
when="+cuda+hdf5 {0} ^cuda@11.7.1: ^hdf5@1.14:".format(cuda_arch),
|
||||
)
|
||||
conflicts("~cuda", when="^hdf5-vfd-gds@1.0.2:")
|
||||
conflicts("~hdf5", when="^hdf5-vfd-gds@1.0.2:")
|
||||
conflicts("~hdf5", when="^hdf5-vol-async")
|
||||
conflicts("~hdf5", when="^hdf5-vol-cache")
|
||||
conflicts("~hdf5", when="^hdf5-vol-log")
|
||||
depends_on("hdf5-vol-async", when="+hdf5 ^hdf5@1.14:")
|
||||
depends_on("hdf5-vol-cache", when="+hdf5 ^hdf5@1.14:")
|
||||
depends_on("hdf5-vol-log", when="+hdf5 ^hdf5@1.14:")
|
||||
|
||||
dav_sdk_depends_on("parallel-netcdf+shared", when="+pnetcdf", propagate=["fortran"])
|
||||
|
||||
|
|
|
@ -7,7 +7,14 @@
|
|||
|
||||
|
||||
class Hdf5VolAsync(CMakePackage):
|
||||
"""This package enables asynchronous IO in HDF5."""
|
||||
"""This package enables asynchronous IO in HDF5.
|
||||
|
||||
Usage: Set the HDF5_VOL_CONNECTOR environment variable to enable this adaptor, i.e.
|
||||
|
||||
$export HDF5_VOL_CONNECTOR="async under_vol=0;under_info={}"
|
||||
|
||||
ref. https://hdf5-vol-async.readthedocs.io/en/latest/gettingstarted.html#set-environmental-variables
|
||||
"""
|
||||
|
||||
homepage = "https://hdf5-vol-async.readthedocs.io"
|
||||
git = "https://github.com/hpc-io/vol-async.git"
|
||||
|
@ -27,15 +34,17 @@ class Hdf5VolAsync(CMakePackage):
|
|||
variant("memcpy", default=False, description="Enable buffer copy for dataset write")
|
||||
|
||||
depends_on("mpi")
|
||||
depends_on("argobots@main")
|
||||
depends_on("argobots@1.1:")
|
||||
depends_on("hdf5 +mpi +threadsafe")
|
||||
depends_on("hdf5@1.13.0:1.13.2", when="@:1.3")
|
||||
depends_on("hdf5@1.13.3:", when="@1.4:")
|
||||
|
||||
# Require MPI_THREAD_MULTIPLE.
|
||||
depends_on("openmpi +thread_multiple", when="^openmpi")
|
||||
depends_on("mvapich2 threads=multiple", when="^mvapich2")
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
env.set("HDF5_PLUGIN_PATH", self.spec.prefix.lib)
|
||||
vol_connector = "async under_vol=0;under_info=[]"
|
||||
env.set("HDF5_VOL_CONNECTOR", vol_connector)
|
||||
env.prepend_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib)
|
||||
env.set("MPICH_MAX_THREAD_SAFETY", "multiple")
|
||||
|
||||
def cmake_args(self):
|
||||
|
|
|
@ -17,8 +17,12 @@ class Hdf5VolCache(CMakePackage):
|
|||
version("v1.1", tag="v1.1")
|
||||
version("v1.0", tag="v1.0")
|
||||
|
||||
depends_on("hdf5@1.13: +mpi +threadsafe")
|
||||
depends_on("hdf5-vol-async")
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
env.prepend_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib)
|
||||
|
||||
def cmake_args(self):
|
||||
"""Populate cmake arguments for HDF5 VOL."""
|
||||
args = [
|
||||
|
|
|
@ -22,12 +22,16 @@ class Hdf5VolLog(AutotoolsPackage):
|
|||
version("1.2.0", tag="logvol.1.2.0")
|
||||
version("1.1.0", tag="logvol.1.1.0")
|
||||
|
||||
depends_on("hdf5@1.13.2:")
|
||||
depends_on("hdf5@1.14.0:", when="@1.4.0:")
|
||||
depends_on("hdf5@1.13.2", when="@:1.3.0")
|
||||
depends_on("autoconf", type="build")
|
||||
depends_on("automake", type="build")
|
||||
depends_on("libtool", type="build")
|
||||
depends_on("m4", type="build")
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
env.prepend_path("HDF5_PLUGIN_PATH", self.spec.prefix.lib)
|
||||
|
||||
def configure_args(self):
|
||||
args = []
|
||||
|
||||
|
|
|
@ -39,6 +39,8 @@ class Hdf5(CMakePackage):
|
|||
version("develop-1.8", branch="hdf5_1_8")
|
||||
|
||||
# Odd versions are considered experimental releases
|
||||
# Note: These are still required to build some VOL adapters, but even releases should be
|
||||
# preferred.
|
||||
version("1.13.3", sha256="83c7c06671f975cee6944b0b217f95005faa55f79ea5532cf4ac268989866af4")
|
||||
version("1.13.2", sha256="01643fa5b37dba7be7c4db6bbf3c5d07adf5c1fa17dbfaaa632a279b1b2f06da")
|
||||
|
||||
|
|
Loading…
Reference in a new issue