On Dec 13, 2006, at 4:15 PM, Dennis McRitchie wrote:
> When creating a static build of an MPI program, I get a number of
> error messages, as listed below. They are all regarding conflicts
> between duplicate definitions and different sizes of malloc, free,
> realloc, etc. for the RHEL4 and openmpi versions of these functions. I
> could build openmpi with --without-memorymanager, but we are using
> infiniband and need the memory manager features.
> I am using openmpi v1.1.2 built against the Intel fortran compiler
> on RHEL4.
> "/usr/local/openmpi-intel/bin/mpif90 -showme" returns:
> ifort -I/usr/local/openmpi-1.1.2-intel/include -pthread
> -L/usr/local/openmpi-1.1.2-intel/lib -lmpi_f90 -lmpi -lorte -lopal -
> -lpbs -ldl -Wl,--export-dynamic -lnsl -lutil -ldl
> The offending line is the one that links the program. I've added
> the -v
> option so you can see all the utilities invoked below.
> Is there any way to prevent this behavior?
The only way to prevent this behavior when building a static library
is to disable the memory manager code in Open MPI. Note that this
code is not required for use of the OpenIB, MVAPI, or GM transports,
only to get peak bandwidth on applications with extremely high
communication buffer reuse. In fact, the default operating mode for
Open MPI is to not use the memory manager code for registration cache.
So configure and recompile with --without-memory-manager and Open MPI
will compile fine. You may also want to add the configure option --
disable-dlopen to silence some (but not all) of the other warnings.
Open MPI Team, CCS-1
Los Alamos National Laboratory