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 <[EMAIL PROTECTED]> 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@beowulf.org > To change your subscription (digest mode or unsubscribe) visit > http://www.beowulf.org/mailman/listinfo/beowulf >
_______________________________________________ Beowulf mailing list, Beowulf@beowulf.org To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf