#include #include #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) static int *mat, *vect; static int li; static int n, m; /* Size of the matrice: n lines, m columns */ int init_calc(int size) { int i; n = size; m = size; srand(42); mat = (int *) malloc(n * m * sizeof(int)); if (mat == NULL) { fprintf(stderr, "calc_mat: Unable to allocate memory for matrice calculation\n"); return -1; } vect = (int *) malloc(m * sizeof(int)); if (vect == NULL) { free(mat); fprintf(stderr, "calc_mat: Unable to allocate memory for matrice calculation\n"); return -1; } for (i = 0; i < n * m; i++) mat[i] = rand(); li = 0; return 0; } void *do_calc(void) { int co, p = 0; for (co = 0; co < m; co++) p += mat[li * m + co] * vect[li]; mat[li * m] = p; if (unlikely(++li >= n)) li = 0; return &mat[li * m]; } int end_calc(void) { free(mat); free(vect); return 0; }