fix error in previous commit
[charm.git] / tests / ampi / migration / test.C
1 /**
2  * AMPI Thread Migration Test
3  * Migrate the rank 1 AMPI process from node to node in order.
4  */
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include "mpi.h"
8 #include "charm.h" /* For CkAbort */
9
10
11 int main(int argc,char **argv)
12 {
13
14   int rank;            /* process id */
15   int p;                /* number of processes */
16   
17   MPI_Init( &argc, &argv );
18   MPI_Comm_rank( MPI_COMM_WORLD, &rank);
19   MPI_Comm_size( MPI_COMM_WORLD, &p );
20
21   MPI_Barrier(MPI_COMM_WORLD);
22
23   if(p >= 1){
24     CkPrintf("\nbegin migrating\n");
25
26     for (int step=0; step<=CkNumPes(); ++step) {
27       if (rank == 1) {
28         int destination_pe = (CkMyPe() + 1) % CkNumPes();
29         CkPrintf("Trying to migrate partition %d from pe %d to %d\n",
30                  rank, CkMyPe(), destination_pe);
31         //fflush(stdout);
32         CkAssert(destination_pe >= 0);
33         int migrate_test = CkMyPe();
34         printf("Entering TCHARM_Migrate_to, "
35                "FEM_My_partition is %d, "
36                "CkMyPe() is %d, migrate_test is %d\n",
37                rank, CkMyPe(), migrate_test);
38         //fflush(stdout);
39         AMPI_Migrateto(destination_pe);
40         printf("Leaving TCHARM_Migrate_to, "
41                "FEM_My_partition is %d, "
42                "CkMyPe() is %d, migrate_test is %d\n",
43                rank, CkMyPe(), migrate_test);
44         //fflush(stdout);
45       }
46
47       MPI_Barrier(MPI_COMM_WORLD);
48
49       CkPrintf("Done with step %d\n", step);
50       //fflush(stdout);
51     }
52
53
54     MPI_Barrier(MPI_COMM_WORLD);
55     CkPrintf("done migrating\n");
56     MPI_Barrier(MPI_COMM_WORLD);
57
58   }
59
60   if (rank==0) CkPrintf("All tests passed\n");
61   MPI_Finalize();
62   return 0;
63 }