From 0451c8e55f35c58adef120a986e8782abb3155eb Mon Sep 17 00:00:00 2001
From: Nicolas Richart <nicolas.richart@epfl.ch>
Date: Wed, 1 Jun 2016 15:58:00 +0200
Subject: [PATCH] Addapting the mvapich2@2.1: configure options for slurm

---
 .../builtin/packages/mvapich2/package.py      | 22 +++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py
index f4997bdfa1..e871d0cd2b 100644
--- a/var/spack/repos/builtin/packages/mvapich2/package.py
+++ b/var/spack/repos/builtin/packages/mvapich2/package.py
@@ -124,10 +124,19 @@ def set_process_manager(self, spec, configure_args):
             raise RuntimeError(" %s : 'slurm' cannot be activated together with other process managers" % self.name)
 
         process_manager_options = []
+        # See: http://slurm.schedmd.com/mpi_guide.html#mvapich2
         if self.enabled(Mvapich2.SLURM) in spec:
-            process_manager_options = [
-                "--with-pm=slurm"
-            ]
+            if self.version > Version('2.0'):
+                process_manager_options = [
+                    "--with-pmi=pmi2",
+                    "--with-pm=slurm"
+                ]
+            else:
+                process_manager_options = [
+                    "--with-pmi=slurm",
+                    "--with-pm=no"
+                ]
+
         elif has_slurm_incompatible_variants:
             pms = []
             # The variant name is equal to the process manager name in the configuration options
@@ -164,6 +173,11 @@ def set_network_type(self, spec, configure_args):
 
         configure_args.extend(network_options)
 
+    def setup_environment(self, spack_env, run_env):
+        if self.enabled(Mvapich2.SLURM) in self.spec and \
+           self.version > Version('2.0'):
+            run_env.set('SLURM_MPI_TYPE', 'pmi2')
+        
     def setup_dependent_environment(self, spack_env, run_env, extension_spec):
         spack_env.set('MPICH_CC', spack_cc)
         spack_env.set('MPICH_CXX', spack_cxx)
@@ -176,7 +190,7 @@ def setup_dependent_package(self, module, dep_spec):
         self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx')
         self.spec.mpifc  = join_path(self.prefix.bin, 'mpif90')
         self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
-
+    
     def install(self, spec, prefix):
         # we'll set different configure flags depending on our environment
         configure_args = [
-- 
GitLab