openmpi : added a few variants

This commit is contained in:
Massimiliano Culpo 2016-04-09 11:21:29 +02:00
parent e73caad0d7
commit 6cffac79bd

View file

@ -28,10 +28,20 @@ class Openmpi(Package):
patch('configure.patch', when="@1.10.0:1.10.1") patch('configure.patch', when="@1.10.0:1.10.1")
variant('psm', default=False, description='Build support for the PSM library.') variant('psm', default=False, description='Build support for the PSM library.')
variant('psm2', default=False, description='Build support for the Intel PSM2 library.')
variant('verbs', default=False, description='Build support for OpenFabrics verbs.') variant('verbs', default=False, description='Build support for OpenFabrics verbs.')
variant('mxm', default=False, description='Build Mellanox Messaging support')
# TODO : variant support for other schedulers is missing variant('thread_multiple', default=False, description='Enable MPI_THREAD_MULTIPLE support')
# TODO : variant support for alps, loadleveler is missing
variant('tm', default=False, description='Build TM (Torque, PBSPro, and compatible) support') variant('tm', default=False, description='Build TM (Torque, PBSPro, and compatible) support')
variant('slurm', default=False, description='Build SLURM scheduler component')
variant('pmi', default=False, description='Build PMI support, optionally adding DIR to the search path')
variant('sqlite3', default=False, description='Build sqlite3 support')
# TODO : support for CUDA is missing
provides('mpi@:2.2', when='@1.6.5') provides('mpi@:2.2', when='@1.6.5')
provides('mpi@:3.0', when='@1.7.5:') provides('mpi@:3.0', when='@1.7.5:')
@ -48,27 +58,35 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
spack_env.set('OMPI_FC', spack_fc) spack_env.set('OMPI_FC', spack_fc)
spack_env.set('OMPI_F77', spack_f77) spack_env.set('OMPI_F77', spack_f77)
@property
def verbs(self):
# Up through version 1.6, this option was previously named --with-openib
if self.spec.satisfies('@:1.6'):
return 'openib'
# In version 1.7, it was renamed to be --with-verbs
elif self.spec.satisfies('@1.7:'):
return 'verbs'
def install(self, spec, prefix): def install(self, spec, prefix):
config_args = ["--prefix=%s" % prefix, config_args = ["--prefix=%s" % prefix,
"--with-hwloc=%s" % spec['hwloc'].prefix, "--with-hwloc=%s" % spec['hwloc'].prefix,
"--enable-shared", "--enable-shared",
"--enable-static"] "--enable-static"]
# Variant based arguments
# Variants config_args.extend([
if '+tm' in spec: # Schedulers
config_args.append("--with-tm") # necessary for Torque support '--with-tm' if '+tm' in spec else '--without-tm',
'--with-slurm' if '+slurm' in spec else '--without-slurm',
if '+psm' in spec: # Fabrics
config_args.append("--with-psm") '--with-psm' if '+psm' in spec else '--without-psm',
'--with-psm2' if '+psm2' in spec else '--without-psm2',
if '+verbs' in spec: ('--with-%s' % self.verbs) if '+verbs' in spec else ('--without-%s' % self.verbs),
# Up through version 1.6, this option was previously named --with-openib '--with-mxm' if '+mxm' in spec else '--without-mxm',
if spec.satisfies('@:1.6'): # Other options
config_args.append("--with-openib") '--enable-mpi-thread-multiple' if '+thread_multiple' in spec else '--disable-mpi-thread-multiple',
# In version 1.7, it was renamed to be --with-verbs '--with-pmi' if '+pmi' in spec else '--without-pmi',
elif spec.satisfies('@1.7:'): '--with-sqlite3' if '+sqlite3' in spec else '--without-sqlite3'
config_args.append("--with-verbs") ])
# TODO: use variants for this, e.g. +lanl, +llnl, etc. # TODO: use variants for this, e.g. +lanl, +llnl, etc.
# use this for LANL builds, but for LLNL builds, we need: # use this for LANL builds, but for LLNL builds, we need:
@ -76,9 +94,6 @@ def install(self, spec, prefix):
if self.version == ver("1.6.5") and '+lanl' in spec: if self.version == ver("1.6.5") and '+lanl' in spec:
config_args.append("--with-platform=contrib/platform/lanl/tlcc2/optimized-nopanasas") config_args.append("--with-platform=contrib/platform/lanl/tlcc2/optimized-nopanasas")
# TODO: Spack should make it so that you can't actually find
# these compilers if they're "disabled" for the current
# compiler configuration.
if not self.compiler.f77 and not self.compiler.fc: if not self.compiler.f77 and not self.compiler.fc:
config_args.append("--enable-mpi-fortran=no") config_args.append("--enable-mpi-fortran=no")