186 lines
7.5 KiB
Python
186 lines
7.5 KiB
Python
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
import sys
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class Apex(CMakePackage):
|
|
"""Autonomic Performance Environment for eXascale (APEX)."""
|
|
|
|
maintainers("khuck")
|
|
homepage = "https://uo-oaciss.github.io/apex"
|
|
url = "https://github.com/UO-OACISS/apex/archive/v2.6.2.tar.gz"
|
|
git = "https://github.com/UO-OACISS/apex"
|
|
|
|
version("develop", branch="develop")
|
|
version("master", branch="master")
|
|
version("2.6.3", sha256="7fef12937d3bd1271a01abe44cb931b1d63823fb5c74287a332f3012ed7297d5")
|
|
version("2.6.2", sha256="0c3ec26631db7925f50cf4e8920a778b57d11913f239a0eb964081f925129725")
|
|
version("2.6.1", sha256="511dbab0af541489052a3d6379c48f9577e51654491d3b2c8545020e9d29fb29")
|
|
version("2.6.0", sha256="25b4f6afd1083475dc6680b5da87759c62d31fcf368996185573694fc40d5317")
|
|
version(
|
|
"2.5.1",
|
|
sha256="c01016e6a8a3a77e1021281ae53681cb83ea7a369c346ef85d45d27bacca2fca",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2.5.0",
|
|
sha256="d4a95f6226985acf2143e2b779b7bba3caf823564b04826b022f1a0c31093a0f",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2.4.1",
|
|
sha256="055d09dd36c529ebd3bab4defbec4ad1d227c004a291faf26e77e4ab79ce470c",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2.4.0",
|
|
sha256="15d8957da7b37d2c684a6f0f32aef65b0b26be6558da17963cf71f3fd3cfdf2f",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2.3.2",
|
|
sha256="acf37c024a2283cafbf206f508929208b62c8f800af22ad7c74c570863a31bb4",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2.3.1",
|
|
sha256="86bf6933f2c53531fcb24cda9fc7dc9919909bed54740d1e0bc3e7ce6ed78091",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2.3.0",
|
|
sha256="7e1d16c9651b913c5e28abdbad75f25c55ba25e9fa35f5d979c1d3f9b9852c58",
|
|
deprecated=True,
|
|
)
|
|
version(
|
|
"2.2.0",
|
|
sha256="cd5eddb1f6d26b7dbb4a8afeca2aa28036c7d0987e0af0400f4f96733889c75c",
|
|
deprecated=True,
|
|
)
|
|
|
|
# Disable some default dependencies on Darwin/OSX
|
|
darwin_default = False
|
|
if sys.platform != "darwin":
|
|
darwin_default = True
|
|
|
|
# Enable by default
|
|
variant("activeharmony", default=True, description="Enables Active Harmony support")
|
|
variant("plugins", default=True, description="Enables Policy Plugin support")
|
|
variant("binutils", default=darwin_default, description="Enables Binutils support")
|
|
variant("otf2", default=True, description="Enables OTF2 support")
|
|
variant(
|
|
"gperftools",
|
|
default=darwin_default,
|
|
description="Enables Google PerfTools TCMalloc support",
|
|
)
|
|
variant("openmp", default=darwin_default, description="Enables OpenMP support")
|
|
variant("papi", default=darwin_default, description="Enables PAPI support")
|
|
|
|
# Disable by default
|
|
variant("cuda", default=False, description="Enables CUDA support")
|
|
variant("hip", default=False, description="Enables ROCm/HIP support")
|
|
variant("sycl", default=False, description="Enables Intel SYCL support (Level0)")
|
|
variant("boost", default=False, description="Enables Boost support")
|
|
variant("jemalloc", default=False, description="Enables JEMalloc support")
|
|
variant("lmsensors", default=False, description="Enables LM-Sensors support")
|
|
variant("mpi", default=False, description="Enables MPI support")
|
|
variant("tests", default=False, description="Build Unit Tests")
|
|
variant("examples", default=False, description="Build Examples")
|
|
|
|
# Dependencies
|
|
depends_on("zlib-api")
|
|
depends_on("cmake@3.10.0:", type="build")
|
|
depends_on("binutils@2.33:+libiberty+headers", when="+binutils")
|
|
depends_on("gettext", when="+binutils ^binutils+nls")
|
|
depends_on("activeharmony@4.6:", when="+activeharmony")
|
|
depends_on("activeharmony@4.6:", when="+plugins")
|
|
depends_on("otf2@2.1:", when="+otf2")
|
|
depends_on("mpi", when="+mpi")
|
|
depends_on("gperftools", when="+gperftools")
|
|
depends_on("jemalloc", when="+jemalloc")
|
|
depends_on("lm-sensors", when="+lmsensors")
|
|
depends_on("papi@5.7.0:", when="+papi")
|
|
depends_on("cuda", when="+cuda")
|
|
depends_on("hip", when="+hip")
|
|
depends_on("sycl", when="+sycl")
|
|
depends_on("roctracer-dev", when="+hip")
|
|
depends_on("rocm-smi-lib", when="+hip")
|
|
depends_on("boost@1.54: +exception+chrono+system+atomic+container+regex+thread", when="+boost")
|
|
|
|
# Conflicts
|
|
conflicts("+jemalloc", when="+gperftools")
|
|
conflicts("+plugins", when="~activeharmony")
|
|
|
|
# https://github.com/UO-OACISS/apex/pull/177#issuecomment-1726322959
|
|
conflicts("+openmp", when="%gcc")
|
|
|
|
# Patches
|
|
|
|
# This patch ensures that the missing dependency_tree.hpp header is
|
|
# installed
|
|
patch("install-includes.patch", when="@2.3.2:2.4.1")
|
|
|
|
def cmake_args(self):
|
|
args = []
|
|
spec = self.spec
|
|
# CMake variables were updated in version 2.3.0, to make
|
|
prefix = "APEX_WITH"
|
|
test_prefix = "APEX_"
|
|
if "@2.2.0" in spec:
|
|
prefix = "USE"
|
|
test_prefix = ""
|
|
|
|
args.append(self.define_from_variant(prefix + "_ACTIVEHARMONY", "activeharmony"))
|
|
args.append(self.define_from_variant(prefix + "_BFD", "binutils"))
|
|
args.append(self.define_from_variant("APEX_WITH_CUDA", "cuda"))
|
|
args.append(self.define_from_variant("APEX_WITH_HIP", "hip"))
|
|
args.append(self.define_from_variant("APEX_WITH_LEVEL0", "sycl"))
|
|
args.append(self.define_from_variant(prefix + "_MPI", "mpi"))
|
|
args.append(self.define_from_variant(prefix + "_OMPT", "openmp"))
|
|
args.append(self.define_from_variant(prefix + "_OTF2", "otf2"))
|
|
args.append(self.define_from_variant(prefix + "_PAPI", "papi"))
|
|
args.append(self.define_from_variant(prefix + "_PLUGINS", "plugins"))
|
|
args.append(self.define_from_variant(prefix + "_LM_SENSORS", "lmsensors"))
|
|
args.append(self.define_from_variant(prefix + "_TCMALLOC", "gperftools"))
|
|
args.append(self.define_from_variant(prefix + "_JEMALLOC", "jemalloc"))
|
|
args.append(self.define_from_variant(test_prefix + "BUILD_TESTS", "tests"))
|
|
args.append(self.define_from_variant(test_prefix + "BUILD_EXAMPLES", "examples"))
|
|
|
|
if "+activeharmony" in spec:
|
|
args.append("-DACTIVEHARMONY_ROOT={0}".format(spec["activeharmony"].prefix))
|
|
|
|
if "+binutils" in spec:
|
|
args.append("-DBFD_ROOT={0}".format(spec["binutils"].prefix))
|
|
|
|
if "+binutils ^binutils+nls" in spec:
|
|
if "intl" in self.spec["gettext"].libs.names:
|
|
args.append("-DCMAKE_SHARED_LINKER_FLAGS=-lintl")
|
|
|
|
if "+otf2" in spec:
|
|
args.append("-DOTF2_ROOT={0}".format(spec["otf2"].prefix))
|
|
|
|
if "+papi" in spec:
|
|
args.append("-DPAPI_ROOT={0}".format(spec["papi"].prefix))
|
|
|
|
if "+gperftools" in spec:
|
|
args.append("-DGPERFTOOLS_ROOT={0}".format(spec["gperftools"].prefix))
|
|
|
|
if "+jemalloc" in spec:
|
|
args.append("-DJEMALLOC_ROOT={0}".format(spec["jemalloc"].prefix))
|
|
|
|
if "+boost" in spec:
|
|
args.append("-DBOOST_ROOT={0}".format(spec["boost"].prefix))
|
|
|
|
if "+hip" in spec:
|
|
args.append("-DROCM_ROOT={0}".format(spec["hip"].prefix))
|
|
args.append("-DROCTRACER_ROOT={0}".format(spec["roctracer-dev"].prefix))
|
|
args.append("-DROCTX_ROOT={0}".format(spec["roctracer-dev"].prefix))
|
|
args.append("-DRSMI_ROOT={0}".format(spec["rocm-smi-lib"].prefix))
|
|
|
|
return args
|