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