~ubuntu-branches/ubuntu/raring/simgrid/raring

« back to all changes in this revision

Viewing changes to teshsuite/smpi/mpich-test/pt2pt/fourth.c

  • Committer: Package Import Robot
  • Author(s): Martin Quinson
  • Date: 2013-01-31 00:24:51 UTC
  • mfrom: (10.1.6 sid)
  • Revision ID: package-import@ubuntu.com-20130131002451-krejhf7w7h24lpsc
Tags: 3.9~rc1-1
* New upstream release: the "Grasgory" release. Major changes:
  - Gras was completely removed from this version.
  - Documentation reorganization to ease browsing it.
  - New default value for the TCP_gamma parameter: 4MiB

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <stdio.h>
 
2
#include "mpi.h"
 
3
#include "test.h"
 
4
 
 
5
int main( int argc, char **argv )
 
6
{
 
7
    int rank, np, data = 777;
 
8
    MPI_Request handle;
 
9
    MPI_Status status;
 
10
 
 
11
    MPI_Init( &argc, &argv );
 
12
    MPI_Comm_rank( MPI_COMM_WORLD, &rank );
 
13
    MPI_Comm_size( MPI_COMM_WORLD, &np );
 
14
 
 
15
    if (np < 4) {
 
16
      MPI_Finalize();
 
17
      printf( "4 processors or more required, %d done\n", rank );
 
18
      return(1);
 
19
    }
 
20
 
 
21
    if (rank == 0) {
 
22
      MPI_Isend( &data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &handle );
 
23
      MPI_Wait( &handle, &status );
 
24
      MPI_Irecv( &data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &handle );
 
25
      MPI_Wait( &handle, &status );
 
26
      MPI_Isend( &data, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &handle );
 
27
      MPI_Wait( &handle, &status );
 
28
      MPI_Irecv( &data, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &handle );
 
29
      MPI_Wait( &handle, &status );
 
30
    }
 
31
    else if (rank == 1) {
 
32
      MPI_Irecv( &data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &handle );
 
33
      MPI_Wait( &handle, &status );
 
34
      MPI_Isend( &data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &handle );
 
35
      MPI_Wait( &handle, &status );
 
36
      MPI_Isend( &data, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &handle );
 
37
      MPI_Wait( &handle, &status );
 
38
      MPI_Irecv( &data, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &handle );
 
39
      MPI_Wait( &handle, &status );
 
40
    }
 
41
    else if (rank == 2) {
 
42
      MPI_Isend( &data, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &handle );
 
43
      MPI_Wait( &handle, &status );
 
44
      MPI_Irecv( &data, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &handle );
 
45
      MPI_Wait( &handle, &status );
 
46
      MPI_Irecv( &data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &handle );
 
47
      MPI_Wait( &handle, &status );
 
48
      MPI_Isend( &data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &handle );
 
49
      MPI_Wait( &handle, &status );
 
50
    }
 
51
    else if (rank == 3) {
 
52
      MPI_Irecv( &data, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &handle );
 
53
      MPI_Wait( &handle, &status );
 
54
      MPI_Isend( &data, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &handle );
 
55
      MPI_Wait( &handle, &status );
 
56
      MPI_Irecv( &data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &handle );
 
57
      MPI_Wait( &handle, &status );
 
58
      MPI_Isend( &data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &handle );
 
59
      MPI_Wait( &handle, &status );
 
60
    }
 
61
    Test_Waitforall( );
 
62
    MPI_Finalize();
 
63
    return(0);
 
64
}