Skip to content
Snippets Groups Projects
Commit 7e8b17b1 authored by Mark W. Krentel's avatar Mark W. Krentel Committed by Peter Scheibel
Browse files

hpctoolkit: variants to build for cray and blue gene (#10223)

Add variants 'cray' and 'bgq' to build for Cray and Blue Gene compute
nodes.  These systems need separate options to find the MPI compiler
for hpcprof-mpi.
parent 60a44d51
No related branches found
No related tags found
No related merge requests found
......@@ -18,17 +18,22 @@ class Hpctoolkit(AutotoolsPackage):
git = "https://github.com/HPCToolkit/hpctoolkit.git"
version('develop', branch='master')
version('2018.12.28', commit='8dbf0d543171ffa9885344f32f23cc6f7f6e39bc')
version('2018.11.05', commit='d0c43e39020e67095b1f1d8bb89b75f22b12aee9')
# We can't build with both PAPI and perfmon for risk of segfault
# from mismatched header files (unless PAPI installs the perfmon
# headers).
variant('papi', default=False,
description='Use PAPI instead of perfmon for access to '
'the hardware performance counters.')
# Options for MPI and hpcprof-mpi. We always support profiling
# MPI applications. These options add hpcprof-mpi, the MPI
# version of hpcprof. Cray and Blue Gene need separate options
# because an MPI module in packages.yaml doesn't work on these
# systems.
variant('cray', default=False,
description='Build for Cray compute nodes, including '
'hpcprof-mpi.')
variant('bgq', default=False,
description='Build for Blue Gene compute nodes, including '
'hpcprof-mpi.')
# We always support profiling MPI applications. +mpi builds
# hpcprof-mpi, the MPI version of hpcprof.
variant('mpi', default=False,
description='Build hpcprof-mpi, the MPI version of hpcprof.')
......@@ -36,6 +41,13 @@ class Hpctoolkit(AutotoolsPackage):
description='Needed when MPICXX builds static binaries '
'for the compute nodes.')
# We can't build with both PAPI and perfmon for risk of segfault
# from mismatched header files (unless PAPI installs the perfmon
# headers).
variant('papi', default=False,
description='Use PAPI instead of perfmon for access to '
'the hardware performance counters.')
boost_libs = '+atomic +graph +regex +serialization' \
'+shared +multithreaded'
......@@ -46,7 +58,8 @@ class Hpctoolkit(AutotoolsPackage):
depends_on('elfutils~nls')
depends_on('intel-tbb')
depends_on('libdwarf')
depends_on('libmonitor+hpctoolkit')
depends_on('libmonitor+hpctoolkit', when='~bgq')
depends_on('libmonitor+hpctoolkit+bgq', when='+bgq')
depends_on('libunwind@2018.10.0:')
depends_on('xerces-c transcoder=iconv')
depends_on('xz')
......@@ -86,7 +99,19 @@ def configure_args(self):
else:
args.append('--with-perfmon=%s' % spec['libpfm4'].prefix)
if '+mpi' in spec:
# MPI options for hpcprof-mpi.
if '+cray' in spec:
args.extend([
'--enable-mpi-search=cray',
'--enable-all-static',
])
elif '+bgq' in spec:
args.extend([
'--enable-mpi-search=bgq',
'--enable-all-static',
'--enable-bgq',
])
elif '+mpi' in spec:
args.append('MPICXX=%s' % spec['mpi'].mpicxx)
if '+all-static' in spec:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment