Hi Åke,

I see you that in your parse_hook you have

    if ec.name == 'OpenMPI':
        ...
        if LooseVersion(ec.version) >= LooseVersion('2.1'):
            pmix_version = '1.2.5'
            ucx_version = '1.4.0'
            if LooseVersion(ec.version) >= LooseVersion('3'):
                pmix_version = '2.2.1'
            if LooseVersion(ec.version) >= LooseVersion('4'):
                pmix_version = '3.0.2' # OpenMPI 4.0.0 is not compatible with 
PMIx 3.1.x

            extra_deps.append(('PMIx', pmix_version))

So do you build Slurm against the corresponding PMIx module?

I'd sort of felt that, as we don't build Slurm as a module, it should
just depend on the system libraries, but if there are dependencies
between PMIx and OpenMPI to be taken into account, that simplistic
approach isn't going to work.

However, if I tie Slurm to a particular PMIx version, won't I then have
problems when I start running programs built with a different toolchain
with a different version of OpenMPI with a dependency on a potentially
different version of PMIx?

Cheers,

Loris

PS: Slightly strangely, EB has a patch for PMIx 2.2.1 but no actual EC:

  [build@admin ~]$ eb -S pmix-2
  
CFGS1=/trinity/shared/easybuild/software/EasyBuild/4.1.1/easybuild/easyconfigs/p/PMIx
   * $CFGS1/PMIx-2.1.3-GCCcore-7.3.0.eb
   * $CFGS1/PMIx-2.2.1_fix_seg_hdr_problem.patch

Loris Bennett <[email protected]> writes:

> Hi Åke,
>
> Thanks for the link - very useful.  I see there are various pitfalls
> regarding the compatibility of various OpenMPI and PMIx versions that I
> was only partially aware of.
>
> Cheers,
>
> Loris
>
> Åke Sandgren <[email protected]> writes:
>
>> Yeah, the comment in that easyconfig is due for a rewrite.
>>
>> You could also look at
>> https://github.com/easybuilders/easybuild-framework/pull/2777 for more
>> ways to handle this.
>>
>> On 2/13/20 1:37 PM, Loris Bennett wrote:
>>> Hi,
>>> 
>>> In
>>> 
>>>   OpenMPI-4.0.2-GCC-9.2.0-2.32.eb
>>> 
>>> it says
>>> 
>>>   # to enable SLURM integration (site-specific)
>>>   # configopts += '--with-slurm --with-pmi=/usr/include/slurm 
>>> --with-pmi-libdir=/usr'
>>> 
>>> Regarding the Slurm option, here
>>> 
>>>   https://www.open-mpi.org/faq/?category=building#build-rte
>>> 
>>> it says
>>> 
>>>   Slurm support is built automatically; there is nothing that you need
>>>   to do.
>>> 
>>> Admittedly here
>>> 
>>>   https://www.open-mpi.org/faq/?category=slurm
>>> 
>>> it also says
>>> 
>>>   1. How do I run jobs under Slurm?
>>>   The short answer is yes, provided you configured OMPI --with-slurm.
>>> 
>>> Apart from the fact that 'yes' is not a good answer to the question, I
>>> feel that the information regarding '--with-slurm' may be outdated.
>>> 
>>> Regarding PMI, for OpenMPI 4.0.2
>>> 
>>>   ./config  --help
>>> 
>>> says
>>> 
>>>   --with-pmix(=DIR)       Build PMIx support. DIR can take one of three
>>>                           values: "internal", "external", or a valid 
>>> directory
>>>                           name. "internal" (or no DIR value) forces Open MPI
>>>                           to use its internal copy of PMIx. "external" 
>>> forces
>>>                           Open MPI to use an external installation of PMIx.
>>>                           Supplying a valid directory name also forces Open
>>>                           MPI to use an external installation of PMIx, and
>>>                           adds DIR/include, DIR/lib, and DIR/lib64 to the
>>>                           search path for headers and libraries. Note that
>>>                           Open MPI does not support --without-pmix.
>>> 
>>> In the past the problem was that both PMIX and Slurm packages tried to
>>> install PMI1 and PMI2 libraries into the same location.  Slurm now
>>> creates a separate package with these libraries and it is possible to
>>> build PMIX in such a way that libpmi.so and libpmi2.so end up in a
>>> separate package.
>>> 
>>> The separate pmix-libpmi package installs the headers pmi.h and pmi2.h
>>> to
>>> 
>>>   /usr/include
>>> 
>>> whereas slurm-devel installs them to
>>> 
>>>   /usr/include/slurm
>>> 
>>> Therefore I think the advice in the EC should be more like
>>> 
>>>   # If the PMI{1,2} libraries from Slurm, rather than those from PMIx
>>>   # have been installed (site-specific), use the the following
>>>   # configopts += '--with-pmi=/usr/include/slurm'
>>> 
>>> Is this correct?
>>> 
>>> Cheers,
>>> 
>>> Loris
>>> 
>>> --
>>> Dr. Loris Bennett (Mr.)
>>> ZEDAT, Freie Universität Berlin         Email [email protected]
>>> 
-- 
Dr. Loris Bennett (Mr.)
ZEDAT, Freie Universität Berlin         Email [email protected]

Reply via email to