diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/omnitrace/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/omnitrace/package.py | 179 |
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")) |