/* * 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 << "SEND: init_1" << endl; MPI_Init( &argc, &argv ); cout << "SEND: init_2" << endl; MPI_Comm_size( MPI_COMM_WORLD, &numprocs ); cout << "SEND: init_3 numprocs (2): " << numprocs << endl; MPI_Comm_rank( MPI_COMM_WORLD, &myid ); cout << "SEND: init_4 myid (0): " << myid << endl; char dIn[16]; char dOut[16]; MPI_Request *req = new MPI_Request; MPI_Status *stat = new MPI_Status; int counter = 0; while( true ) { cout << "SEND: loop 1" << endl; usleep( 1000*1000 ); cout << "SEND: loop 2_Irecv" << endl; MPI_Irecv( dIn, 16, MPI_CHAR, rankRec, tagPING, MPI_COMM_WORLD, req ); dOut[0] = counter; cout << "SEND: loop 3_Send, data: " << (int)dOut[0] << endl; cout << "!!" << MPI_Send( dOut, 16, MPI_CHAR, rankRec, tagPING, MPI_COMM_WORLD ) << endl; cout << "SEND: loop 4_Sent" << endl; cout << "SEND: loop 5_Wait" << endl; MPI_Wait( req, stat ); cout << "SEND: loop 6_Rec, data: " << (int)dIn[0] << endl; counter ++; counter %= 255; cout << "------ SEND -------- SEND -------- SEND ---------" << endl; } delete stat; delete req; }