From 37a8dabd27df3f3400cbbdc94a2b254917b0ce1c Mon Sep 17 00:00:00 2001
From: Nicolas Fley <nicolas.fley@student.ecp.fr>
Date: Tue, 7 Mar 2017 19:27:31 +0100
Subject: [PATCH] 14.1 finished with allgatherv and commented

---
 prod_mat_vec/bin/Debug/prod_mat_vec.exe | Bin 68072 -> 68730 bytes
 prod_mat_vec/main.c                     | 121 +++++++++++++++++-------
 prod_mat_vec/obj/Debug/main.o           | Bin 6213 -> 6905 bytes
 prod_mat_vec/prod_mat_vec.depend        |   2 +-
 prod_mat_vec/prod_mat_vec.layout        |  10 ++
 5 files changed, 97 insertions(+), 36 deletions(-)
 create mode 100644 prod_mat_vec/prod_mat_vec.layout

diff --git a/prod_mat_vec/bin/Debug/prod_mat_vec.exe b/prod_mat_vec/bin/Debug/prod_mat_vec.exe
index 7d4224c794774bd4bb59b11f23ddb626c5e0b9d2..8e88eef60cc0b0fed0ed4dcb12d5eef57bc02bca 100644
GIT binary patch
delta 12041
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
PWvpOA7c63DEMo!yjmaOP

delta 11275
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

diff --git a/prod_mat_vec/main.c b/prod_mat_vec/main.c
index d2bf2f1..3092c58 100644
--- a/prod_mat_vec/main.c
+++ b/prod_mat_vec/main.c
@@ -3,6 +3,8 @@
 #include <mpi.h>
 #include <time.h>
 
+#define DEBUG 0
+
 /*
 Commands :
 cd 'B:\Mes Documents\progra\calcInt\'
@@ -63,11 +65,13 @@ void prod_mat_vec(int width, int height, float * vector_res, float ** matrix, fl
 
 int main (int argc, char *argv[]) {
     int rank, size, size_prob, w_prob, h_prob, h_base;
-    float * vector;
-    float * vector_tot;
-    float * vector_res;
-    float * vector_res_tot;
-    float ** matrix=0;
+    float * vector; // processus' x vector
+    float * vector_tot; // x vector agregation from all the processus
+    float * vector_res; // product matrix vector's result of the current processus
+    float * vector_res_tot; // y vector agregation from all the processus
+    int * recvcounts; // number of element for each process
+    int * displs; // number of element for each process
+    float ** matrix;
 
     MPI_Status status;
 
@@ -76,62 +80,109 @@ int main (int argc, char *argv[]) {
     MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* get current process id */
     MPI_Comm_size(MPI_COMM_WORLD, &size); /* get number of processes */
 
+    if(DEBUG)
+        printf("proc %d :\n",rank);
+
+    /* Get the user input */
+    size_prob=size*2;
+    if(argc==2){
+        size_prob=atoi(argv[1]);
+        if(rank==0)
+            printf("You have set the size of the matrice at %d.\n",size_prob);
+        if(size_prob==0){
+            size_prob=size*2;
+            printf("You gave a wrong argument for the matrice's size, it has been set as %d by default.\n",size_prob);
+        }
+    }else{
+        if(rank==0)
+            printf("You didn't give any argument the size of the matrice has been set as %d by default.\n",size_prob);
+    }
 
-    printf("proc %d :\n",rank);
-
-    size_prob=8;
-
-    h_base=(size_prob/size)+1; //
+    /* Define the size of the problem */
+    h_base=(size_prob/size)+1; // h_base is the default height given to all the processus except the last one
     if(size_prob%size==0){
-        h_prob=size_prob/size;
+        h_prob=size_prob/size; // h_prob is the processus' problem height
         h_base=h_prob;
     }else{
         if(rank!=size-1)
             h_prob=(size_prob/size)+1;
         else{
-            h_prob=size_prob%size;
+            h_prob=size_prob%h_base;
         }
     }
-    w_prob=size_prob;
-    printf("height %d : %d\n",rank,h_prob);
+    w_prob=size_prob; // w_prob is not dependent of the number of processus.
+    if(DEBUG)
+        printf("height %d : %d\n",rank,h_prob);
 
-    vector=malloc(sizeof(float)*h_base);
+    /* Variables' allocation */
+    vector=malloc(sizeof(float)*h_prob);
     vector_tot=malloc(sizeof(float)*size_prob);
-    vector_res=malloc(sizeof(float)*h_base);
+    vector_res=malloc(sizeof(float)*h_prob);
     vector_res_tot=malloc(sizeof(float)*size_prob);
+    recvcounts=malloc(sizeof(int)*size);
+    displs=malloc(sizeof(int)*size);
 
-    matrix = (int **)malloc(w_prob * sizeof(float*));
-    for(int i=0;i<h_base;i++){
-        matrix[i]=malloc(sizeof(float)*w_prob);
+    matrix = (float **)malloc(h_prob * sizeof(float));
+    for(int i=0;i<h_prob;i++){
+        matrix[i]=(float *)malloc(sizeof(float)*w_prob);
+    }
+    /* Main variables initialisation */
+    initProb(w_prob, h_prob, matrix, vector, rank);
+    MPI_Allgather(&h_prob, 1, MPI_INT, recvcounts, 1, MPI_INT, MPI_COMM_WORLD); // let's get this information from all the processus (it's more flexible as a block)
+    int displ = 0;
+    for(int i=0;i!=rank;i++)
+        displ+=recvcounts[i];
+    MPI_Allgather(&displ, 1, MPI_INT, displs, 1, MPI_INT, MPI_COMM_WORLD); // let's get this information from all the processus (it's more flexible as a block)
+
+    /* Show some debug informations to check this initialisation */
+    if(DEBUG)
+        printMatrix(w_prob, h_prob, matrix);
+    if(DEBUG)
+        printVector(h_prob, vector);
+    if(rank==0){
+        if(DEBUG){
+            printf("buf_count_all : \n");
+            for(int i=0;i!=size;i++){
+                printf("%d - ",recvcounts[i]);
+                printf("%d\n",displs[i]);
+            }
+        }
+    }
+    /* Share the x vector through all trhe processus */
+    MPI_Allgatherv(vector,h_prob,MPI_FLOAT,vector_tot,recvcounts,displs,MPI_FLOAT, MPI_COMM_WORLD);
+    if(DEBUG){
+        printf("Vector total %d : \n",rank);
+        printVector(size_prob,vector_tot);
     }
-    initProb(w_prob,h_prob,matrix,vector,rank);
-
-    printMatrix(w_prob,h_prob,matrix);
-    printVector(h_prob,vector);
-
-    MPI_Allgather(vector,h_prob,MPI_FLOAT,vector_tot,h_base,MPI_FLOAT, MPI_COMM_WORLD);
-    printf("Vector total %d : \n",rank);
-    printVector(size_prob,vector_tot);
 
+    /* Perform the product vector matrix */
     prod_mat_vec(w_prob,h_prob,vector_res,matrix,vector_tot);
 
-    printf("Vector res %d : \n",rank);
-    printVector(h_prob,vector_res);
-
-    MPI_Allgather(vector_res,h_prob,MPI_FLOAT,vector_res_tot,h_base,MPI_FLOAT, MPI_COMM_WORLD);
+    if(DEBUG){
+        printf("Vector res %d : \n",rank);
+        printVector(h_prob,vector_res);
+    }
 
+    /* Gather the result product vector matrix's result through all the processus */
+    MPI_Allgatherv(vector_res,h_prob,MPI_FLOAT,vector_res_tot,recvcounts,displs,MPI_FLOAT, MPI_COMM_WORLD);
+    /* And show only one time the final vector */
     if(rank==0){
-        printf("prod_vec_matrice = \n");
+        printf("final vector tot : \n");
         printVector(size_prob,vector_res_tot);
     }
 
-    /*MPI_Send(&test,1,MPI_DOUBLE,0,10,MPI_COMM_WORLD);
-    MPI_Recv(&test,1,MPI_DOUBLE,0,10,MPI_COMM_WORLD,&status);*/
-
+    /* Let's free all the memory allocated */
     free(vector);
+    free(vector_tot);
+    free(vector_res);
+    free(vector_res_tot);
+    free(recvcounts);
+    free(displs);
     for(int i=0;i<h_prob;i++){
         free(matrix[i]);
     }
+    free(matrix);
 
+    /* And finalize */
     MPI_Finalize();
 }
diff --git a/prod_mat_vec/obj/Debug/main.o b/prod_mat_vec/obj/Debug/main.o
index 4cd9353604a54bfa8653c73455f2280b0073cb72..3c48403841ef68315b839812c08864bf2315d703 100644
GIT binary patch
delta 3410
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

delta 2798
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
FGyu)fLG%Cs

diff --git a/prod_mat_vec/prod_mat_vec.depend b/prod_mat_vec/prod_mat_vec.depend
index 7b8e971..20a876c 100644
--- a/prod_mat_vec/prod_mat_vec.depend
+++ b/prod_mat_vec/prod_mat_vec.depend
@@ -1,5 +1,5 @@
 # depslib dependency file v1.0
-1488577259 source:b:\mes documents\progra\calcint\prod_mat_vec\main.c
+1488910513 source:b:\mes documents\progra\calcint\prod_mat_vec\main.c
 	<stdio.h>
 	<stdlib.h>
 	<mpi.h>
diff --git a/prod_mat_vec/prod_mat_vec.layout b/prod_mat_vec/prod_mat_vec.layout
new file mode 100644
index 0000000..151bf45
--- /dev/null
+++ b/prod_mat_vec/prod_mat_vec.layout
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_layout_file>
+	<FileVersion major="1" minor="0" />
+	<ActiveTarget name="Debug" />
+	<File name="main.c" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+		<Cursor>
+			<Cursor1 position="184" topLine="115" />
+		</Cursor>
+	</File>
+</CodeBlocks_layout_file>
-- 
GitLab