+++ /dev/null
-/* $Id$ */
-
-/* chrono - demo of GRAS benchmarking features */
-
-/* Copyright (c) 2005 Martin Quinson, Arnaud Legrand. All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * 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");
-
-#include <cblas.h>
-void cblas_dgemm(const enum CBLAS_ORDER Order,
- const enum CBLAS_TRANSPOSE TransA,
- const enum CBLAS_TRANSPOSE TransB, const int M,
- const int N, const int K, const double alpha,
- const double *A, const int lda, const double *B,
- const int ldb, const double beta, double *C,
- const int ldc);
-
-
-/* Function prototypes */
-static int mat_mult(int n)
-{
- int i,j,k,l;
- double *A,*B,*C;
- double start = 0.0;
- double now = 0.0;
-
- A = malloc(n*n*sizeof(double));
- B = malloc(n*n*sizeof(double));
- C = malloc(n*n*sizeof(double));
-
- start=now=gras_os_time();
-
- INFO1("Matrix size: %d",n);
-/* INFO1("Before computation: %lg", start); */
-
- for(l=0; l<40; 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;
- }
-
- cblas_dgemm(CblasRowMajor,
- CblasNoTrans, CblasNoTrans, n, n, n,
- 1.0, A, n, B, n, 0.0, C, n);
- GRAS_BENCH_ONCE_RUN_ONCE_END();
- now=gras_os_time()-now;
-/* INFO2("Iteration %d : %lg ", l, now); */
- }
-
- now=gras_os_time()-start;
- INFO1("Duration: %lg ", now);
-
- free(A);
- free(B);
- free(C);
-}
-
-int multiplier (int argc,char *argv[])
-{
- gras_init(&argc, argv, NULL);
-
- mat_mult(10);
- mat_mult(20);
- mat_mult(30);
- mat_mult(40);
- mat_mult(50);
- mat_mult(75);
- mat_mult(100);
- mat_mult(300);
- mat_mult(500);
- mat_mult(750);
- mat_mult(1000);
-
- return 0;
-}