Merge branch 'develop' of https://github.com/LLNL/spack into features/custom_modulefile_from_config
This commit is contained in:
commit
965e7f471f
@ -1,3 +1,3 @@
|
|||||||
[flake8]
|
[flake8]
|
||||||
ignore = W391,F403,E221
|
ignore = W391,F403,E221,F821
|
||||||
max-line-length = 79
|
max-line-length = 79
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
from spack import *
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class Openmpi(Package):
|
class Openmpi(Package):
|
||||||
"""Open MPI is a project combining technologies and resources from
|
"""Open MPI is a project combining technologies and resources from
|
||||||
several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI)
|
several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI)
|
||||||
@ -26,17 +28,26 @@ 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('pmi', default=True, description='Build support for PMI-based launchers')
|
variant('psm2', default=False, description='Build support for the Intel PSM2 library.')
|
||||||
|
variant('pmi', default=False, description='Build support for PMI-based launchers')
|
||||||
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('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:')
|
||||||
|
|
||||||
depends_on('hwloc')
|
depends_on('hwloc')
|
||||||
|
depends_on('sqlite', when='+sqlite3')
|
||||||
|
|
||||||
def url_for_version(self, version):
|
def url_for_version(self, version):
|
||||||
return "http://www.open-mpi.org/software/ompi/v%s/downloads/openmpi-%s.tar.bz2" % (version.up_to(2), version)
|
return "http://www.open-mpi.org/software/ompi/v%s/downloads/openmpi-%s.tar.bz2" % (version.up_to(2), version)
|
||||||
@ -54,30 +65,35 @@ def setup_dependent_package(self, module, dep_spec):
|
|||||||
self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
|
self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
|
||||||
self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
|
self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
|
||||||
|
|
||||||
|
@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 '+pmi' in spec:
|
('--with-%s' % self.verbs) if '+verbs' in spec else ('--without-%s' % self.verbs),
|
||||||
config_args.append("--with-pmi") #TODO: let user specify directory when possible
|
'--with-mxm' if '+mxm' in spec else '--without-mxm',
|
||||||
|
# Other options
|
||||||
if '+verbs' in spec:
|
'--enable-mpi-thread-multiple' if '+thread_multiple' in spec else '--disable-mpi-thread-multiple',
|
||||||
# Up through version 1.6, this option was previously named --with-openib
|
'--with-pmi' if '+pmi' in spec else '--without-pmi',
|
||||||
if spec.satisfies('@:1.6'):
|
'--with-sqlite3' if '+sqlite3' in spec else '--without-sqlite3'
|
||||||
config_args.append("--with-openib")
|
])
|
||||||
# In version 1.7, it was renamed to be --with-verbs
|
|
||||||
elif spec.satisfies('@1.7:'):
|
|
||||||
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:
|
||||||
@ -85,9 +101,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")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user