summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/omnitrace/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/omnitrace/package.py')
-rw-r--r--var/spack/repos/builtin/packages/omnitrace/package.py179
1 files changed, 97 insertions, 82 deletions
diff --git a/var/spack/repos/builtin/packages/omnitrace/package.py b/var/spack/repos/builtin/packages/omnitrace/package.py
index 6c2ba25639..e7e537aa58 100644
--- a/var/spack/repos/builtin/packages/omnitrace/package.py
+++ b/var/spack/repos/builtin/packages/omnitrace/package.py
@@ -9,123 +9,138 @@ from spack.package import *
class Omnitrace(CMakePackage):
- '''Application Profiling, Tracing, and Analysis'''
-
- homepage = 'https://amdresearch.github.io/omnitrace'
- git = 'https://github.com/AMDResearch/omnitrace.git'
- maintainers = ['jrmadsen']
-
- version('main', branch='main', submodules=True)
- version('1.3.0', commit='4dd144a32c8b83c44e132ef53f2b44fe4b4d5569', submodules=True)
- version('1.2.0', commit='f82845388aab108ed1d1fc404f433a0def391bb3', submodules=True)
-
- variant('rocm', default=True, description='Enable ROCm API, kernel tracing, and GPU HW counters support')
- variant('strip', default=False, description='Faster binary instrumentation, worse debugging')
- variant('python', default=False, description='Enable support for Python function profiling and API')
- variant('papi', default=True, description='Enable HW counters support via PAPI')
- variant('ompt', default=True, description='Enable OpenMP Tools support')
- variant('tau', default=False, description='Enable support for using TAU markers in omnitrace instrumentation')
- variant('caliper', default=False, description='Enable support for using Caliper markers in omnitrace instrumentation')
- variant('perfetto_tools', default=False, description='Install perfetto tools (e.g. traced, perfetto)')
+ """Application Profiling, Tracing, and Analysis"""
+
+ homepage = "https://amdresearch.github.io/omnitrace"
+ git = "https://github.com/AMDResearch/omnitrace.git"
+ maintainers = ["jrmadsen"]
+
+ version("main", branch="main", submodules=True)
+ version("1.3.0", commit="4dd144a32c8b83c44e132ef53f2b44fe4b4d5569", submodules=True)
+ version("1.2.0", commit="f82845388aab108ed1d1fc404f433a0def391bb3", submodules=True)
+
+ variant(
+ "rocm",
+ default=True,
+ description="Enable ROCm API, kernel tracing, and GPU HW counters support",
+ )
+ variant("strip", default=False, description="Faster binary instrumentation, worse debugging")
+ variant(
+ "python", default=False, description="Enable support for Python function profiling and API"
+ )
+ variant("papi", default=True, description="Enable HW counters support via PAPI")
+ variant("ompt", default=True, description="Enable OpenMP Tools support")
+ variant(
+ "tau",
+ default=False,
+ description="Enable support for using TAU markers in omnitrace instrumentation",
+ )
+ variant(
+ "caliper",
+ default=False,
+ description="Enable support for using Caliper markers in omnitrace instrumentation",
+ )
+ variant(
+ "perfetto_tools",
+ default=False,
+ description="Install perfetto tools (e.g. traced, perfetto)",
+ )
variant(
- 'mpi',
+ "mpi",
default=False,
description=(
- 'Enable intercepting MPI functions and aggregating output during finalization '
- '(requires target application to use same MPI installation)'
- )
+ "Enable intercepting MPI functions and aggregating output during finalization "
+ "(requires target application to use same MPI installation)"
+ ),
)
variant(
- 'mpi_headers',
+ "mpi_headers",
default=True,
description=(
- 'Enable intercepting MPI functions but w/o support for aggregating output '
- '(target application can use any MPI installation)'
- )
+ "Enable intercepting MPI functions but w/o support for aggregating output "
+ "(target application can use any MPI installation)"
+ ),
)
- extends('python', when='+python')
+ extends("python", when="+python")
# hard dependencies
- depends_on('cmake@3.16:', type='build')
- depends_on('dyninst@11.0.1:', type=('build', 'run'))
- depends_on('libunwind', type=('build', 'run'))
+ depends_on("cmake@3.16:", type="build")
+ depends_on("dyninst@11.0.1:", type=("build", "run"))
+ depends_on("libunwind", type=("build", "run"))
# soft dependencies
- depends_on('hip', when='+rocm')
- depends_on('rocm-smi-lib', when='+rocm')
- depends_on('roctracer-dev', when='+rocm')
- depends_on('rocprofiler-dev', when='@1.3.0: +rocm')
- depends_on('papi+shared', when='+papi')
- depends_on('mpi', when='+mpi')
- depends_on('tau', when='+tau')
- depends_on('caliper', when='+caliper')
- depends_on('python@3:', when='+python', type=('build', 'run'))
+ depends_on("hip", when="+rocm")
+ depends_on("rocm-smi-lib", when="+rocm")
+ depends_on("roctracer-dev", when="+rocm")
+ depends_on("rocprofiler-dev", when="@1.3.0: +rocm")
+ depends_on("papi+shared", when="+papi")
+ depends_on("mpi", when="+mpi")
+ depends_on("tau", when="+tau")
+ depends_on("caliper", when="+caliper")
+ depends_on("python@3:", when="+python", type=("build", "run"))
def __init__(self, *args, **kwargs):
super(Omnitrace, self).__init__(*args, **kwargs)
# default to a release build
- self.variants['build_type'][0].default = 'Release'
+ self.variants["build_type"][0].default = "Release"
def cmake_args(self):
spec = self.spec
args = [
- self.define('SPACK_BUILD', True),
- self.define('OMNITRACE_BUILD_PAPI', False),
- self.define('OMNITRACE_BUILD_PYTHON', True),
- self.define('OMNITRACE_BUILD_DYNINST', False),
- self.define('OMNITRACE_BUILD_LIBUNWIND', False),
- self.define('OMNITRACE_BUILD_STATIC_LIBGCC', False),
- self.define('OMNITRACE_BUILD_STATIC_LIBSTDCXX', False),
- self.define_from_variant('OMNITRACE_BUILD_LTO', 'ipo'),
- self.define_from_variant('OMNITRACE_USE_HIP', 'rocm'),
- self.define_from_variant('OMNITRACE_USE_MPI', 'mpi'),
- self.define_from_variant('OMNITRACE_USE_OMPT', 'ompt'),
- self.define_from_variant('OMNITRACE_USE_PAPI', 'papi'),
- self.define_from_variant('OMNITRACE_USE_RCCL', 'rocm'),
- self.define_from_variant('OMNITRACE_USE_ROCM_SMI', 'rocm'),
- self.define_from_variant('OMNITRACE_USE_ROCTRACER', 'rocm'),
- self.define_from_variant('OMNITRACE_USE_ROCPROFILER', 'rocm'),
- self.define_from_variant('OMNITRACE_USE_PYTHON', 'python'),
- self.define_from_variant('OMNITRACE_USE_MPI_HEADERS', 'mpi_headers'),
- self.define_from_variant('OMNITRACE_STRIP_LIBRARIES', 'strip'),
- self.define_from_variant('OMNITRACE_INSTALL_PERFETTO_TOOLS',
- 'perfetto_tools'),
+ self.define("SPACK_BUILD", True),
+ self.define("OMNITRACE_BUILD_PAPI", False),
+ self.define("OMNITRACE_BUILD_PYTHON", True),
+ self.define("OMNITRACE_BUILD_DYNINST", False),
+ self.define("OMNITRACE_BUILD_LIBUNWIND", False),
+ self.define("OMNITRACE_BUILD_STATIC_LIBGCC", False),
+ self.define("OMNITRACE_BUILD_STATIC_LIBSTDCXX", False),
+ self.define_from_variant("OMNITRACE_BUILD_LTO", "ipo"),
+ self.define_from_variant("OMNITRACE_USE_HIP", "rocm"),
+ self.define_from_variant("OMNITRACE_USE_MPI", "mpi"),
+ self.define_from_variant("OMNITRACE_USE_OMPT", "ompt"),
+ self.define_from_variant("OMNITRACE_USE_PAPI", "papi"),
+ self.define_from_variant("OMNITRACE_USE_RCCL", "rocm"),
+ self.define_from_variant("OMNITRACE_USE_ROCM_SMI", "rocm"),
+ self.define_from_variant("OMNITRACE_USE_ROCTRACER", "rocm"),
+ self.define_from_variant("OMNITRACE_USE_ROCPROFILER", "rocm"),
+ self.define_from_variant("OMNITRACE_USE_PYTHON", "python"),
+ self.define_from_variant("OMNITRACE_USE_MPI_HEADERS", "mpi_headers"),
+ self.define_from_variant("OMNITRACE_STRIP_LIBRARIES", "strip"),
+ self.define_from_variant("OMNITRACE_INSTALL_PERFETTO_TOOLS", "perfetto_tools"),
# timemory arguments
- self.define('TIMEMORY_UNITY_BUILD', False),
- self.define('TIMEMORY_BUILD_CALIPER', False),
- self.define_from_variant('TIMEMORY_USE_TAU', 'tau'),
- self.define_from_variant('TIMEMORY_USE_CALIPER', 'caliper'),
+ self.define("TIMEMORY_UNITY_BUILD", False),
+ self.define("TIMEMORY_BUILD_CALIPER", False),
+ self.define_from_variant("TIMEMORY_USE_TAU", "tau"),
+ self.define_from_variant("TIMEMORY_USE_CALIPER", "caliper"),
]
- if '+tau' in spec:
- tau_root = spec['tau'].prefix
- args.append(self.define('TAU_ROOT_DIR', tau_root))
+ if "+tau" in spec:
+ tau_root = spec["tau"].prefix
+ args.append(self.define("TAU_ROOT_DIR", tau_root))
- if '+python' in spec:
- pyexe = spec['python'].command.path
- args.append(self.define('PYTHON_EXECUTABLE', pyexe))
- args.append(self.define('Python3_EXECUTABLE', pyexe))
+ if "+python" in spec:
+ pyexe = spec["python"].command.path
+ args.append(self.define("PYTHON_EXECUTABLE", pyexe))
+ args.append(self.define("Python3_EXECUTABLE", pyexe))
- if '+mpi' in spec:
- args.append(self.define('MPI_C_COMPILER', spec['mpi'].mpicc))
- args.append(self.define('MPI_CXX_COMPILER', spec['mpi'].mpicxx))
+ if "+mpi" in spec:
+ args.append(self.define("MPI_C_COMPILER", spec["mpi"].mpicc))
+ args.append(self.define("MPI_CXX_COMPILER", spec["mpi"].mpicxx))
return args
def setup_build_environment(self, env):
- if '+tau' in self.spec:
+ if "+tau" in self.spec:
import glob
# below is how TAU_MAKEFILE is set in packages/tau/package.py
- pattern = join_path(self.spec['tau'].prefix.lib, 'Makefile.*')
+ pattern = join_path(self.spec["tau"].prefix.lib, "Makefile.*")
files = glob.glob(pattern)
if files:
- env.set('TAU_MAKEFILE', files[0])
+ env.set("TAU_MAKEFILE", files[0])
def setup_run_environment(self, env):
- if '+python' in self.spec:
- env.prepend_path(
- 'PYTHONPATH', join_path(self.prefix.lib, 'python', 'site-packages')
- )
+ if "+python" in self.spec:
+ env.prepend_path("PYTHONPATH", join_path(self.prefix.lib, "python", "site-packages"))