On Jun 7, 2007, at 9:04 PM, Code Master wrote:
> nction `_int_malloc':
> : multiple definition of `_int_malloc'
> /usr/lib/libopen-pal.a(lt1-malloc.o)(.text+0x18a0):openmpi-1.2.2/
> opal/mca/memory/ptmalloc2/malloc.c:3954: first defined here
> /usr/bin/ld: Warning: size of symbol `_int_malloc' changed from
> 1266 in /usr/lib/libopen- pal.a(lt1-malloc.o) to 1333 in /home/
> 490_research/490/src/mpi.optimized_profiling//lib/libopen-pal.a(lt1-
> malloc.o)
>
>
> so what could go wrong here?
>
> Is it because openmpi has internal implementatios of system-
> provided functions (such as malloc) that are also used in my
> program, but the one the client program use is provided by the
> system whereas the one in the library has a different internal
> implementation?
>
> In such case, how could I do the static linking in my client
> program? I really need static linking as far as possible to do the
> profiling.
Yup, you guessed right. The easiest solution is to compile Open MPI
without the memory manager code. This disables some optimizations
for InfiniBand (OpenFabrics and MVAPI) and Myrinet/GM, but for other
networks has no impact. YOu can disable the memory manager with the
--without-memory-manager option to configure.
Hope this helps,
Brian
--
Brian W. Barrett
Networking Team, CCS-1
Los Alamos National Laboratory
|