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