Problem identified between chair and keyboard :-/
I see that at some point I thought it was a good idea to write the
following hook:
def pre_configure_hook(self, *args, **kwargs):
"""Pre-configure hook"""
# Add Slurm PMIx support for OpenMPI
if self.name == 'OpenMPI':
if not '--with-slurm' in self.cfg['configopts']:
self.cfg['configopts'] = self.cfg['configopts'] + ' --with-slurm'
self.log.info("[pre-configure hook] Adding --with-slurm")
if not '--with-pmi=' in self.cfg['configopts']:
self.cfg['configopts'] = self.cfg['configopts'] \
+ ' --with-pmi=/usr/include/slurm'
self.log.info("[pre-configure hook] Adding --with-pmi=<path>")
if not '--with-pmi-libdir=' in self.cfg['configopts']:
self.cfg['configopts'] = self.cfg['configopts'] \
+ ' --with-pmi-libdir=/usr/lib64'
self.log.info("[pre-configure hook] Adding
--with-pmi-libdir=<path>")
return
This was an attempt to reproduce the following lines from
OpenMPI-3.1.1-GCC-7.3.0-2.30.eb:
# to enable SLURM integration (site-specific)
# configopts = '--with-slurm --with-pmi=/usr/include/slurm
--with-pmi-libdir=/usr'
which still exist in the latest version, OpenMPI-4.0.1-GCC-8.3.0-2.32.eb.
I see however there is a related discussion here:
https://github.com/easybuilders/easybuild-easyconfigs/issues/5996
It seems to me that '--with-slurm' is not needed at all, since this has
been the default at least as far back as OpenMPI 1.0.1. So following
Åke's argument in the discussion in the link, wouldn't it be better to
change the comments in the OpenMPI ECs to just:
# to enable PMI integration (site-specific)
# configopts = '--with-pmi'
?
Cheers,
Loris
Åke Sandgren <[email protected]> writes:
> You should nbot set --with-pmi to anything when /usr is the base, just
> use --with-pmi and stuff will find the include files correctly, or at
> least should
>
> On 11/14/19 11:53 AM, Alan O'Cais wrote:
>> Looks to me like you should be using:
>> --with-pmi=/usr
>> It needs to find the headers and the libraries.
>>
>> On Thu, 14 Nov 2019 at 11:49, Loris Bennett <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> Loris Bennett <[email protected]
>> <mailto:[email protected]>> writes:
>>
>> > Hi,
>> >
>> > When installing
>> >
>> > OpenMPI-2.1.0-GCC-6.3.0-2.28.eb
>> >
>> > on a machine with
>> >
>> > Slurm 19.05.3-2
>> >
>> > I get the following error:
>> >
>> > checking if user requested PMI support... yes
>> > checking for pmi.h in /usr/include/slurm/include... not found
>> > checking for pmi.h in /usr/include/slurm/include/slurm... not found
>> > checking for libpmi in /usr/lib64... found
>> > checking for PMI_Init in -lpmi... yes
>> > checking for pmi2.h in /usr/include/slurm/include... not found
>> > checking for pmi2.h in /usr/include/slurm/include/slurm... not found
>> > checking for libpmi2 in /usr/lib64... found
>> > checking for PMI2_Init in -lpmi2... yes
>> > checking can PMI support be built... no
>> > configure: WARNING: PMI support requested (via --with-pmi) but
>> neither pmi.h
>> > configure: WARNING: nor pmi2.h were found under locations:
>> > configure: WARNING: /usr/include/slurm
>> > configure: WARNING: /usr/include/slurm/slurm
>> > configure: WARNING: Specified path: /usr/include/slurm
>> > configure: WARNING: OR neither libpmi nor libpmi2 were found under:
>> > configure: WARNING: /usr/lib64/lib
>> > configure: WARNING: /usr/lib64/lib64
>> > configure: WARNING: Specified path: /usr/lib64
>> > configure: error: Aborting
>> >
>> > Slurm was installed from the sources and on my system the PMI headers
>> > are at
>> >
>> > /usr/include/pmi.h
>> > /usr/include/slurm/pmi.h
>> > /usr/include/pmi2.h
>> > /usr/include/slurm/pmi2.h
>> >
>> > Is the configure looking in the wrong place or were the PMI
>> headers in a
>> > different place in previous versions of Slurm?
>>
>> So, config.log says:
>>
>> This file contains any messages produced by compilers while
>> running configure, to aid debugging if configure makes a mistake.
>>
>> It was created by Open MPI configure 2.1.0, which was
>> generated by GNU Autoconf 2.69. Invocation command line was
>>
>> $ ./configure
>> --prefix=/trinity/shared/easybuild/software/OpenMPI/2.1.0-GCC-6.3.0-2.28
>> --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu
>> --enable-shared --enable-mpi-thread-multiple --with-verbs
>> --enable-mpirun-prefix-by-default
>>
>> --with-hwloc=/trinity/shared/easybuild/software/hwloc/1.11.6-GCC-6.3.0-2.28
>> --without-ucx --with-slurm --with-pmi=/usr/include/slurm
>> --with-pmi-libdir=/usr/lib64
>>
>> So while
>>
>> --with-pmi=/usr/include/slurm
>>
>> is given, which is indeed the directory containing the header files.
>> However, configure doesn't look into this directory but instead
>> looks at
>> the for the non-existent 'include' and 'include/slurm' subdirectories:
>>
>> configure:80629: result: yes
>> configure:80664: checking for pmi.h in /usr/include/slurm/include
>> configure:80671: result: not found
>> configure:80673: checking for pmi.h in
>> /usr/include/slurm/include/slurm
>>
>> configure:80925: checking for pmi2.h in /usr/include/slurm/include
>> configure:80932: result: not found
>> configure:80934: checking for pmi2.h in
>> /usr/include/slurm/include/slurm
>> configure:80942: result: not found
>>
>> The problem seems to be that the OpemMPI 'configure' incorrectly adds
>> 'include' and 'include/slurm' to the variable $check_pmi_install_dir.
>>
>> So is this version of OpenMPI just broken, as far as configure goes?
>>
>> Can anyone confirm?
>>
>> Cheers,
>>
>> Loris
>>
>> --
>> Dr. Loris Bennett (Mr.)
>> ZEDAT, Freie Universität Berlin Email
>> [email protected] <mailto:[email protected]>
>>
>>
>>
>> --
>> Dr. Alan O'Cais
>> E-CAM Software Manager
>> Juelich Supercomputing Centre
>> Forschungszentrum Juelich GmbH
>> 52425 Juelich, Germany
>>
>> Phone: +49 2461 61 5213
>> Fax: +49 2461 61 6656
>> E-mail: [email protected] <mailto:[email protected]>
>> WWW: http://www.fz-juelich.de/ias/jsc/EN
>>
>>
>> ------------------------------------------------------------------------------------------------
>> ------------------------------------------------------------------------------------------------
>> Forschungszentrum Juelich GmbH
>> 52425 Juelich
>> Sitz der Gesellschaft: Juelich
>> Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
>> Vorsitzender des Aufsichtsrats: MinDir Volker Rieke
>> Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
>> Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
>> Prof. Dr. Sebastian M. Schmidt
>> ------------------------------------------------------------------------------------------------
>> ------------------------------------------------------------------------------------------------
>>
--
Dr. Loris Bennett (Mr.)
ZEDAT, Freie Universität Berlin Email [email protected]