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 fatal
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 v9.1
on RHEL4.

"/usr/local/openmpi-intel/bin/mpif90 -showme" returns:

ifort -I/usr/local/openmpi-1.1.2-intel/include -pthread
-I/usr/local/openmpi-1.1.2-intel/lib
-L/usr/local/openmpi-1.1.2-intel/lib -lmpi_f90 -lmpi -lorte -lopal - lrt
-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.


Brian

--
  Brian Barrett
  Open MPI Team, CCS-1
  Los Alamos National Laboratory


Reply via email to