Add variant to MPICH to enable ROMIO support (#1944)
This commit is contained in:
parent
49aed3969c
commit
aa079dbdf1
@ -28,6 +28,7 @@
|
|||||||
class Mpich(Package):
|
class Mpich(Package):
|
||||||
"""MPICH is a high performance and widely portable implementation of
|
"""MPICH is a high performance and widely portable implementation of
|
||||||
the Message Passing Interface (MPI) standard."""
|
the Message Passing Interface (MPI) standard."""
|
||||||
|
|
||||||
homepage = "http://www.mpich.org"
|
homepage = "http://www.mpich.org"
|
||||||
url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz"
|
url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz"
|
||||||
list_url = "http://www.mpich.org/static/downloads/"
|
list_url = "http://www.mpich.org/static/downloads/"
|
||||||
@ -41,10 +42,10 @@ class Mpich(Package):
|
|||||||
version('3.1', '5643dd176499bfb7d25079aaff25f2ec')
|
version('3.1', '5643dd176499bfb7d25079aaff25f2ec')
|
||||||
version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
|
version('3.0.4', '9c5d5d4fe1e17dd12153f40bc5b6dbc0')
|
||||||
|
|
||||||
variant('verbs', default=False,
|
|
||||||
description='Build support for OpenFabrics verbs.')
|
|
||||||
variant('pmi', default=True, description='Build with PMI support')
|
|
||||||
variant('hydra', default=True, description='Build the hydra process manager')
|
variant('hydra', default=True, description='Build the hydra process manager')
|
||||||
|
variant('pmi', default=True, description='Build with PMI support')
|
||||||
|
variant('romio', default=True, description='Enable ROMIO MPI I/O implementation')
|
||||||
|
variant('verbs', default=False, description='Build support for OpenFabrics verbs.')
|
||||||
|
|
||||||
provides('mpi@:3.0', when='@3:')
|
provides('mpi@:3.0', when='@3:')
|
||||||
provides('mpi@:1.3', when='@1:')
|
provides('mpi@:1.3', when='@1:')
|
||||||
@ -72,16 +73,14 @@ def setup_dependent_package(self, module, dep_spec):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
config_args = ["--prefix=" + prefix,
|
config_args = [
|
||||||
"--with-pmi=" + ("yes" if '+pmi' in spec else 'no'),
|
'--prefix={0}'.format(prefix),
|
||||||
"--with-pm=" + ('hydra' if '+hydra' in spec else 'no'),
|
'--enable-shared',
|
||||||
"--enable-shared"]
|
'--with-pm={0}'.format('hydra' if '+hydra' in spec else 'no'),
|
||||||
|
'--with-pmi={0}'.format('yes' if '+pmi' in spec else 'no'),
|
||||||
# Variants
|
'--{0}-romio'.format('enable' if '+romio' in spec else 'disable'),
|
||||||
if '+verbs' in spec:
|
'--{0}-ibverbs'.format('with' if '+verbs' in spec else 'without')
|
||||||
config_args.append("--with-ibverbs")
|
]
|
||||||
else:
|
|
||||||
config_args.append("--without-ibverbs")
|
|
||||||
|
|
||||||
# TODO: Spack should make it so that you can't actually find
|
# TODO: Spack should make it so that you can't actually find
|
||||||
# these compilers if they're "disabled" for the current
|
# these compilers if they're "disabled" for the current
|
||||||
@ -96,24 +95,25 @@ def install(self, spec, prefix):
|
|||||||
config_args.append("--disable-fortran")
|
config_args.append("--disable-fortran")
|
||||||
|
|
||||||
configure(*config_args)
|
configure(*config_args)
|
||||||
|
|
||||||
make()
|
make()
|
||||||
make("install")
|
make('check')
|
||||||
|
make('install')
|
||||||
|
|
||||||
self.filter_compilers()
|
self.filter_compilers(prefix)
|
||||||
|
|
||||||
def filter_compilers(self):
|
def filter_compilers(self, prefix):
|
||||||
"""Run after install to make the MPI compilers use the
|
"""Run after install to make the MPI compilers use the
|
||||||
compilers that Spack built the package with.
|
compilers that Spack built the package with.
|
||||||
|
|
||||||
If this isn't done, they'll have CC, CXX, F77, and FC set
|
If this isn't done, they'll have CC, CXX, F77, and FC set
|
||||||
to Spack's generic cc, c++, f77, and f90. We want them to
|
to Spack's generic cc, c++, f77, and f90. We want them to
|
||||||
be bound to whatever compiler they were built with.
|
be bound to whatever compiler they were built with."""
|
||||||
"""
|
|
||||||
bin = self.prefix.bin
|
mpicc = join_path(prefix.bin, 'mpicc')
|
||||||
mpicc = join_path(bin, 'mpicc')
|
mpicxx = join_path(prefix.bin, 'mpicxx')
|
||||||
mpicxx = join_path(bin, 'mpicxx')
|
mpif77 = join_path(prefix.bin, 'mpif77')
|
||||||
mpif77 = join_path(bin, 'mpif77')
|
mpif90 = join_path(prefix.bin, 'mpif90')
|
||||||
mpif90 = join_path(bin, 'mpif90')
|
|
||||||
|
|
||||||
# Substitute Spack compile wrappers for the real
|
# Substitute Spack compile wrappers for the real
|
||||||
# underlying compiler
|
# underlying compiler
|
||||||
|
Loading…
Reference in New Issue
Block a user