in reply to OpenMPI and Perl

> strings /usr/local/lib/perl/5.10.0/auto/Parallel/MPI/Simple/Simple.s +o | grep mpi (...) ompi_mpi_char

This just shows that the symbol appears in Simple.so, but it doesn't tell if that occurrence is the implementation (i.e. the instance of a variable, code of a function, etc.) of the symbol, or just a reference to an external implementation, which it very likely is in that particular case...

Use objdump -tT, or nm on the other libs and look for the type of the symbol ("*UND*" means it's an undefined/external reference) to find out more. Presumably the symbol should be in defined/implemented in libmpich-p4mpd.so.1.0.

Replies are listed 'Best First'.
Re^2: OpenMPI and Perl
by spadacciniweb (Curate) on Nov 19, 2009 at 13:07 UTC
    Yes
    > objdump -tT /usr/local/lib/perl/5.10.0/auto/Parallel/MPI/Simple/Simp +le.so | grep ompi_mpi_char 00000000 *UND* 00000000 ompi_mpi_char 00000000 D *UND* 00000000 ompi_mpi_char

    but there isn't in others libs. So this is the problem, isn't true?

    Mariano

    (($_="Mzz ojjdloobnf jt uvy5502383")=~y~b-zg2-5c96-81~a-z0-9~s)=~s~~~s; print
      but there isn't in others libs. So this is the problem

      Looks like it, yes.  Maybe your MPI library is the wrong version (too old)? A quick grep through the current Open MPI sources shows the symbol is defined in ./ompi/datatype/dt_module.c.  But I'm no Open MPI expert, and can't tell from the top of my head if that symbol should end up in the lib libmpich-p4mpd.so.1.0 (which you seem to have), or in some other related lib...

      You could try compiling the sources yourself (unless you've already done so), and check every .so/.a file being created for the occurrence of the symbol.

        Ok, I think my libmpich-p4mpd.so.1.0 lib is too old. It is a package (prebuild in my distribution).
        Now I am recompiling OpenMPI lib from source.

        Thank you,
        Mariano

        (($_="Mzz ojjdloobnf jt uvy5502383")=~y~b-zg2-5c96-81~a-z0-9~s)=~s~~~s; print