I need to correct myself - the libs are not symlinks to libpmix. They are 
actual copies of the libpmix library with their own version triplets which 
change only if/when the PMI-1 or PMI-2 abstraction code changes. If they were 
symlinks, we wouldn’t be able to track independent version triplets.

Just to further clarify: the reason we provide libpmi and libpmi2 is that users 
were requesting access to the backward compatibility feature, but their 
apps/libs were hardcoded to dlopen “libpmi” or “libpmi2”. We suggested they 
just manually create the links, but clearly there was some convenience 
associated with directly installing them. Hence, we added a configure option 
"--enable-pmi-backward-compatibility” to control the behavior and set it to 
enabled by default. Disabling it simply causes the other libs to not be made.


> On Dec 21, 2017, at 12:58 PM, Philip Kovacs <pkde...@yahoo.com> wrote:
> 
> >(they are nothing more than symlinks to libpmix)
> 
> This is very helpful to know.
> 
> 
> On Thursday, December 21, 2017 3:28 PM, "r...@open-mpi.org" 
> <r...@open-mpi.org> wrote:
> 
> 
> Hmmm - I think there may be something a little more subtle here. If you build 
> your app and link it against “libpmi2”, and that library is actually the one 
> from PMIx, then it won’t work with Slurm’s PMI2 plugin because the 
> communication protocols are completely different.
> 
> So the fact is that if you want to use PMIx backward compatibility, you (a) 
> need to link against either libpmix or the libpmi libraries we export (they 
> are nothing more than symlinks to libpmix), and (b) specify --mpi=pmix on the 
> srun cmd line.
> 
> 
> 
>> On Dec 21, 2017, at 11:44 AM, Philip Kovacs <pkde...@yahoo.com 
>> <mailto:pkde...@yahoo.com>> wrote:
>> 
>> OK, so slurm's libpmi2 is a functional superset of the libpmi2 provided by 
>> pmix 2.0+.  That's good to know.
>> 
>> My point here is that, if you use slurm's mpi/pmi2 plugin, regardless of 
>> which libpmi2 is installed, 
>> slurm or pmix, you will always run the slurm pmi2 code since it is compiled 
>> directly into the plugin.
>> 
>> 
>> On Wednesday, December 20, 2017 10:47 PM, "r...@open-mpi.org 
>> <mailto:r...@open-mpi.org>" <r...@open-mpi.org <mailto:r...@open-mpi.org>> 
>> wrote:
>> 
>> 
>> On Dec 20, 2017, at 6:21 PM, Philip Kovacs <pkde...@yahoo.com 
>> <mailto:pkde...@yahoo.com>> wrote:
>>> 
>>> >  -- slurm.spec: move libpmi to a separate package to solve a conflict 
>>> > with the
>>> >    version provided by PMIx. This will require a separate change to PMIx 
>>> > as
>>> >    well.
>>> 
>>> I see the intention behind this change since the pmix 2.0+ package provides 
>>> libpmi/libpmi2
>>> and there is a possible (installation) conflict with the Slurm 
>>> implementation of those libraries.  
>>> We've discussed  that issue earlier.
>>> 
>>> Now, suppose a user installs the pmix versions of libpmi/pmi2 with the 
>>> expectation that pmi
>>> calls will be forwarded to libpmix for greater speed, the so-called 
>>> "backward compatibility" feature.
>>> 
>>> Shouldn't the Slurm mpi_pmi2 plugin attempt to link with libpmi2 instead of 
>>> its internal 
>>> implementation of pmi2?  As it stands now, there won't be any forwarding of 
>>> pmi2 code 
>>> to libpmix which I imagine users would expect in that scenario.
>> 
>> Sadly, it isn’t quite that simple. Most of the standard PMI2 calls are 
>> covered by the backward compatibility libraries, so things like MPICH should 
>> work out-of-the-box.
>> 
>> However, MVAPICH2 added a PMI2 extension call to the SLURM PMI2 library that 
>> they use and PMIx doesn’t cover (as there really isn’t an easy equivalent, 
>> and they called it PMIX_foo which causes a naming conflict), and so they 
>> would not work.
>> 
>> 
>> 
>> 
> 
> 
> 

Reply via email to