#include "mpi.h"
#include <stdio.h>
+#include "instr/instr.h"
+
+#define DATATOSENT 100000
int main(int argc, char *argv[])
{
int rank, numprocs, i;
- MPI_Init(&argc,&argv);
+ MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
/////////////////////////////////////////
////////////////// RANK 0
///////////////////////////////////
- if (rank == 0){
+ if (rank == 0) {
MPI_Request request;
MPI_Status status;
- MPI_Request req[2*N];
- MPI_Status sta[2*N];
- int r;
- if (A){
- MPI_Isend(&rank, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &request);
- MPI_Wait (&request, &status);
+ 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);
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (B){
- MPI_Send(&rank, 1, MPI_INT, 1, tag, MPI_COMM_WORLD);
+ if (B) {
+ TRACE_smpi_set_category("B");
+ MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (C){
- for (i = 0; i < N; i++){
- MPI_Isend(&rank, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
+ 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]);
+ for (i = 0; i < N; i++) {
+ MPI_Wait(&req[i], &sta[i]);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (D){
- for (i = 0; i < N; i++){
- MPI_Isend(&rank, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
+ 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++){
+ for (i = 0; i < N; i++) {
int completed;
- MPI_Waitany (N, req, &completed, sta);
+ MPI_Waitany(N, req, &completed, sta);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (E){
- for (i = 0; i < N; i++){
- MPI_Send(&rank, 1, MPI_INT, 1, tag, 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);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (F){
- for (i = 0; i < N; i++){
- MPI_Send(&rank, 1, MPI_INT, 1, tag, 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);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (G){
- for (i = 0; i < N; i++){
- MPI_Isend(&rank, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
+ 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);
+ MPI_Waitall(N, req, sta);
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (H){
- for (i = 0; i < N; i++){
- MPI_Send(&rank, 1, MPI_INT, 1, tag, MPI_COMM_WORLD);
+ if (H) {
+ TRACE_smpi_set_category("H");
+ for (i = 0; i < N; i++) {
+ MPI_Send(r, DATATOSENT, MPI_INT, 1, tag, MPI_COMM_WORLD);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (I){
- for (i = 0; i < 2*N; i++){
- if (i < N){
- MPI_Send(&rank, 1, MPI_INT, 2, tag, MPI_COMM_WORLD);
- }else{
- MPI_Send(&rank, 1, MPI_INT, 1, tag, 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, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
- }else{
- MPI_Irecv(&r, 1, MPI_INT, 2, tag, MPI_COMM_WORLD, &req[i]);
+ 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]);
}
}
- MPI_Waitall (2*N, req, sta);
+ MPI_Waitall(2 * N, req, sta);
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (J){
- for (i = 0; i < N; i++){
- MPI_Isend(&rank, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &req[i]);
+ 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++){
+ for (i = 0; i < N; i++) {
int flag;
- MPI_Test (&req[i], &flag, &sta[i]);
+ MPI_Test(&req[i], &flag, &sta[i]);
}
- for (i = 0; i < N; i++){
- MPI_Wait (&req[i], &sta[i]);
+ for (i = 0; i < N; i++) {
+ MPI_Wait(&req[i], &sta[i]);
}
}
-
/////////////////////////////////////////
////////////////// RANK 1
///////////////////////////////////
- }else if (rank == 1){
+ } else if (rank == 1) {
MPI_Request request;
MPI_Status status;
MPI_Request req[N];
MPI_Status sta[N];
- int r;
+ int *r = (int *) malloc(sizeof(int) * DATATOSENT);
- if (A){
- MPI_Recv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &status);
+ if (A) {
+ TRACE_smpi_set_category("A");
+ MPI_Recv(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD, &status);
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (B){
- MPI_Irecv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &request);
- MPI_Wait (&request, &status);
+ if (B) {
+ 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);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (C){
- for (i = 0; i < N; i++){
- MPI_Recv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
+ 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]);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (D){
- for (i = 0; i < N; i++){
- MPI_Recv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
+ 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]);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (E){
- for (i = 0; i < N; i++){
- MPI_Irecv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+ 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]);
+ for (i = 0; i < N; i++) {
+ MPI_Wait(&req[i], &sta[i]);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (F){
- for (i = 0; i < N; i++){
- MPI_Irecv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+ 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++){
+ for (i = 0; i < N; i++) {
int completed;
- MPI_Waitany (N, req, &completed, sta);
+ MPI_Waitany(N, req, &completed, sta);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (G){
- for (i = 0; i < N; i++){
- MPI_Recv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &sta[i]);
+ 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]);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (H){
- for (i = 0; i < N; i++){
- MPI_Irecv(&rank, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+ 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);
+ MPI_Waitall(N, req, sta);
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (I){
- for (i = 0; i < N; i++){
- MPI_Irecv(&rank, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+ 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);
+ MPI_Waitall(N, req, sta);
- MPI_Barrier (MPI_COMM_WORLD);
- for (i = 0; i < N; i++){
- MPI_Isend(&rank, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+ 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);
+ MPI_Waitall(N, req, sta);
// for (i = 0; i < N; i++){
// MPI_Wait (&req[i], &sta[i]);
// }
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- if (J){
- for (i = 0; i < N; i++){
- MPI_Irecv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+ 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++){
+ for (i = 0; i < N; i++) {
int flag;
- MPI_Test (&req[i], &flag, &sta[i]);
+ MPI_Test(&req[i], &flag, &sta[i]);
}
- for (i = 0; i < N; i++){
- MPI_Wait (&req[i], &sta[i]);
+ for (i = 0; i < N; i++) {
+ MPI_Wait(&req[i], &sta[i]);
}
}
-
/////////////////////////////////////////
////////////////// RANK 2
///////////////////////////////////
- }else if (rank == 2){
+ } else if (rank == 2) {
// MPI_Request request;
// MPI_Status status;
MPI_Request req[N];
MPI_Status sta[N];
- int r;
+ 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);
- if (I){
- for (i = 0; i < N; i++){
- MPI_Irecv(&r, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &req[i]);
+ 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);
+ 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++){
+ for (i = 0; i < N; i++) {
int completed;
- MPI_Waitany (N, req, &completed, sta);
+ MPI_Waitany(N, req, &completed, sta);
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
- for (i = 0; i < N; i++){
- MPI_Send(&rank, 1, MPI_INT, 0, tag, MPI_COMM_WORLD);
+ for (i = 0; i < N; i++) {
+ MPI_Send(r, DATATOSENT, MPI_INT, 0, tag, MPI_COMM_WORLD);
}
}
- MPI_Barrier (MPI_COMM_WORLD);
- if (J){}
+ MPI_Barrier(MPI_COMM_WORLD);
+ if (J) {
+ }
}
- MPI_Barrier (MPI_COMM_WORLD);
+ MPI_Barrier(MPI_COMM_WORLD);
MPI_Finalize();
return 0;
}