Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Regenerate yet another time the Makefile.in
[simgrid.git] / examples / gras / chrono / chrono.c
index c0c8888..222d771 100644 (file)
@@ -8,6 +8,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "gras.h"
+#include "xbt/log.h"
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(Chrono,"Messages specific to this example");
 
@@ -17,29 +18,65 @@ int multiplier (int argc,char *argv[]);
 
 int multiplier (int argc,char *argv[])
 {
-  int i,j,k;
+  int i,j,k,l;
   double *A,*B,*C;
-  int n = 500;
-  gras_init(&argc, argv, NULL);
-  
+  int n = 100;
+  double start = 0.0;
+  double now = 0.0;
+
+  gras_init(&argc, argv);
+
   A = malloc(n*n*sizeof(double));
   B = malloc(n*n*sizeof(double));
   C = malloc(n*n*sizeof(double));
 
-  INFO1("Before computation : %lg", gras_os_time());
-  for(i=0; i<n; i++)
-    for(j=0; j<n; j++) {
-      A[i*n+j]=2/n;
-      B[i*n+j]=1/n;
-      C[i*n+j]=0.0;
-    }
+  start=now=gras_os_time();
+
+  INFO1("Begin matrix multiplication loop (time: %g)", start);
+
+  for(l=0; l<4; l++) {
+    now=gras_os_time();
+    GRAS_BENCH_ONCE_RUN_ONCE_BEGIN();
+    for(i=0; i<n; i++)
+      for(j=0; j<n; j++) {
+       A[i*n+j]=2/n;
+       B[i*n+j]=1/n;
+       C[i*n+j]=0.0;
+      }
+    
+    for(i=0; i<n; i++)
+      for(j=0; j<n; j++)
+       for(k=0; k<n; k++)      
+         C[i*n+j] += A[i*n+k]*B[k*n+j];
+    
+    GRAS_BENCH_ONCE_RUN_ONCE_END();
+    now=gras_os_time()-now;
+    INFO2("Iteration %d : %g ", l, now);
+  }
 
-  for(i=0; i<n; i++)
-    for(j=0; j<n; j++)
-      for(k=0; k<n; k++)       
-       C[i*n+j] += A[i*n+k]*B[k*n+j];
+  now=gras_os_time()-start;
+  INFO2("End matrix multiplication loop (time: %g; Duration: %g)", gras_os_time(), now);
 
-  INFO1("After computation : %lg", gras_os_time());
+  start=now=gras_os_time();
+  INFO1("Begin malloc loop (time: %g)", start);
+  for(l=0; l<4; l++) {
+    now=gras_os_time();
+    GRAS_BENCH_ONCE_RUN_ONCE_BEGIN();
+     free(A);
+     A = malloc(n*n*sizeof(double));
+    GRAS_BENCH_ONCE_RUN_ONCE_END();
+    now=gras_os_time()-now;
+    INFO2("Iteration %d : %g ", l, now);
+  }
+   
+  start=now=gras_os_time();
+  INFO1("Begin integer incrementation loop (time: %g)", start);
+  for(l=0; l<4; l++) {
+    GRAS_BENCH_ONCE_RUN_ONCE_BEGIN();
+    j++;
+    GRAS_BENCH_ONCE_RUN_ONCE_END();
+  }
 
+  gras_exit();
   return 0;
 }