and store the result back to the file system!
*/
+#include <stdio.h>
#include <syscall.h>
-/* You should define this to be large enough that the arrays
+/* You should define DIM to be large enough that the arrays
don't fit in physical memory.
- Dim Memory
- --- --------
- 20 93 kB
- 30 316 kB
- 40 750 kB
- 50 1,464 kB
- 60 2,531 kB
- 70 4,019 kB
- 80 6,000 kB
- 90 8,542 kB
- 100 11,718 kB */
-#define Dim 20
-
-int A[Dim][Dim];
-int B[Dim][Dim];
-int C[Dim][Dim];
+ Dim Memory
+ ------ --------
+ 16 3 kB
+ 64 48 kB
+ 128 192 kB
+ 256 768 kB
+ 512 3,072 kB
+ 1,024 12,288 kB
+ 2,048 49,152 kB
+ 4,096 196,608 kB
+ 8,192 786,432 kB
+ 16,384 3,145,728 kB */
+#define DIM 128
+
+int A[DIM][DIM];
+int B[DIM][DIM];
+int C[DIM][DIM];
int
main (void)
int i, j, k;
/* Initialize the matrices. */
- for (i = 0; i < Dim; i++)
- for (j = 0; j < Dim; j++)
+ for (i = 0; i < DIM; i++)
+ for (j = 0; j < DIM; j++)
{
A[i][j] = i;
B[i][j] = j;
}
/* Multiply matrices. */
- for (i = 0; i < Dim; i++)
- for (j = 0; j < Dim; j++)
- for (k = 0; k < Dim; k++)
+ for (i = 0; i < DIM; i++)
+ for (j = 0; j < DIM; j++)
+ for (k = 0; k < DIM; k++)
C[i][j] += A[i][k] * B[k][j];
/* Done. */
- exit (C[Dim - 1][Dim - 1]);
+ exit (C[DIM - 1][DIM - 1]);
}