On Wednesday 11 August 2010 23:16:50 Lisandro Dalcin wrote: > On 11 August 2010 03:12, Matthias Jurenz <matthias.jur...@tu-dresden.de> 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
#include "pomp_lib.h" int POMP_MAX_ID = 0; struct ompregdescr* pomp_rd_table[] = { 0 };
smime.p7s
Description: S/MIME cryptographic signature