Package updates: Score-P 9, OTF2 3.1, OPARI2 2.9, Cube 4.9 (#49659)
Things done: * Added variants for llvm plugin and gcc plugin * Made binutils a proper variant * Updated dependencies and their associated packages where applicable * Modernization in progress: idiomatic use of `with_or_without` and `enable_or_disable` where it's trivial, transition towards `spec.satisfies(X)` rather than `X in spec` TODO: [x] Clean up RC entry/entries and add final tarball when available [x] Be consistent about `spec.satisfies` everywhere: consistent enough for now [x] Add `+mpi_f08` variant (is there a standard name for this?) (for 9.1, as commented) --------- Co-authored-by: William Williams <william.williams@tu-dresden.de> Co-authored-by: wrwilliams <wrwilliams@users.noreply.github.com> Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
This commit is contained in:
parent
72871ebde8
commit
4316c4fb00
@ -14,7 +14,7 @@ class Cubelib(AutotoolsPackage):
|
|||||||
url = "https://apps.fz-juelich.de/scalasca/releases/cube/4.4/dist/cubelib-4.4.tar.gz"
|
url = "https://apps.fz-juelich.de/scalasca/releases/cube/4.4/dist/cubelib-4.4.tar.gz"
|
||||||
|
|
||||||
maintainers("swat-jsc", "wrwilliams")
|
maintainers("swat-jsc", "wrwilliams")
|
||||||
|
version("4.9", sha256="a0658f5bf3f74bf7dcf465ab6e30476751ad07eb93618801bdcf190ba3029443")
|
||||||
version("4.8.2", sha256="d6fdef57b1bc9594f1450ba46cf08f431dd0d4ae595c47e2f3454e17e4ae74f4")
|
version("4.8.2", sha256="d6fdef57b1bc9594f1450ba46cf08f431dd0d4ae595c47e2f3454e17e4ae74f4")
|
||||||
version("4.8.1", sha256="e4d974248963edab48c5d0fc5831146d391b0ae4632cccafe840bf5f12cd80a9")
|
version("4.8.1", sha256="e4d974248963edab48c5d0fc5831146d391b0ae4632cccafe840bf5f12cd80a9")
|
||||||
version("4.8", sha256="171c93ac5afd6bc74c50a9a58efdaf8589ff5cc1e5bd773ebdfb2347b77e2f68")
|
version("4.8", sha256="171c93ac5afd6bc74c50a9a58efdaf8589ff5cc1e5bd773ebdfb2347b77e2f68")
|
||||||
|
@ -15,6 +15,7 @@ class Cubew(AutotoolsPackage):
|
|||||||
|
|
||||||
maintainers("swat-jsc", "wrwilliams")
|
maintainers("swat-jsc", "wrwilliams")
|
||||||
|
|
||||||
|
version("4.9", sha256="4ef74e81c569bf53117459cba5a1ea52b5dac739493fa83be39678840cd2acdd")
|
||||||
version("4.8.2", sha256="4f3bcf0622c2429b8972b5eb3f14d79ec89b8161e3c1cc5862ceda417d7975d2")
|
version("4.8.2", sha256="4f3bcf0622c2429b8972b5eb3f14d79ec89b8161e3c1cc5862ceda417d7975d2")
|
||||||
version("4.8.1", sha256="42cbd743d87c16e805c8e28e79292ab33de259f2cfba46f2682cb35c1bc032d6")
|
version("4.8.1", sha256="42cbd743d87c16e805c8e28e79292ab33de259f2cfba46f2682cb35c1bc032d6")
|
||||||
version("4.8", sha256="73c7f9e9681ee45d71943b66c01cfe675b426e4816e751ed2e0b670563ca4cf3")
|
version("4.8", sha256="73c7f9e9681ee45d71943b66c01cfe675b426e4816e751ed2e0b670563ca4cf3")
|
||||||
|
@ -21,6 +21,7 @@ class Opari2(AutotoolsPackage):
|
|||||||
homepage = "https://www.vi-hps.org/projects/score-p"
|
homepage = "https://www.vi-hps.org/projects/score-p"
|
||||||
url = "https://perftools.pages.jsc.fz-juelich.de/cicd/opari2/tags/opari2-2.0.8/opari2-2.0.8.tar.gz"
|
url = "https://perftools.pages.jsc.fz-juelich.de/cicd/opari2/tags/opari2-2.0.8/opari2-2.0.8.tar.gz"
|
||||||
|
|
||||||
|
version("2.0.9", sha256="d57139f757c5666afaaead45ed3d0954a9b98c4a6cef6b22afe672707cffd779")
|
||||||
version("2.0.8", sha256="196e59a2a625e6c795a6124c61e784bad142f9f38df0b4fa4d435ba9b9c19721")
|
version("2.0.8", sha256="196e59a2a625e6c795a6124c61e784bad142f9f38df0b4fa4d435ba9b9c19721")
|
||||||
version("2.0.7", sha256="e302a4cc265eb2a4aa27c16a90eabd9e1e58cb02a191dd1c4d86f9a0df128715")
|
version("2.0.7", sha256="e302a4cc265eb2a4aa27c16a90eabd9e1e58cb02a191dd1c4d86f9a0df128715")
|
||||||
version("2.0.6", sha256="55972289ce66080bb48622110c3189a36e88a12917635f049b37685b9d3bbcb0")
|
version("2.0.6", sha256="55972289ce66080bb48622110c3189a36e88a12917635f049b37685b9d3bbcb0")
|
||||||
|
@ -14,8 +14,9 @@ class Otf2(AutotoolsPackage):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
homepage = "https://www.vi-hps.org/projects/score-p"
|
homepage = "https://www.vi-hps.org/projects/score-p"
|
||||||
url = "https://perftools.pages.jsc.fz-juelich.de/cicd/otf2/tags/otf2-3.0/otf2-3.0.tar.gz"
|
url = "https://perftools.pages.jsc.fz-juelich.de/cicd/otf2/tags/otf2-3.1/otf2-3.1.tar.gz"
|
||||||
|
version("3.1.1", sha256="5a4e013a51ac4ed794fe35c55b700cd720346fda7f33ec84c76b86a5fb880a6e")
|
||||||
|
version("3.1", sha256="09dff2eda692486b88ad5ee189bbc9d7ebc1f17c863108c44ccf9631badbada4")
|
||||||
version("3.0.3", sha256="18a3905f7917340387e3edc8e5766f31ab1af41f4ecc5665da6c769ca21c4ee8")
|
version("3.0.3", sha256="18a3905f7917340387e3edc8e5766f31ab1af41f4ecc5665da6c769ca21c4ee8")
|
||||||
version("3.0", sha256="6fff0728761556e805b140fd464402ced394a3c622ededdb618025e6cdaa6d8c")
|
version("3.0", sha256="6fff0728761556e805b140fd464402ced394a3c622ededdb618025e6cdaa6d8c")
|
||||||
version("2.3", sha256="36957428d37c40d35b6b45208f050fb5cfe23c54e874189778a24b0e9219c7e3")
|
version("2.3", sha256="36957428d37c40d35b6b45208f050fb5cfe23c54e874189778a24b0e9219c7e3")
|
||||||
|
@ -16,7 +16,7 @@ class Scorep(AutotoolsPackage):
|
|||||||
homepage = "https://www.vi-hps.org/projects/score-p"
|
homepage = "https://www.vi-hps.org/projects/score-p"
|
||||||
url = "https://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/scorep-7.1/scorep-7.1.tar.gz"
|
url = "https://perftools.pages.jsc.fz-juelich.de/cicd/scorep/tags/scorep-7.1/scorep-7.1.tar.gz"
|
||||||
maintainers("wrwilliams")
|
maintainers("wrwilliams")
|
||||||
|
version("9.0", sha256="5d0a5db4cc6f31c30ae03c7e6f6245e83667b0ff38a7041ffe8b2e8e581e0997")
|
||||||
version("8.4", sha256="7bbde9a0721d27cc6205baf13c1626833bcfbabb1f33b325a2d67976290f7f8a")
|
version("8.4", sha256="7bbde9a0721d27cc6205baf13c1626833bcfbabb1f33b325a2d67976290f7f8a")
|
||||||
version("8.3", sha256="76c914e6319221c059234597a3bc53da788ed679179ac99c147284dcefb1574a")
|
version("8.3", sha256="76c914e6319221c059234597a3bc53da788ed679179ac99c147284dcefb1574a")
|
||||||
# version 8.2 was immediately superseded before it hit Spack
|
# version 8.2 was immediately superseded before it hit Spack
|
||||||
@ -88,29 +88,51 @@ def url_for_version(self, version):
|
|||||||
sha256="d20b3046ba6a89ad9c106bcf372bceb1bd9ab780d4c7dd9e7373f0099b92d933",
|
sha256="d20b3046ba6a89ad9c106bcf372bceb1bd9ab780d4c7dd9e7373f0099b92d933",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Variants
|
||||||
variant("mpi", default=True, description="Enable MPI support")
|
variant("mpi", default=True, description="Enable MPI support")
|
||||||
variant("papi", default=True, description="Enable PAPI")
|
variant("papi", default=True, description="Enable PAPI")
|
||||||
variant("pdt", default=False, description="Enable PDT")
|
variant("pdt", default=False, description="Enable PDT", when="@:8.4")
|
||||||
variant("shmem", default=False, description="Enable shmem tracing")
|
variant("shmem", default=False, description="Enable shmem tracing")
|
||||||
variant("unwind", default=False, description="Enable sampling via libunwind and lib wrapping")
|
variant("unwind", default=False, description="Enable sampling via libunwind and lib wrapping")
|
||||||
variant("cuda", default=False, description="Enable CUDA support")
|
variant("cuda", default=False, description="Enable CUDA support")
|
||||||
variant("hip", default=False, description="Enable ROCm/HIP support", when="@8.0:")
|
variant("hip", default=False, description="Enable ROCm/HIP support", when="@8.0:")
|
||||||
variant("gcc-plugin", default=True, description="Enable gcc-plugin", when="%gcc")
|
variant("gcc-plugin", default=True, description="Enable gcc-plugin", when="%gcc")
|
||||||
|
variant(
|
||||||
|
"llvm-plugin", default=True, description="Enable LLVM compiler plugin", when="@9.0: ^llvm"
|
||||||
|
)
|
||||||
|
variant(
|
||||||
|
"binutils",
|
||||||
|
default=True,
|
||||||
|
description="Enable debug info lookup via binutils",
|
||||||
|
when="^binutils",
|
||||||
|
)
|
||||||
|
# Putting this in as preparation. F08 support exists in 9.0 but configure does not respect
|
||||||
|
# --enable-mpi-f08 and will not until 9.1.
|
||||||
|
variant("mpi_f08", default=True, description="Enable MPI F08 support", when="@9.1: +mpi")
|
||||||
# Dependencies for SCORE-P are quite tight. See the homepage for more
|
# Dependencies for SCORE-P are quite tight. See the homepage for more
|
||||||
# information. Starting with scorep 4.0 / cube 4.4, Score-P only depends on
|
# information. Starting with scorep 4.0 / cube 4.4, Score-P only depends on
|
||||||
# two components of cube -- cubew and cubelib.
|
# two components of cube -- cubew and cubelib.
|
||||||
|
|
||||||
|
# Language dependencies
|
||||||
|
# TODO: we could allow a +fortran variant here.
|
||||||
depends_on("c", type="build") # generated
|
depends_on("c", type="build") # generated
|
||||||
depends_on("cxx", type="build") # generated
|
depends_on("cxx", type="build") # generated
|
||||||
depends_on("fortran", type="build") # generated
|
depends_on("fortran", type="build") # generated
|
||||||
|
|
||||||
|
# SCOREP 9
|
||||||
|
depends_on("gotcha@1.0.8:", type="link", when="@9:")
|
||||||
|
depends_on("otf2@3.1:", when="@9:")
|
||||||
|
depends_on("cubew@4.9:", when="@9:")
|
||||||
|
depends_on("cubelib@4.9:", when="@9:")
|
||||||
|
depends_on("opari2@2.0.9", when="@9:")
|
||||||
|
|
||||||
# SCOREP 8
|
# SCOREP 8
|
||||||
depends_on("binutils", type="link", when="@8:")
|
depends_on("binutils", type="link", when="@8:")
|
||||||
depends_on("otf2@3:", when="@8:")
|
depends_on("otf2@3:", when="@8:")
|
||||||
depends_on("cubew@4.8.2:", when="@8.3:")
|
depends_on("cubew@4.8.2:4.8", when="@8.3:")
|
||||||
depends_on("cubelib@4.8.2:", when="@8.3:")
|
depends_on("cubelib@4.8.2:4.8", when="@8.3:")
|
||||||
depends_on("cubew@4.8:", when="@8:8.2")
|
depends_on("cubew@4.8", when="@8:8.2")
|
||||||
depends_on("cubelib@4.8:", when="@8:8.2")
|
depends_on("cubelib@4.8", when="@8:8.2")
|
||||||
# fall through to Score-P 7's OPARI2, no new release
|
# fall through to Score-P 7's OPARI2, no new release
|
||||||
# SCOREP 7
|
# SCOREP 7
|
||||||
depends_on("otf2@2.3:2.3.99", when="@7.0:7")
|
depends_on("otf2@2.3:2.3.99", when="@7.0:7")
|
||||||
@ -140,6 +162,7 @@ def url_for_version(self, version):
|
|||||||
depends_on("opari2@1.1.4", when="@1.3")
|
depends_on("opari2@1.1.4", when="@1.3")
|
||||||
depends_on("cube@4.2.3", when="@1.3")
|
depends_on("cube@4.2.3", when="@1.3")
|
||||||
|
|
||||||
|
# Conditional dependencies for variants
|
||||||
depends_on("mpi@2.2:", when="@7.0:+mpi")
|
depends_on("mpi@2.2:", when="@7.0:+mpi")
|
||||||
depends_on("mpi", when="+mpi")
|
depends_on("mpi", when="+mpi")
|
||||||
depends_on("papi", when="+papi")
|
depends_on("papi", when="+papi")
|
||||||
@ -151,6 +174,7 @@ def url_for_version(self, version):
|
|||||||
depends_on("hip@4.2:", when="+hip")
|
depends_on("hip@4.2:", when="+hip")
|
||||||
depends_on("rocprofiler-dev", when="+hip")
|
depends_on("rocprofiler-dev", when="+hip")
|
||||||
depends_on("rocm-smi-lib", when="+hip")
|
depends_on("rocm-smi-lib", when="+hip")
|
||||||
|
|
||||||
# Score-P requires a case-sensitive file system, and therefore
|
# Score-P requires a case-sensitive file system, and therefore
|
||||||
# does not work on macOS
|
# does not work on macOS
|
||||||
# https://github.com/spack/spack/issues/1609
|
# https://github.com/spack/spack/issues/1609
|
||||||
@ -158,14 +182,16 @@ def url_for_version(self, version):
|
|||||||
# Score-P first has support for ROCm 6.x as of v8.4
|
# Score-P first has support for ROCm 6.x as of v8.4
|
||||||
conflicts("hip@6.0:", when="@1.0:8.3+hip")
|
conflicts("hip@6.0:", when="@1.0:8.3+hip")
|
||||||
|
|
||||||
|
# Utility function: extract the first directory in `root` where
|
||||||
|
# we find `libname`. Used to handle CUDA irregular layouts.
|
||||||
def find_libpath(self, libname, root):
|
def find_libpath(self, libname, root):
|
||||||
libs = find_libraries(libname, root, shared=True, recursive=True)
|
libs = find_libraries(libname, root, shared=True, recursive=True)
|
||||||
if len(libs.directories) == 0:
|
if len(libs.directories) == 0:
|
||||||
return None
|
return None
|
||||||
return libs.directories[0]
|
return libs.directories[0]
|
||||||
|
|
||||||
# handle any mapping of Spack compiler names to Score-P args
|
# Handle any mapping of Spack compiler names to Score-P args
|
||||||
# this should continue to exist for backward compatibility
|
# This should continue to exist for backward compatibility
|
||||||
def clean_compiler(self, compiler):
|
def clean_compiler(self, compiler):
|
||||||
renames = {"cce": "cray", "rocmcc": "amdclang"}
|
renames = {"cce": "cray", "rocmcc": "amdclang"}
|
||||||
if compiler in renames:
|
if compiler in renames:
|
||||||
@ -174,7 +200,6 @@ def clean_compiler(self, compiler):
|
|||||||
|
|
||||||
def configure_args(self):
|
def configure_args(self):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
|
|
||||||
config_args = [
|
config_args = [
|
||||||
"--with-otf2=%s" % spec["otf2"].prefix.bin,
|
"--with-otf2=%s" % spec["otf2"].prefix.bin,
|
||||||
"--with-opari2=%s" % spec["opari2"].prefix.bin,
|
"--with-opari2=%s" % spec["opari2"].prefix.bin,
|
||||||
@ -182,8 +207,7 @@ def configure_args(self):
|
|||||||
]
|
]
|
||||||
|
|
||||||
cname = self.clean_compiler(spec.compiler.name)
|
cname = self.clean_compiler(spec.compiler.name)
|
||||||
|
config_args.extend(["--with-nocross-compiler-suite={0}".format(cname)])
|
||||||
config_args.append("--with-nocross-compiler-suite={0}".format(cname))
|
|
||||||
|
|
||||||
if self.version >= Version("4.0"):
|
if self.version >= Version("4.0"):
|
||||||
config_args.append("--with-cubew=%s" % spec["cubew"].prefix.bin)
|
config_args.append("--with-cubew=%s" % spec["cubew"].prefix.bin)
|
||||||
@ -198,14 +222,21 @@ def configure_args(self):
|
|||||||
if "+pdt" in spec:
|
if "+pdt" in spec:
|
||||||
config_args.append("--with-pdt=%s" % spec["pdt"].prefix.bin)
|
config_args.append("--with-pdt=%s" % spec["pdt"].prefix.bin)
|
||||||
|
|
||||||
if "+unwind" in spec:
|
config_args.extend(
|
||||||
config_args.append("--with-libunwind=%s" % spec["libunwind"].prefix)
|
self.with_or_without("libunwind", activation_value="prefix", variant="unwind")
|
||||||
|
)
|
||||||
if "+cuda" in spec:
|
if "+cuda" in spec:
|
||||||
config_args.append("--with-libcudart=%s" % spec["cuda"].prefix)
|
config_args.append("--with-libcudart=%s" % spec["cuda"].prefix)
|
||||||
cuda_driver_path = self.find_libpath("libcuda", spec["cuda"].prefix)
|
cuda_driver_path = self.find_libpath("libcuda", spec["cuda"].prefix)
|
||||||
config_args.append("--with-libcuda-lib=%s" % cuda_driver_path)
|
config_args.append("--with-libcuda-lib=%s" % cuda_driver_path)
|
||||||
if "+hip" in spec:
|
config_args.extend(
|
||||||
config_args.append("--with-rocm=%s" % spec["hip"].prefix)
|
self.with_or_without(
|
||||||
|
"rocm", activation_value=lambda _: self.spec["hip"].prefix, variant="hip"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
config_args.extend(self.enable_or_disable("llvm-plugin"))
|
||||||
|
config_args.extend(self.enable_or_disable("gcc-plugin"))
|
||||||
|
config_args.extend(self.enable_or_disable("mpi_f08"))
|
||||||
|
|
||||||
if "~shmem" in spec:
|
if "~shmem" in spec:
|
||||||
config_args.append("--without-shmem")
|
config_args.append("--without-shmem")
|
||||||
@ -227,7 +258,7 @@ def configure_args(self):
|
|||||||
"^[virtuals=mpi] hpcx-mpi"
|
"^[virtuals=mpi] hpcx-mpi"
|
||||||
):
|
):
|
||||||
config_args.append("--with-mpi=openmpi")
|
config_args.append("--with-mpi=openmpi")
|
||||||
elif "~mpi" in spec:
|
elif spec.satisfies("~mpi"):
|
||||||
config_args.append("--without-mpi")
|
config_args.append("--without-mpi")
|
||||||
# Let any +mpi that gets here autodetect, which is default
|
# Let any +mpi that gets here autodetect, which is default
|
||||||
# Valid values are bullxmpi|cray|hp|ibmpoe|intel|intel2|intel3|intelpoe|lam|mpibull2
|
# Valid values are bullxmpi|cray|hp|ibmpoe|intel|intel2|intel3|intelpoe|lam|mpibull2
|
||||||
@ -237,8 +268,13 @@ def configure_args(self):
|
|||||||
# (see end of function)
|
# (see end of function)
|
||||||
# but add similar spec.satisfies clauses for any that you need.
|
# but add similar spec.satisfies clauses for any that you need.
|
||||||
# -- wrwilliams 12/2024
|
# -- wrwilliams 12/2024
|
||||||
if spec.satisfies("^binutils"):
|
config_args.extend(
|
||||||
config_args.append("--with-libbfd=%s" % spec["binutils"].prefix)
|
self.with_or_without(
|
||||||
|
"libbfd",
|
||||||
|
activation_value=lambda _: self.spec["binutils"].prefix,
|
||||||
|
variant="binutils",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
# when you build with gcc, you usually want to use the gcc-plugin!
|
# when you build with gcc, you usually want to use the gcc-plugin!
|
||||||
# see, e.g., GNU Compiler Plug-In in https://scorepci.pages.jsc.fz-juelich.de/scorep-pipelines/docs/scorep-5.0/html/installationfile.html
|
# see, e.g., GNU Compiler Plug-In in https://scorepci.pages.jsc.fz-juelich.de/scorep-pipelines/docs/scorep-5.0/html/installationfile.html
|
||||||
@ -254,7 +290,7 @@ def configure_args(self):
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
if "+mpi" in spec:
|
if spec.satisfies("+mpi"):
|
||||||
config_args.extend(
|
config_args.extend(
|
||||||
[
|
[
|
||||||
"MPICC={0}".format(spec["mpi"].mpicc),
|
"MPICC={0}".format(spec["mpi"].mpicc),
|
||||||
|
Loading…
Reference in New Issue
Block a user