Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix example (bummer)
[simgrid.git] / examples / smpi / trace / trace.c
index 87e87ca..d995984 100644 (file)
 
 int main(int argc, char *argv[])
 {
-  int rank, numprocs, i;
+  int rank;
+  int numprocs;
 
   MPI_Init(&argc, &argv);
   MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 
-  //Tests: 
-  //A: 0(isend -> wait) with 1(recv)
-  int A = 1;
-  //B: 0(send) with 1(irecv -> wait)
-  int B = 1;
-  //C: 0(N * isend -> N * wait) with 1(N * recv)
-  int C = 1;
-  //D: 0(N * isend -> N * waitany) with 1(N * recv)
-  int D = 1;
-  //E: 0(N*send) with 1(N*irecv, N*wait)
-  int E = 1;
-  //F: 0(N*send) with 1(N*irecv, N*waitany)
-  int F = 1;
-  //G: 0(N* isend -> waitall) with 1(N*recv)
-  int G = 1;
-  //H: 0(N*send) with 1(N*irecv, waitall)
-  int H = 1;
-  //I: 0(2*N*send, 2*N*Irecv, Waitall) with
-  //   1(N*irecv, waitall, N*isend, N*waitany) with 
-  //   2(N*irecv, N*waitany, N*isend, waitall)
-  int I = 1;
-  //J: 0(N*isend, N*test, N*wait) with (N*irecv, N*test, N*wait)
-  int J = 1;
-
+  /** Tests:
+  * A: 0(isend -> wait) with 1(recv)
+  * B: 0(send) with 1(irecv -> wait)
+  * C: 0(N * isend -> N * wait) with 1(N * recv)
+  * D: 0(N * isend -> N * waitany) with 1(N * recv)
+  * E: 0(N*send) with 1(N*irecv, N*wait)
+  * F: 0(N*send) with 1(N*irecv, N*waitany)
+  * G: 0(N* isend -> waitall) with 1(N*recv)
+  * H: 0(N*send) with 1(N*irecv, waitall)
+  * I: 0(2*N*send, 2*N*Irecv, Waitall) with
+  *    1(N*irecv, waitall, N*isend, N*waitany) with
+  *    2(N*irecv, N*waitany, N*isend, waitall)
+  * J: 0(N*isend, N*test, N*wait) with (N*irecv, N*test, N*wait)
+  s*/
   int N = 13;
 
   int tag = 12345;
@@ -54,110 +45,92 @@ int main(int argc, char *argv[])
     MPI_Request req[2 * N];
     MPI_Status sta[2 * N];
     int *r = (int *) malloc(sizeof(int) * DATATOSENT);
-    if (A) {
-      TRACE_smpi_set_category("A");
-      MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &request);
-      MPI_Wait(&request, &status);
-    }
+
+    /** Test A */
+    TRACE_smpi_set_category("A");
+    MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &request);
+    MPI_Wait(&request, &status);
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (B) {
-      TRACE_smpi_set_category("B");
-      MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
+    /** Test B */
+    TRACE_smpi_set_category("B");
+    MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
+    MPI_Barrier(MPI_COMM_WORLD);
+
+    /** Test C */
+    TRACE_smpi_set_category("C");
+    for (int i = 0; i < N; i++) {
+      MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      MPI_Wait(&req[i], &sta[i]);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (C) {
-      TRACE_smpi_set_category("C");
-      for (i = 0; i < N; i++) {
-        MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      for (i = 0; i < N; i++) {
-        MPI_Wait(&req[i], &sta[i]);
-      }
+    TRACE_smpi_set_category("D");
+    for (int i = 0; i < N; i++) {
+      MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      int completed;
+      MPI_Waitany(N, req, &completed, sta);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (D) {
-      TRACE_smpi_set_category("D");
-      for (i = 0; i < N; i++) {
-        MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      for (i = 0; i < N; i++) {
-        int completed;
-        MPI_Waitany(N, req, &completed, sta);
-      }
+    TRACE_smpi_set_category("E");
+    for (int i = 0; i < N; i++) {
+      MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (E) {
-      TRACE_smpi_set_category("E");
-      for (i = 0; i < N; i++) {
-        MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
-      }
+    TRACE_smpi_set_category("F");
+    for (int i = 0; i < N; i++) {
+      MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (F) {
-      TRACE_smpi_set_category("F");
-      for (i = 0; i < N; i++) {
-        MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
-      }
+    TRACE_smpi_set_category("G");
+    for (int i = 0; i < N; i++) {
+      MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
     }
+    MPI_Waitall(N, req, sta);
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (G) {
-      TRACE_smpi_set_category("G");
-      for (i = 0; i < N; i++) {
-        MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      MPI_Waitall(N, req, sta);
+    TRACE_smpi_set_category("H");
+    for (int i = 0; i < N; i++) {
+      MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (H) {
-      TRACE_smpi_set_category("H");
-      for (i = 0; i < N; i++) {
+    TRACE_smpi_set_category("I");
+    for (int i = 0; i < 2 * N; i++) {
+      if (i < N) {
+        MPI_Send(r, DATATOSENT, MPI_INT, 2, tag, MPI_COMM_WORLD);
+      } else {
         MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
       }
     }
     MPI_Barrier(MPI_COMM_WORLD);
-
-    if (I) {
-      TRACE_smpi_set_category("I");
-      for (i = 0; i < 2 * N; i++) {
-        if (i < N) {
-          MPI_Send(r, DATATOSENT, MPI_INT, 2, tag, MPI_COMM_WORLD);
-        } else {
-          MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
-        }
-      }
-      MPI_Barrier(MPI_COMM_WORLD);
-      for (i = 0; i < 2 * N; i++) {
-        if (i < N) {
-          MPI_Irecv(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD,
-                    &req[i]);
-        } else {
-          MPI_Irecv(r, DATATOSENT, MPI_INT, 2, tag, MPI_COMM_WORLD,
-                    &req[i]);
-        }
+    for (int i = 0; i < 2 * N; i++) {
+      if (i < N) {
+        MPI_Irecv(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
+      } else {
+        MPI_Irecv(r, DATATOSENT, MPI_INT, 2, tag, MPI_COMM_WORLD, &req[i]);
       }
-      MPI_Waitall(2 * N, req, sta);
     }
+    MPI_Waitall(2 * N, req, sta);
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (J) {
-      TRACE_smpi_set_category("J");
-      for (i = 0; i < N; i++) {
-        MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      for (i = 0; i < N; i++) {
-        int flag;
-        MPI_Test(&req[i], &flag, &sta[i]);
-      }
-      for (i = 0; i < N; i++) {
-        MPI_Wait(&req[i], &sta[i]);
-      }
+    TRACE_smpi_set_category("J");
+    for (int i = 0; i < N; i++) {
+      MPI_Isend(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      int flag;
+      MPI_Test(&req[i], &flag, &sta[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      MPI_Wait(&req[i], &sta[i]);
     }
     free(r);
 /////////////////////////////////////////
@@ -170,159 +143,114 @@ int main(int argc, char *argv[])
     MPI_Status sta[N];
     int *r = (int *) malloc(sizeof(int) * DATATOSENT);
 
-    if (A) {
-      TRACE_smpi_set_category("A");
-      MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &status);
-    }
+    TRACE_smpi_set_category("A");
+    MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &status);
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (B) {
-      TRACE_smpi_set_category("B");
-      MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &request);
-      MPI_Wait(&request, &status);
-    }
+    TRACE_smpi_set_category("B");
+    MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &request);
+    MPI_Wait(&request, &status);
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (C) {
-      TRACE_smpi_set_category("C");
-      for (i = 0; i < N; i++) {
-        MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
-      }
+    TRACE_smpi_set_category("C");
+    for (int i = 0; i < N; i++) {
+      MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (D) {
-      TRACE_smpi_set_category("D");
-      for (i = 0; i < N; i++) {
-        MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
-      }
+    TRACE_smpi_set_category("D");
+    for (int i = 0; i < N; i++) {
+      MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (E) {
-      TRACE_smpi_set_category("E");
-      for (i = 0; i < N; i++) {
-        MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      for (i = 0; i < N; i++) {
-        MPI_Wait(&req[i], &sta[i]);
-      }
+    TRACE_smpi_set_category("E");
+    for (int i = 0; i < N; i++) {
+      MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      MPI_Wait(&req[i], &sta[i]);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (F) {
-      TRACE_smpi_set_category("F");
-      for (i = 0; i < N; i++) {
-        MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      for (i = 0; i < N; i++) {
-        int completed;
-        MPI_Waitany(N, req, &completed, sta);
-      }
+    TRACE_smpi_set_category("F");
+    for (int i = 0; i < N; i++) {
+      MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      int completed;
+      MPI_Waitany(N, req, &completed, sta);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (G) {
-      TRACE_smpi_set_category("G");
-      for (i = 0; i < N; i++) {
-        MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
-      }
+    TRACE_smpi_set_category("G");
+    for (int i = 0; i < N; i++) {
+      MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
     }
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (H) {
-      TRACE_smpi_set_category("H");
-      for (i = 0; i < N; i++) {
-        MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      MPI_Waitall(N, req, sta);
+    TRACE_smpi_set_category("H");
+    for (int i = 0; i < N; i++) {
+      MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
     }
+    MPI_Waitall(N, req, sta);
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (I) {
-      TRACE_smpi_set_category("I");
-      for (i = 0; i < N; i++) {
-        MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      MPI_Waitall(N, req, sta);
+    TRACE_smpi_set_category("I");
+    for (int i = 0; i < N; i++) {
+      MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+    }
+    MPI_Waitall(N, req, sta);
 
-      MPI_Barrier(MPI_COMM_WORLD);
-      for (i = 0; i < N; i++) {
-        MPI_Isend(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      MPI_Waitall(N, req, sta);
-//      for (i = 0; i < N; i++){
-//        MPI_Wait (&req[i], &sta[i]);
-//      }
+    MPI_Barrier(MPI_COMM_WORLD);
+    for (int i = 0; i < N; i++) {
+      MPI_Isend(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
     }
+    MPI_Waitall(N, req, sta);
     MPI_Barrier(MPI_COMM_WORLD);
 
-    if (J) {
-      TRACE_smpi_set_category("J");
-      for (i = 0; i < N; i++) {
-        MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      for (i = 0; i < N; i++) {
-        int flag;
-        MPI_Test(&req[i], &flag, &sta[i]);
-      }
-      for (i = 0; i < N; i++) {
-        MPI_Wait(&req[i], &sta[i]);
-      }
+    TRACE_smpi_set_category("J");
+    for (int i = 0; i < N; i++) {
+      MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      int flag;
+      MPI_Test(&req[i], &flag, &sta[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      MPI_Wait(&req[i], &sta[i]);
     }
     free(r);
 /////////////////////////////////////////
 ////////////////// RANK 2
 ///////////////////////////////////
   } else if (rank == 2) {
-//    MPI_Request request;
-//    MPI_Status status;
     MPI_Request req[N];
     MPI_Status sta[N];
     int *r = (int *) malloc(sizeof(int) * DATATOSENT);
 
-    if (A) {
-    }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (B) {
-    }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (C) {
-    }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (D) {
-    }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (E) {
-    }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (F) {
-    }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (G) {
-    }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (H) {
+    MPI_Barrier(MPI_COMM_WORLD);
+    TRACE_smpi_set_category("I");
+    for (int i = 0; i < N; i++) {
+      MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+    }
+    for (int i = 0; i < N; i++) {
+      int completed;
+      MPI_Waitany(N, req, &completed, sta);
     }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (I) {
-      TRACE_smpi_set_category("I");
-      for (i = 0; i < N; i++) {
-        MPI_Irecv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
-      }
-      for (i = 0; i < N; i++) {
-        int completed;
-        MPI_Waitany(N, req, &completed, sta);
-      }
-      MPI_Barrier(MPI_COMM_WORLD);
 
-      for (i = 0; i < N; i++) {
-        MPI_Send(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD);
-      }
+    for (int i = 0; i < N; i++) {
+      MPI_Send(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD);
     }
     MPI_Barrier(MPI_COMM_WORLD);
-    if (J) {
-    }
     free(r);
   }
   MPI_Barrier(MPI_COMM_WORLD);