Description
Background information
What version of Open MPI are you using? (e.g., v3.0.5, v4.0.2, git branch name and hash, etc.)
I am using v4.0.5 and v4.1.0 for this.
Describe how Open MPI was installed (e.g., from a source/distribution tarball, from a git clone, from an operating system distribution package, etc.)
In each case, the stack was built with GCC 10.2.0 built from scratch. I then used the release tarballs from Open MPI. The configure line for each is:
$ ./configure --disable-wrapper-rpath --disable-wrapper-runpath \
CC=gcc CXX=g++ FC=gfortran \
--prefix=$HOME/installed/Compiler/gcc-gfortran-10.2.0/openmpi/4.0.5
where only the last "4.0.5" is changed to "4.1.0" for 4.1.0.
Please describe the system on which you are running
- Operating system/version: macOS 10.15.7
- Computer hardware: Intel MacBook Pro 2019
- Network type: Uh...internal? It's not a cluster, just a laptop running with ye olde
--oversubscribe
Details of the problem
I'm still trying to see if I can figure out a reproducer for this (Hello World works just fine). But I want to try and describe the issue.
I help maintain an earth system model and we like to have the ability to run on a local laptop instead of our usual supercomputers for ease of development, etc. So, on my laptop, I build GCC and Open MPI by hand to have better control. I then build some base libraries and then the model.
In this case, everything is identical except for the Open MPI version. In every case a 4.0.5 becomes a 4.1.0. With 4.0.5, the model runs just fine:
...
Character Resource Parameter: RATS_PROVIDER:PCHEM
Character Resource Parameter: pchem_clim:species.data
Integer*4 Resource Parameter: pchem_clim_years:39
GOCART::Initialize_: Starting...
Real*4 Resource Parameter: GOCART_DT:900.000000
Integer*4 Resource Parameter: GOCART_REFERENCE_TIME:-999
Character Resource Parameter: GOCART_IMPORT_RESTART_FILE:gocart_import_rst
Bootstrapping gocart_import_rst
...
But when I move to 4.1.0, I get this:
...
Character Resource Parameter: RATS_PROVIDER:PCHEM
Character Resource Parameter: pchem_clim:species.data
Integer*4 Resource Parameter: pchem_clim_years:39
dyld: lazy symbol binding failed: Symbol not found: _preadv
Referenced from: /Users/mathomp4/installed/Compiler/gcc-gfortran-10.2.0/openmpi/4.1.0/lib/openmpi/mca_fbtl_posix.so
Expected in: flat namespace
dyld: Symbol not found: _preadv
Referenced from: /Users/mathomp4/installed/Compiler/gcc-gfortran-10.2.0/openmpi/4.1.0/lib/openmpi/mca_fbtl_posix.so
Expected in: flat namespace
Program received signal SIGABRT: Process abort signal.
Backtrace for this error:
#0 0x12c983d3d
#1 0x12c98316d
#2 0x7fff6a9055fc
As an additional test, I built our model with Intel Fortran/Clang + Open MPI 4.1.0, and the model runs.I notice in the config.log files for 4.1.0:
❯ rg ac_cv_func_preadv *.log
config.gcc-gfortran-10.2.0.log
188849:ac_cv_func_preadv=yes
config.intel-clang-2020.4.301.log
188184:ac_cv_func_preadv=no
So GNU has preadv, but Intel-Clang does not?
Now, I did a bit of diffing between 4.0.5 and 4.1.0 and I do see changes in files with the word preadv
like ompi/mca/fbtl/posix/fbtl_posix_preadv.c
. Indeed, a big change! But...maybe that doesn't matter?
Any help would be much appreciated.