/* * Kwant (20.12.2007) * * # smpd -start * # mpiexec -localonly -n 1 ssimple_sender/Debug/ssimple_sender : -localonly -n 1 ssimple_receiver/Debug/ssimple_receiver * */ #include #include #include #include #define MPISIZE 2 #define rankSend 0 #define rankRec 1 #define tagPING 0 using namespace std; int main( int argc, char *argv[] ) { int myid, numprocs; cout << " REC: init_1" << endl; MPI_Init( &argc, &argv ); cout << " REC: init_2" << endl; MPI_Comm_size( MPI_COMM_WORLD, &numprocs ); cout << " REC: init_3 numprocs (2): " << numprocs << endl; MPI_Comm_rank( MPI_COMM_WORLD, &myid ); cout << " REC: init_4 myid (1): " << myid << endl; char dIn[16]; char dOut[16]; MPI_Request *req = new MPI_Request; MPI_Status *stat = new MPI_Status; while( true ) { cout << " REC: loop 1" << endl; usleep( 1000*1000 ); cout << " REC: loop 2_Irecv" << endl; MPI_Irecv( dIn, 16, MPI_CHAR, rankSend, tagPING, MPI_COMM_WORLD, req ); cout << " REC: loop 3_Wait" << endl; MPI_Wait( req, stat ); cout << " REC: loop 4_Send, data: " << (int)dIn[0] << endl; dOut[0] = dIn[0]; MPI_Send( dOut, 16, MPI_CHAR, rankSend, tagPING, MPI_COMM_WORLD ); cout << " REC: loop 4_Sent" << endl; } delete stat; delete req; }