Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] VampirTrace and MPI_Init_thread()
From: Matthias Jurenz (matthias.jurenz_at_[hidden])
Date: 2010-08-13 04:22:12


On Wednesday 11 August 2010 23:16:50 Lisandro Dalcin wrote:
> On 11 August 2010 03:12, Matthias Jurenz <matthias.jurenz_at_[hidden]>
wrote:
> > Hello Lisandro,
> >
> > this problem will be fixed in the next Open MPI release. There was an
> > obsolete preprocessor condition around the MPI_Init_thread wrapper, so
> > the source code could never be compiled :-(
> >
> > Thanks for the hint.
> >
> > Matthias
>
> OK. Many thanks for you clarification.
>
> BTW, I have and additional issue. I'm trying to build as shared
> library from libvt*.a using by passing -whole-archive to the linker.
> The idea behind this is to use that library with LD_PRELOAD to get MPI
> tracing of a binary compiled with plain mpicc (i.e, not mpicc-vt). For
> example, I managed to get this trick working with MPE. Moreover, I can
> enable MPI profiling at runtime in a Python script using mpi4pt by
> dlopen'ing the shared lib with profiling symbols before loading the
> mpi4py.MPI Python extension module. Being able to profile without a
> recompile is nice ;-)
>
> However, see this:
>
> $ pwd
> /usr/local/openmpi/1.4.2/lib
>
> $ ll libvt*
> -rw-r--r--. 1 root root 410784 2010-05-05 20:40 libvt.a
> -rw-r--r--. 1 root root 197618 2010-05-05 20:40 libvt.fmpi.a
> -rw-r--r--. 1 root root 569128 2010-05-05 20:40 libvt.mpi.a
> -rw-r--r--. 1 root root 503514 2010-05-05 20:40 libvt.omp.a
> -rw-r--r--. 1 root root 661466 2010-05-05 20:40 libvt.ompi.a
>
> $ nm libvt* | grep pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
> U pomp_rd_table
>
> That symbol (and possibly others) are undefined and I cannot found
> them elsewhere. Is there any easy way to build a shared lib with the
> MPI_xxx symbols?
>

Actually, the symbols above will be defined at compile/link time of the
application by the OpenMP instrumentor "OPARI".
However, while your application doesn't use OpenMP it should work to define the
missing symbols in a separate source file (see attachment) when building the
shared library:

gcc -fPIC -I<mpi-includedir>/vampirtrace -shared missing_syms.c -o
libvt.mpi.so -Wl,--whole-archive <mpi-libdir>/libvt.mpi.a <mpi-
libdir>/libotf.a -Wl,--no-whole-archive -ldl -lz -L<mpi-libdir> -lmpi

FYI, the next Open MPI 1.5 will come with a newer VampirTrace which provides
shared libraries by default.

Matthias





  • application/pkcs7-signature attachment: smime.p7s