X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/16e9cc9c9f1a1aacd1747456a72307ee607079b2..ed26e84f533a3dc510abdc384aee02506ab9798b:/examples/smpi/trace/trace.c diff --git a/examples/smpi/trace/trace.c b/examples/smpi/trace/trace.c index 87e87caa70..d995984fad 100644 --- a/examples/smpi/trace/trace.c +++ b/examples/smpi/trace/trace.c @@ -12,36 +12,27 @@ 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);