Mercury package: add version 1.0.1 and update dependencies (#10906)
* Add Mercury version 1.0.1 * Remove cci and bmi dependency requirements: these are not currently defined in Spack. If +bmi is enabled, the effect is that it may use a system install of bmi * Add a note that fabtests is deprecated and has been folded into the libfabric package. Add the fabtests resource to the libfabric package * Add CMake option settings to Mercury based on variant settings * Mercury: Set OFI testing protocol depending on how libfabric was built * Mercury: add version constraints to dependencies
This commit is contained in:
parent
95fafb4e44
commit
f8dc385392
3 changed files with 136 additions and 32 deletions
|
@ -7,7 +7,9 @@
|
||||||
|
|
||||||
|
|
||||||
class Fabtests(AutotoolsPackage):
|
class Fabtests(AutotoolsPackage):
|
||||||
"""Fabtests provides a set of examples that uses libfabric"""
|
"""Fabtests provides a set of examples that uses libfabric.
|
||||||
|
|
||||||
|
DEPRECATED. Fabtests has merged with the libfabric git repo."""
|
||||||
|
|
||||||
homepage = "http://libfabric.org"
|
homepage = "http://libfabric.org"
|
||||||
url = "https://github.com/ofiwg/fabtests/releases/download/v1.5.3/fabtests-1.5.3.tar.gz"
|
url = "https://github.com/ofiwg/fabtests/releases/download/v1.5.3/fabtests-1.5.3.tar.gz"
|
||||||
|
@ -15,4 +17,5 @@ class Fabtests(AutotoolsPackage):
|
||||||
version('1.6.0', '0441aa0aeda391b1bf1eb71250a4afbc')
|
version('1.6.0', '0441aa0aeda391b1bf1eb71250a4afbc')
|
||||||
version('1.5.3', 'f60cb95843ebf62e4eaa128e08ccdc7d')
|
version('1.5.3', 'f60cb95843ebf62e4eaa128e08ccdc7d')
|
||||||
|
|
||||||
depends_on('libfabric')
|
depends_on('libfabric@1.6.0', when='@1.6.0')
|
||||||
|
depends_on('libfabric@1.5.3', when='@1.5.3')
|
||||||
|
|
|
@ -12,7 +12,7 @@ class Libfabric(AutotoolsPackage):
|
||||||
|
|
||||||
homepage = "https://libfabric.org/"
|
homepage = "https://libfabric.org/"
|
||||||
url = "https://github.com/ofiwg/libfabric/releases/download/v1.6.1/libfabric-1.6.1.tar.gz"
|
url = "https://github.com/ofiwg/libfabric/releases/download/v1.6.1/libfabric-1.6.1.tar.gz"
|
||||||
git = "https://github.com/ofiwg/libfabric.git"
|
git = "https://github.com/ofiwg/libfabric.git"
|
||||||
|
|
||||||
version('develop', branch='master')
|
version('develop', branch='master')
|
||||||
version('1.7.1', sha256='312e62c57f79b7274f89c41823932c00b15f1cc8de9c1f8dce17cd7fdae66fa1')
|
version('1.7.1', sha256='312e62c57f79b7274f89c41823932c00b15f1cc8de9c1f8dce17cd7fdae66fa1')
|
||||||
|
@ -54,16 +54,64 @@ class Libfabric(AutotoolsPackage):
|
||||||
depends_on('automake', when='@develop', type='build')
|
depends_on('automake', when='@develop', type='build')
|
||||||
depends_on('libtool', when='@develop', type='build')
|
depends_on('libtool', when='@develop', type='build')
|
||||||
|
|
||||||
|
resource(name='fabtests',
|
||||||
|
url='https://github.com/ofiwg/libfabric/releases/download/v1.7.0/fabtests-1.7.0.tar.gz',
|
||||||
|
sha256='ebb4129dc69dc0e1f48310ce1abb96673d8ddb18166bc595312ebcb96e803de9',
|
||||||
|
placement='fabtests', when='@1.7.0')
|
||||||
|
resource(name='fabtests',
|
||||||
|
url='https://github.com/ofiwg/fabtests/releases/download/v1.6.1/fabtests-1.6.1.tar.gz',
|
||||||
|
sha256='d357466b868fdaf1560d89ffac4c4e93a679486f1b4221315644d8d3e21174bf',
|
||||||
|
placement='fabtests', when='@1.6.1')
|
||||||
|
resource(name='fabtests',
|
||||||
|
url='https://github.com/ofiwg/fabtests/releases/download/v1.6.0/fabtests-1.6.0.tar.gz',
|
||||||
|
sha256='dc3eeccccb005205017f5af60681ede15782ce202a0103450a6d56a7ff515a67',
|
||||||
|
placement='fabtests', when='@1.6.0')
|
||||||
|
resource(name='fabtests',
|
||||||
|
url='https://github.com/ofiwg/fabtests/releases/download/v1.5.3/fabtests-1.5.3.tar.gz',
|
||||||
|
sha256='3835b3bf86cd00d23df0ddba8bf317e4a195e8d5c3c2baa918b373d548f77f29',
|
||||||
|
placement='fabtests', when='@1.5.3')
|
||||||
|
resource(name='fabtests',
|
||||||
|
url='https://github.com/ofiwg/fabtests/releases/download/v1.5.0/fabtests-1.5.0.tar.gz',
|
||||||
|
sha256='1dddd446c3f1df346899f9a8636f1b4265de5b863103ae24876e9f0c1e40a69d',
|
||||||
|
placement='fabtests', when='@1.5.0')
|
||||||
|
resource(name='fabtests',
|
||||||
|
url='https://github.com/ofiwg/fabtests/releases/download/v1.4.2/fabtests-1.4.2.tar.gz',
|
||||||
|
sha256='3b78d0ca1b223ff21b7f5b3627e67e358e3c18b700f86b017e2233fee7e88c2e',
|
||||||
|
placement='fabtests', when='@1.5.0')
|
||||||
|
|
||||||
|
def setup_environment(self, spack_env, run_env):
|
||||||
|
if self.run_tests:
|
||||||
|
spack_env.prepend_path('PATH', self.prefix.bin)
|
||||||
|
|
||||||
@when('@develop')
|
@when('@develop')
|
||||||
def autoreconf(self, spec, prefix):
|
def autoreconf(self, spec, prefix):
|
||||||
bash = which('bash')
|
bash = which('bash')
|
||||||
bash('./autogen.sh')
|
bash('./autogen.sh')
|
||||||
|
|
||||||
|
if self.run_tests:
|
||||||
|
with working_dir('fabtests'):
|
||||||
|
bash('./autogen.sh')
|
||||||
|
|
||||||
def configure_args(self):
|
def configure_args(self):
|
||||||
args = []
|
args = []
|
||||||
|
|
||||||
args.extend(['--enable-%s=%s' %
|
for fabric in self.fabrics:
|
||||||
(f, 'yes' if 'fabrics=%s' % f in self.spec else 'no')
|
if 'fabrics=' + fabric in self.spec:
|
||||||
for f in self.fabrics])
|
args.append('--enable-{0}=yes'.format(fabric))
|
||||||
|
else:
|
||||||
|
args.append('--enable-{0}=no'.format(fabric))
|
||||||
|
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
def installcheck(self):
|
||||||
|
fi_info = Executable(self.prefix.bin.fi_info)
|
||||||
|
fi_info()
|
||||||
|
|
||||||
|
# Build and run more extensive tests
|
||||||
|
with working_dir('fabtests'):
|
||||||
|
configure = Executable('./configure')
|
||||||
|
configure('--prefix={0}'.format(self.prefix),
|
||||||
|
'--with-libfabric={0}'.format(self.prefix))
|
||||||
|
make()
|
||||||
|
make('install')
|
||||||
|
make('test')
|
||||||
|
|
|
@ -13,53 +13,106 @@ class Mercury(CMakePackage):
|
||||||
git = 'https://github.com/mercury-hpc/mercury.git'
|
git = 'https://github.com/mercury-hpc/mercury.git'
|
||||||
|
|
||||||
version('develop', branch='master', submodules=True)
|
version('develop', branch='master', submodules=True)
|
||||||
|
version('1.0.1', tag='v1.0.1', submodules=True)
|
||||||
version('1.0.0', tag='v1.0.0', submodules=True)
|
version('1.0.0', tag='v1.0.0', submodules=True)
|
||||||
version('0.9.0', tag='v0.9.0', submodules=True)
|
version('0.9.0', tag='v0.9.0', submodules=True)
|
||||||
|
|
||||||
variant('cci', default=False, description='Use CCI for network transport')
|
|
||||||
variant('bmi', default=False, description='Use BMI for network transport')
|
variant('bmi', default=False, description='Use BMI for network transport')
|
||||||
variant('fabric', default=True, description='Use libfabric for network transport')
|
variant('cci', default=False, description='Use CCI for network transport')
|
||||||
|
variant('mpi', default=False, description='Use MPI for network transport')
|
||||||
|
variant('ofi', default=True, description='Use libfabric plugin')
|
||||||
|
variant('sm', default=False, description='Use shared-memory plugin')
|
||||||
|
variant('opa', default=False, description='Use OpenPA for atomics')
|
||||||
|
variant('boost', default=True, description='Use BOOST preprocessor macros')
|
||||||
variant('selfforward', default=True,
|
variant('selfforward', default=True,
|
||||||
description='Mercury will short-circuit operations' +
|
description='Mercury will short-circuit operations' +
|
||||||
' by forwarding to itself when possible')
|
' by forwarding to itself when possible')
|
||||||
# NOTE: the 'udreg' variant requires that the MPICH_GNI_NDREG_ENTRIES=1024
|
# NOTE: the 'udreg' variant requires that the MPICH_GNI_NDREG_ENTRIES=1024
|
||||||
# environment variable be set at run time to avoid conflicts with
|
# environment variable be set at run time to avoid conflicts with
|
||||||
# Cray-MPICH if libfabric and MPI are used at the same time
|
# Cray-MPICH if libfabric and MPI are used at the same time
|
||||||
variant('udreg', default=False,
|
variant('udreg', default=False,
|
||||||
description='Enable udreg on supported Cray platforms')
|
description='Enable udreg on supported Cray platforms')
|
||||||
|
|
||||||
depends_on('cci@master', when='+cci', type=('build', 'link', 'run'))
|
depends_on('cmake@2.8.12.2:', type='build')
|
||||||
depends_on('libfabric', when='+fabric', type=('build', 'link', 'run'))
|
# depends_on('bmi', when='+bmi') # TODO: add BMI package
|
||||||
depends_on('bmi', when='+bmi', type=('build', 'link', 'run'))
|
# depends_on('cci', when='+cci') # TODO: add CCI package
|
||||||
depends_on('openpa', type=('build', 'link', 'run'))
|
depends_on('mpi', when='+mpi')
|
||||||
|
depends_on('libfabric@1.5:', when='+ofi')
|
||||||
|
depends_on('openpa@1.0.3:', when='+opa')
|
||||||
|
depends_on('boost@1.48:', when='+boost')
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
args = ['-DMERCURY_USE_BOOST_PP:BOOL=ON',
|
spec = self.spec
|
||||||
'-DBUILD_SHARED_LIBS=ON']
|
args = [
|
||||||
|
'-DBUILD_SHARED_LIBS=ON',
|
||||||
|
'-DMERCURY_USE_CHECKSUMS=ON',
|
||||||
|
'-DMERCURY_USE_EAGER_BULK=ON',
|
||||||
|
'-DMERCURY_USE_SYSTEM_MCHECKSUM=OFF',
|
||||||
|
'-DMERCURY_USE_XDR=OFF'
|
||||||
|
]
|
||||||
|
|
||||||
if (self.spec.variants['cci'].value):
|
if '+boost' in spec:
|
||||||
args.extend(['-DNA_USE_CCI:BOOL=ON'])
|
args.append('-DMERCURY_USE_BOOST_PP=ON')
|
||||||
else:
|
else:
|
||||||
args.extend(['-DNA_USE_CCI:BOOL=OFF'])
|
args.append('-DMERCURY_USE_BOOST_PP=OFF')
|
||||||
|
|
||||||
if (self.spec.variants['bmi'].value):
|
if '+bmi' in spec:
|
||||||
args.extend(['-DNA_USE_BMI:BOOL=ON'])
|
args.append('-DNA_USE_BMI=ON')
|
||||||
else:
|
else:
|
||||||
args.extend(['-DNA_USE_BMI:BOOL=OFF'])
|
args.append('-DNA_USE_BMI=OFF')
|
||||||
|
|
||||||
if (self.spec.variants['fabric'].value):
|
if '+cci' in spec:
|
||||||
args.extend(['-DNA_USE_OFI:BOOL=ON'])
|
args.append('-DNA_USE_CCI=ON')
|
||||||
else:
|
else:
|
||||||
args.extend(['-DNA_USE_OFI:BOOL=OFF'])
|
args.append('-DNA_USE_CCI=OFF')
|
||||||
|
|
||||||
if (self.spec.variants['selfforward'].value):
|
if '+mpi' in spec:
|
||||||
args.extend(['-DMERCURY_USE_SELF_FORWARD=ON'])
|
args.append('-DNA_USE_MPI=ON')
|
||||||
else:
|
else:
|
||||||
args.extend(['-DMERCURY_USE_SELF_FORWARD=OFF'])
|
args.append('-DNA_USE_MPI=OFF')
|
||||||
|
|
||||||
if (self.spec.variants['udreg'].value):
|
if '+ofi' in spec:
|
||||||
args.extend(['-DNA_OFI_GNI_USE_UDREG=ON'])
|
args.append('-DNA_USE_OFI=ON')
|
||||||
|
if self.run_tests:
|
||||||
|
args.append('-DNA_OFI_TESTING_PROTOCOL={0}'.format(';'.join(
|
||||||
|
spec['libfabric'].variants['fabrics'].value)))
|
||||||
else:
|
else:
|
||||||
args.extend(['-DNA_OFI_GNI_USE_UDREG=OFF'])
|
args.append('-DNA_USE_OFI=OFF')
|
||||||
|
|
||||||
|
if '+sm' in spec:
|
||||||
|
args.append('-DNA_USE_SM=ON')
|
||||||
|
else:
|
||||||
|
args.append('-DNA_USE_SM=OFF')
|
||||||
|
|
||||||
|
if '+opa' in spec:
|
||||||
|
args.append('-DMERCURY_USE_OPA=ON')
|
||||||
|
else:
|
||||||
|
args.append('-DMERCURY_USE_OPA=OFF')
|
||||||
|
|
||||||
|
if '+selfforward' in spec:
|
||||||
|
args.append('-DMERCURY_USE_SELF_FORWARD=ON')
|
||||||
|
else:
|
||||||
|
args.append('-DMERCURY_USE_SELF_FORWARD=OFF')
|
||||||
|
|
||||||
|
if '+udreg' in spec:
|
||||||
|
args.append('-DNA_OFI_GNI_USE_UDREG=ON')
|
||||||
|
else:
|
||||||
|
args.append('-DNA_OFI_GNI_USE_UDREG=OFF')
|
||||||
|
|
||||||
|
if self.run_tests:
|
||||||
|
args.append('-DBUILD_TESTING=ON')
|
||||||
|
else:
|
||||||
|
args.append('-DBUILD_TESTING=OFF')
|
||||||
|
|
||||||
|
if '+mpi' in spec and self.run_tests:
|
||||||
|
args.append('-DMERCURY_ENABLE_PARALLEL_TESTING=ON')
|
||||||
|
else:
|
||||||
|
args.append('-DMERCURY_ENABLE_PARALLEL_TESTING=OFF')
|
||||||
|
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
def check(self):
|
||||||
|
"""Unit tests fail when run in parallel."""
|
||||||
|
|
||||||
|
with working_dir(self.build_directory):
|
||||||
|
make('test', parallel=False)
|
||||||
|
|
Loading…
Reference in a new issue