#include #include #include #include "func.h" #define SIZMES 250000 static int *buffers[1000]; int main( int argc, char *argv[] ) { int i, j, k, times, my_number, total; double starttime; /***/ printf( "Starting\n" ); /* if ( !rf_create() ) { printf( "rf_create error\n" ); return( -1 ); } */ MPI_Init( &argc, &argv ); my_number = sysProcNumGet(); total = sysProcTotalGet(); for ( i = 0; i < total; i++ ) { if ( (buffers[i] = malloc( SIZMES*sizeof( int ) )) == NULL ) { printf( "No memory\n" ); return( -1 ); } } printf( "Hellow, I am tnet, #%d Total %d\n", my_number, total ); times = 1000000; printf( "Running all routes %d times\n", times ); starttime = MPI_Wtime(); while ( times-- ) { for ( i = 0; i < total; i++ ) { if ( i != my_number ) { for ( k = 0; k < SIZMES; k++ ) (buffers[i])[k] = -1; r_read( i, (char*)buffers[i], SIZMES*sizeof( int ) ); } } j = 0; for ( k = 0; k < SIZMES; k++ ) (buffers[my_number])[k] = my_number + k; for ( i = 0; i < total; i++ ) { if ( i != my_number ) { r_write( i, (char*)buffers[my_number], SIZMES*sizeof( int ) ); w_write( i ); } } /* for ( i = 0; i < total; i++ ) { if ( i != my_number ) { w_write( i ); } } */ for ( i = 0; i < total; i++ ) { if ( i != my_number ) { w_read( i ); for ( k = 0; k < SIZMES; k++ ) { if ( (buffers[i])[k] != (i+k) ) { printf( "Processor %d received %d instead of %d from %d\n", my_number, (buffers[i])[k], i+k, i ); j++; } } } } if ( !my_number ) { printf( "Processor %d received from all with %d errors in %f seconds\n", my_number, j, (float)(MPI_Wtime()-starttime) ); fflush( stdout ); } } printf( "I am almost over\n" ); fflush( stdout ); MPI_Finalize(); printf( "I am over\n" ); fflush( stdout ); return( 0 ); }