xref: /llvm-project/polly/docs/experiments/matmul/matmul.c (revision fe7bd34b79e59e2af209890918c01648ce4b9542)
1*fe7bd34bSMichael Kruse #include <stdio.h>
2*fe7bd34bSMichael Kruse 
3*fe7bd34bSMichael Kruse #define N 1536
4*fe7bd34bSMichael Kruse float A[N][N];
5*fe7bd34bSMichael Kruse float B[N][N];
6*fe7bd34bSMichael Kruse float C[N][N];
7*fe7bd34bSMichael Kruse 
init_array()8*fe7bd34bSMichael Kruse void init_array()
9*fe7bd34bSMichael Kruse {
10*fe7bd34bSMichael Kruse     int i, j;
11*fe7bd34bSMichael Kruse 
12*fe7bd34bSMichael Kruse     for (i = 0; i < N; i++) {
13*fe7bd34bSMichael Kruse         for (j = 0; j < N; j++) {
14*fe7bd34bSMichael Kruse             A[i][j] = (1+(i*j)%1024)/2.0;
15*fe7bd34bSMichael Kruse             B[i][j] = (1+(i*j)%1024)/2.0;
16*fe7bd34bSMichael Kruse         }
17*fe7bd34bSMichael Kruse     }
18*fe7bd34bSMichael Kruse }
19*fe7bd34bSMichael Kruse 
print_array()20*fe7bd34bSMichael Kruse void print_array()
21*fe7bd34bSMichael Kruse {
22*fe7bd34bSMichael Kruse     int i, j;
23*fe7bd34bSMichael Kruse 
24*fe7bd34bSMichael Kruse     for (i = 0; i < N; i++) {
25*fe7bd34bSMichael Kruse         for (j = 0; j < N; j++) {
26*fe7bd34bSMichael Kruse             fprintf(stdout, "%lf ", C[i][j]);
27*fe7bd34bSMichael Kruse             if (j%80 == 79) fprintf(stdout, "\n");
28*fe7bd34bSMichael Kruse         }
29*fe7bd34bSMichael Kruse         fprintf(stdout, "\n");
30*fe7bd34bSMichael Kruse     }
31*fe7bd34bSMichael Kruse }
32*fe7bd34bSMichael Kruse 
main()33*fe7bd34bSMichael Kruse int main()
34*fe7bd34bSMichael Kruse {
35*fe7bd34bSMichael Kruse     int i, j, k;
36*fe7bd34bSMichael Kruse     double t_start, t_end;
37*fe7bd34bSMichael Kruse 
38*fe7bd34bSMichael Kruse     init_array();
39*fe7bd34bSMichael Kruse 
40*fe7bd34bSMichael Kruse     for (i = 0; i < N; i++) {
41*fe7bd34bSMichael Kruse         for (j = 0; j < N; j++) {
42*fe7bd34bSMichael Kruse             C[i][j] = 0;
43*fe7bd34bSMichael Kruse             for (k = 0; k < N; k++)
44*fe7bd34bSMichael Kruse                 C[i][j] = C[i][j] + A[i][k] * B[k][j];
45*fe7bd34bSMichael Kruse         }
46*fe7bd34bSMichael Kruse     }
47*fe7bd34bSMichael Kruse 
48*fe7bd34bSMichael Kruse #ifdef TEST
49*fe7bd34bSMichael Kruse     print_array();
50*fe7bd34bSMichael Kruse #endif
51*fe7bd34bSMichael Kruse     return 0;
52*fe7bd34bSMichael Kruse }
53