[Beowulf] use a MPI library thought a shared library

Peter St. John peter.st.john at gmail.com
Tue Dec 4 12:05:23 PST 2007


Mathieu,
I didn't spot why you included <mpi.h>? It seems you work thru morph_mpi.h
wrappers, right? Perhaps I misunderstand?
Peter

On Dec 4, 2007 2:03 PM, Mathieu Gontier <mg.mailing-list at laposte.net> wrote:

> Hi all,
>
> I am currently working with a project named MorphMPI. Its main purpose
> is to offer a generic interface for the developers of parallel
> applications, and chose the MPI library/interconnect at the runtime by
> rebuilding a shared morph library against the desire MPI library. (The
> final application is linked against a shared morph library instead of
> the real MPI library.)
> For more information about that, you can follow these links:
> - http://www.clustermonkey.net//content/view/213/32/
> - http://sourceforge.net/projects/morphmpi
>
> So, I meet a little problem whatever the MPI library used (I tried with
> MPICH-1.2.5.2, MPICHGM and IntelMPI).
> When MorphMPI is  linked statically with my parallel application,
> everything is ok; but when MorphMPI is  linked dynamically with my
> parallel application, MPI_Get_count return a wrong value.
>
> I concluded it is difficult to use a MPI library thought a shared
> library. I wonder if someone have more information about it (in this
> case, you're welcome ;-) )
>
> Thank you for your support,
> Mathieu.
>
> PS: my problem happens in the the following example,
>
> #  include<morphmpi.h>
>
> #  include <mpi.h>
>
> #include<stdio.h>
>
>
> int main( int argc, char* argv[] )
>
> {
>
>  int np, me, ier, flag=0, msglen=-1 ;
>
>  MorphMPI_Request request ;
>
>  MorphMPI_Status status ;
>
>  int buf[1] ; buf[0]=-1 ;
>
>
>  ier = MorphMPI_Init( &argc, &argv ) ;
>
>  ier = MorphMPI_Comm_size( MorphMPI_COMM_WORLD, &np ) ;
>
>  ier = MorphMPI_Comm_rank( MorphMPI_COMM_WORLD, &me ) ;
>
>
>  if( me > 1 ) printf( "I am the useless processor #%d on %d\n", me, np ) ;
>
>  else printf( "I am the working processor #%d on %d\n", me, np ) ;
>
>
>  ier = MorphMPI_Barrier( MorphMPI_COMM_WORLD ) ;
>
>
> printf( "<<< %d >>>\n", &status ) ;
>
>
>  if( ! me ) {
>
>    buf[0] = 69 ;
>
>    ier = MorphMPI_Isend( buf, 1, MorphMPI_INT, 1,1, MorphMPI_COMM_WORLD,
> &request ) ;
>
>    ier = MorphMPI_Wait( &request, &status ) ;
>
>  }
>
>
>  ier = MorphMPI_Barrier( MorphMPI_COMM_WORLD ) ;
>
>
>  if( me == 1 ) {
>
>    ier = MorphMPI_Irecv( buf, 1, MorphMPI_INT, 0, 1, MorphMPI_COMM_WORLD,
> &request ) ;
>
>    ier = MorphMPI_Wait( &request, &status ) ;
>
>    ier = MorphMPI_Get_count( &status, MorphMPI_INT, &msglen ) ;
>
>
>    if( msglen != 1 ) printf( "ERROR: The lengh of the message is not 1\n"
> ) ;
>
>    else printf( "SUCCESS !\n" ) ;
>
>  }
>
>
>  ier = MorphMPI_Finalize() ;
>
> }
>
>
>
> --
> Mathieu Gontier
> Core Development Engineer
>
> Read the attached v-card for telephone, fax, adress
> Look at our web-site http://www.fft.be
>
>
> _______________________________________________
> Beowulf mailing list, Beowulf at beowulf.org
> To change your subscription (digest mode or unsubscribe) visit
> http://www.beowulf.org/mailman/listinfo/beowulf
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.beowulf.org/pipermail/beowulf/attachments/20071204/7be2dfbb/attachment.html>


More information about the Beowulf mailing list