[Beowulf] use a MPI library thought a shared library
Many of your questions may have already been answered in earlier discussions or in the FAQ. The search results page will indicate current discussions as well as past list serves, articles, and papers.
Mathieu Gontier mg.mailing-list at laposte.netTue Dec 4 11:03:34 PST 2007
- Previous message: [Beowulf] NFS Read Errors
- Next message: [Beowulf] use a MPI library thought a shared library
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: [Beowulf] NFS Read Errors
- Next message: [Beowulf] use a MPI library thought a shared library
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Beowulf mailing list
