Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Compiling Open MPI with PGI compilers in 32-bit mode
From: Ethan Mallove (ethan.mallove_at_[hidden])
Date: 2009-03-20 14:36:58


On Fri, Mar/20/2009 01:09:56PM, Ethan Mallove wrote:
> Let me try this again. Below is the error from OMPI 1.3r20826. In my
> last email, I accidentally posted the compiler error from Sun's
> internal OMPI source repository.
>
> $ cd opal/mca/memory/ptmalloc2
> $ make
> /bin/sh ../../../../libtool --tag=CC --mode=link pgcc -O -DNDEBUG -tp=k8-32 -export-dynamic -o libopenmpi-malloc.la -rpath /opt/SUNWhpc/HPC8.2/pgi/lib malloc.lo malloc-stats.lo -lnsl -lutil -lpthread
> libtool: link: pgcc -shared -fpic -DPIC .libs/malloc.o .libs/malloc-stats.o -lnsl -lutil -lpthread -lc -Wl,-soname -Wl,libopenmpi-malloc.so.0 -o .libs/libopenmpi-malloc.so.0.0.0
> /usr/bin/ld: warning: i386 architecture of input file `.libs/malloc.o' is incompatible with i386:x86-64 output
> /usr/bin/ld: warning: i386 architecture of input file `.libs/malloc-stats.o' is incompatible with i386:x86-64 output
> .libs/malloc.o(.text+0x14d3): In function `munmap_chunk':
> : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> .libs/malloc.o(.text+0x1550): In function `mremap_chunk':
> : undefined reference to `opal_mem_hooks_release_hook'
> .libs/malloc.o(.text+0x2bd2): In function `_int_free':
> : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> .libs/malloc.o(.text+0x309e): In function `_int_realloc':
> : undefined reference to `opal_mem_hooks_release_hook'
> .libs/malloc.o(.text+0x3c1a): In function `opal_mem_free_ptmalloc2_sbrk':
> : undefined reference to `opal_mem_hooks_release_hook'
> .libs/malloc.o(.text+0x3f9b): In function `ptmalloc_init':
> : undefined reference to `opal_mem_hooks_set_support'
> .libs/malloc.o(.text+0x409d): In function `new_heap':
> : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> .libs/malloc.o(.text+0x40c5): In function `new_heap':
> : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> .libs/malloc.o(.text+0x413f): In function `new_heap':
> : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> .libs/malloc.o(.text+0x4188): In function `new_heap':
> : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> .libs/malloc.o(.text+0x4272): In function `heap_trim':
> : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> .libs/malloc.o(.text+0x449a): In function `arena_get2':
> : undefined reference to `opal_atomic_wmb'
> make: *** [libopenmpi-malloc.la] Error 2

I think we have located the problem. Libtool has stripped out
the -tp=k8-32 flag in the link step:

  /bin/sh ../../../../libtool --tag=CC --mode=link pgcc -O -DNDEBUG -tp=k8-32 -export-dynamic -o libopenmpi-malloc.la -rpath /opt/SUNWhpc/HPC8.2/pgi/lib malloc.lo malloc-stats.lo -lnsl -lutil -lpthread
  libtool: link: pgcc -shared -fpic -DPIC .libs/malloc.o .libs/malloc-stats.o -lnsl -lutil -lpthread -lc -Wl,-soname -Wl,libopenmpi-malloc.so.0 -o .libs/libopenmpi-malloc.so.0.0.0

If I add it back in manually, all is well:

  $ pgcc -tp=k8-32 -shared -fpic -DPIC .libs/malloc.o .libs/malloc-stats.o -lnsl -lutil -lpthread -lc -Wl,-soname -Wl,libopenmpi-malloc.so.0 -o .libs/libopenmpi-malloc.so.0.0.0

I am guessing there is some macro (LDFLAGS?) that I can override to
prevent Libtool from stripping out the -tp=k8-32 flag.

-Ethan

>
> -Ethan
>
>
> On Fri, Mar/20/2009 12:49:06PM, Ethan Mallove wrote:
> > Hi,
> >
> > Has anyone successfully compiled Open MPI with the PGI compilers in
> > 32-bit mode (e.g., using -tp=k8-32 flag)? I am getting the following
> > error with 32-bit:
> >
> > $ cd opal/mca/memory/ptmalloc2
> > $ make
> > /bin/sh ../../../../libtool --tag=CC --mode=link pgcc -O -DNDEBUG -tp=k8-32 -export-dynamic -o libopenmpi-malloc.la -rpath /opt/SUNWhpc/HPC8.2/pgi/lib malloc.lo malloc-stats.lo -lnsl -lutil -lpthread
> > libtool: link: pgcc -shared -fpic -DPIC .libs/malloc.o .libs/malloc-stats.o -lnsl -lutil -lpthread -lc -Wl,-soname -Wl,libopenmpi-malloc.so.0 -o .libs/libopenmpi-malloc.so.0.0.0
> > /usr/bin/ld: warning: i386 architecture of input file `.libs/malloc.o' is incompatible with i386:x86-64 output
> > /usr/bin/ld: warning: i386 architecture of input file `.libs/malloc-stats.o' is incompatible with i386:x86-64 output
> > .libs/malloc.o(.text+0xcb3): In function `realloc_check':
> > : undefined reference to `opal_memcpy_base_module'
> > .libs/malloc.o(.text+0x14e3): In function `munmap_chunk':
> > : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> > .libs/malloc.o(.text+0x1560): In function `mremap_chunk':
> > : undefined reference to `opal_mem_hooks_release_hook'
> > .libs/malloc.o(.text+0x2be2): In function `_int_free':
> > : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> > .libs/malloc.o(.text+0x30ae): In function `_int_realloc':
> > : undefined reference to `opal_mem_hooks_release_hook'
> > .libs/malloc.o(.text+0x3c2a): In function `opal_mem_free_ptmalloc2_sbrk':
> > : undefined reference to `opal_mem_hooks_release_hook'
> > .libs/malloc.o(.text+0x3fab): In function `ptmalloc_init':
> > : undefined reference to `opal_mem_hooks_set_support'
> > .libs/malloc.o(.text+0x40ad): In function `new_heap':
> > : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> > .libs/malloc.o(.text+0x40d5): In function `new_heap':
> > : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> > .libs/malloc.o(.text+0x414f): In function `new_heap':
> > : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> > .libs/malloc.o(.text+0x4198): In function `new_heap':
> > : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> > .libs/malloc.o(.text+0x4282): In function `heap_trim':
> > : undefined reference to `opal_mem_free_ptmalloc2_munmap'
> > .libs/malloc.o(.text+0x44aa): In function `arena_get2':
> > : undefined reference to `opal_atomic_wmb'
> > make: *** [libopenmpi-malloc.la] Error 2
> >
> > -Ethan
> > _______________________________________________
> > users mailing list
> > users_at_[hidden]
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users