CPAC+Øvelse+10

Vi skal lave et lille program som laver en matrix multiplikatior. Vi skal teste hvor lang tid det tager at udføre, hvorefter vi skal forsøge at optimere koden i forhold til cachen. code format="cpp" int main { int i, j, k;  static int N = 150; int res[N][N], mul1[N][N], mul2[N][N]; for (i = 0; i < N; ++i) for (j = 0; j < N; ++j) {     mul1[i][j] = i + j;      mul2[i][j] = i + j;    } for (i = 0; i < N; ++i) for (j = 0; j < N; ++j) for (k = 0; k < N; ++k) res[i][j] += mul1[i][k] * mul2[k][j]; return 0; } code Problemet med at vælge en for stor matrix, er at vi ikke har nok Ram til at håndtere så store matrix. Her har vi brugt den almindelig måde at kompilere vores lille program på.
 * Vælg en fornuftig størrelse af dine matricer. Hvad kan problemet være ved at vælge f.eks en 1000x1000 matrice?**

code root@DevKit8000:~# time ./matrix real   0m 0.51s user   0m 0.50s sys   0m 0.00s code

Her har vi brugt GCC kompilerens optimerings parametre (-O1) code root@DevKit8000:~# time ./matrixO1 real   0m 0.11s user   0m 0.10s sys   0m 0.00s code

Her har vi brugt GCC kompilerens optimerings parametre (-O2) code root@DevKit8000:~# time ./matrixO2 real   0m 0.06s user   0m 0.06s sys   0m 0.00s code Dermed kan vi se at det er hurtigere at eksekvere programmet når vi kompiler med optimerings parameter.