On 11/05/21 at 14:48 +0300, Vassilis Virvilis wrote:
> I believe the problem is that mpirun is built with the internal pmix
> library when there is external available.
> 
> bill@odin:~/src/openmpi-4.1.0$ dpkg -l '*pmix*' | grep ^ii
> ii  libpmix-dev:amd64 4.0.0-4      amd64        Development files for the
> PMI Exascale library
> ii  libpmix2:amd64    4.0.0-4      amd64        Process Management
> Interface (Exascale) library
> 
> mpirun is not linked to the external libpmix2
> 
> bill@odin:~/src/openmpi-4.1.0$ ldd /usr/bin/mpirun.openmpi
>        linux-vdso.so.1 (0x00007fffa1153000)
>        libopen-rte.so.40 => /usr/lib/x86_64-linux-gnu/libopen-rte.so.40
> (0x00007f3cdf657000)
>        libopen-pal.so.40 => /usr/lib/x86_64-linux-gnu/libopen-pal.so.40
> (0x00007f3cdf5a3000)
>        libevent_core-2.1.so.7 =>
> /usr/lib/x86_64-linux-gnu/libevent_core-2.1.so.7 (0x00007f3cdf569000)
>        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3cdf3a4000)
>        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f3cdf387000)
>        libhwloc.so.15 => /usr/lib/x86_64-linux-gnu/libhwloc.so.15
> (0x00007f3cdf32e000)
>        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
> (0x00007f3cdf30a000)
>        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3cdf304000)
>        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1
> (0x00007f3cdf2ff000)
>        libevent_pthreads-2.1.so.7 =>
> /usr/lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.7 (0x00007f3cdf2fa000)
>        /lib64/ld-linux-x86-64.so.2 (0x00007f3cdf72c000)
>        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3cdf1b6000)
>        libudev.so.1 => /usr/lib/x86_64-linux-gnu/libudev.so.1
> (0x00007f3cdf18e000)

That's because it is loaded dynamically.

mca_pmix_ext3x.so is linked to libpmix.so.2:

# ldd /usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi3/mca_pmix_ext3x.so
        linux-vdso.so.1 (0x00007ffeba72a000)
        libopen-pal.so.40 => /lib/x86_64-linux-gnu/libopen-pal.so.40 
(0x00007fae76f77000)
        libpmix.so.2 => /lib/x86_64-linux-gnu/libpmix.so.2 (0x00007fae76e2c000)
        libevent_core-2.1.so.7 => /lib/x86_64-linux-gnu/libevent_core-2.1.so.7 
(0x00007fae76df2000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007fae76dd0000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fae76c0b000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fae76c05000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fae76bfe000)
        libhwloc.so.15 => /lib/x86_64-linux-gnu/libhwloc.so.15 
(0x00007fae76ba5000)
        libevent_pthreads-2.1.so.7 => 
/lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.7 (0x00007fae76ba0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fae77057000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fae76a5c000)
        libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007fae76a34000)

> There is this https://github.com/open-mpi/ompi/issues/8335 but it looks
> applied in Debian.
> 
> I am trying to find the config.log to understand why it prefers the
> internal version of the pmix library but so far I can't tell.
> 
> Can you give me a hint where the config.log lives after a successful build?

It's not available. I rebuilt it locally, and got:

configure:13919: checking if user requested internal PMIx 
support(/usr/lib/x86_64-linux-gnu/pmix2)
configure:13932: result: no
configure:13985: checking for pmix.h in /usr/lib/x86_64-linux-gnu/pmix2
configure:13993: result: not found
configure:13995: checking for pmix.h in /usr/lib/x86_64-linux-gnu/pmix2/include
configure:13999: result: found
configure:14048: checking libpmix.* in /usr/lib/x86_64-linux-gnu/pmix2/lib64
configure:14056: result: not found
configure:14058: checking libpmix.* in /usr/lib/x86_64-linux-gnu/pmix2/lib
configure:14062: result: found
configure:14081: checking PMIx version
configure:14091: result: version file found
configure:14099: checking version 4x
configure:14117: gcc -E -I/usr/lib/x86_64-linux-gnu/pmix2/include -Wdate-time 
-D_FORTIFY_SOURCE=2 conftest.c
configure:14117: $? = 0
configure:14118: result: found
configure:14305: checking PMIx version to be used
configure:14308: result: external(4x)

(which looks OK)

Lucas

Reply via email to