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.
This commit is contained in:
Mark W. Krentel 2019-01-10 14:50:58 -06:00 committed by Peter Scheibel
parent 60a44d5155
commit 7e8b17b177

View file

@ -18,8 +18,29 @@ class Hpctoolkit(AutotoolsPackage):
git = "https://github.com/HPCToolkit/hpctoolkit.git" git = "https://github.com/HPCToolkit/hpctoolkit.git"
version('develop', branch='master') version('develop', branch='master')
version('2018.12.28', commit='8dbf0d543171ffa9885344f32f23cc6f7f6e39bc')
version('2018.11.05', commit='d0c43e39020e67095b1f1d8bb89b75f22b12aee9') version('2018.11.05', commit='d0c43e39020e67095b1f1d8bb89b75f22b12aee9')
# 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.')
variant('mpi', default=False,
description='Build hpcprof-mpi, the MPI version of hpcprof.')
variant('all-static', default=False,
description='Needed when MPICXX builds static binaries '
'for the compute nodes.')
# We can't build with both PAPI and perfmon for risk of segfault # We can't build with both PAPI and perfmon for risk of segfault
# from mismatched header files (unless PAPI installs the perfmon # from mismatched header files (unless PAPI installs the perfmon
# headers). # headers).
@ -27,15 +48,6 @@ class Hpctoolkit(AutotoolsPackage):
description='Use PAPI instead of perfmon for access to ' description='Use PAPI instead of perfmon for access to '
'the hardware performance counters.') 'the hardware performance counters.')
# 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.')
variant('all-static', default=False,
description='Needed when MPICXX builds static binaries '
'for the compute nodes.')
boost_libs = '+atomic +graph +regex +serialization' \ boost_libs = '+atomic +graph +regex +serialization' \
'+shared +multithreaded' '+shared +multithreaded'
@ -46,7 +58,8 @@ class Hpctoolkit(AutotoolsPackage):
depends_on('elfutils~nls') depends_on('elfutils~nls')
depends_on('intel-tbb') depends_on('intel-tbb')
depends_on('libdwarf') 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('libunwind@2018.10.0:')
depends_on('xerces-c transcoder=iconv') depends_on('xerces-c transcoder=iconv')
depends_on('xz') depends_on('xz')
@ -86,7 +99,19 @@ def configure_args(self):
else: else:
args.append('--with-perfmon=%s' % spec['libpfm4'].prefix) 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) args.append('MPICXX=%s' % spec['mpi'].mpicxx)
if '+all-static' in spec: if '+all-static' in spec: