Sorry. Indeed, the included <mpi.h> should not be here: it is a relic of some flags added to understand the problem. Then, the test case is correct without this include.
So, Peter, you well understand morphmpi.h ;-)

Mathieu Gontier
Core Development Engineer

Read the attached v-card for telephone, fax, adress
Look at our web-site http://www.fft.be




Peter St. John wrote:
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] <mailto:[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://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 <http://www.fft.be/>


    _______________________________________________
    Beowulf mailing list, [email protected] <mailto:[email protected]>
    To change your subscription (digest mode or unsubscribe) visit
    http://www.beowulf.org/mailman/listinfo/beowulf


_______________________________________________
Beowulf mailing list, [email protected]
To change your subscription (digest mode or unsubscribe) visit 
http://www.beowulf.org/mailman/listinfo/beowulf

Reply via email to