summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Carns <carns@mcs.anl.gov>2019-08-22 20:02:57 -0400
committerPeter Scheibel <scheibel1@llnl.gov>2019-08-22 17:02:56 -0700
commita707c5bd2b5dd0380fe8546b4f67ca993f520b4a (patch)
treeb766937ba543d40712c62d4b8afba445e27688f8
parent21f2a1ef83de4b8d6159c7717e9018502272baed (diff)
downloadspack-a707c5bd2b5dd0380fe8546b4f67ca993f520b4a.tar.gz
spack-a707c5bd2b5dd0380fe8546b4f67ca993f520b4a.tar.bz2
spack-a707c5bd2b5dd0380fe8546b4f67ca993f520b4a.tar.xz
spack-a707c5bd2b5dd0380fe8546b4f67ca993f520b4a.zip
libfabric package: add kdreg variant (off by default) (#12521)
This variant (off by default) adds support for the kdreg option in the GNI provider. It is disabled by default in order to avoid potential runtime conflicts with the cray-mpich library. Only one library at a time can use this feature. This patch allows the libfabric package to work correctly out of the box on systems like Cori at NERSC (since it's CLE7 update). Otherwise the spack build may autodetect kdreg headers on the system and enable this problematic feature.
-rw-r--r--var/spack/repos/builtin/packages/libfabric/package.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/libfabric/package.py b/var/spack/repos/builtin/packages/libfabric/package.py
index 8465974532..363e383f58 100644
--- a/var/spack/repos/builtin/packages/libfabric/package.py
+++ b/var/spack/repos/builtin/packages/libfabric/package.py
@@ -48,6 +48,13 @@ class Libfabric(AutotoolsPackage):
multi=True
)
+ # NOTE: the 'kdreg' variant enables use of the special /dev/kdreg file to
+ # assist in memory registration caching in the GNI provider. This
+ # device file can only be opened once per process, however, and thus it
+ # frequently conflicts with MPI.
+ variant('kdreg', default=False,
+ description='Enable kdreg on supported Cray platforms')
+
depends_on('rdma-core', when='fabrics=verbs')
depends_on('opa-psm2', when='fabrics=psm2')
depends_on('psm', when='fabrics=psm')
@@ -99,6 +106,11 @@ class Libfabric(AutotoolsPackage):
def configure_args(self):
args = []
+ if '+kdreg' in self.spec:
+ args.append('--with-kdreg=yes')
+ else:
+ args.append('--with-kdreg=no')
+
for fabric in self.fabrics:
if 'fabrics=' + fabric in self.spec:
args.append('--enable-{0}=yes'.format(fabric))