summaryrefslogtreecommitdiffstats
path: root/polly/www/experiments/matmul/matmul.c
diff options
context:
space:
mode:
Diffstat (limited to 'polly/www/experiments/matmul/matmul.c')
-rw-r--r--polly/www/experiments/matmul/matmul.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/polly/www/experiments/matmul/matmul.c b/polly/www/experiments/matmul/matmul.c
new file mode 100644
index 00000000000..edb2455ae8f
--- /dev/null
+++ b/polly/www/experiments/matmul/matmul.c
@@ -0,0 +1,52 @@
+#include <stdio.h>
+
+#define N 1536
+float A[N][N];
+float B[N][N];
+float C[N][N];
+
+void init_array()
+{
+ int i, j;
+
+ for (i=0; i<N; i++) {
+ for (j=0; j<N; j++) {
+ A[i][j] = (1+(i*j)%1024)/2.0;
+ B[i][j] = (1+(i*j)%1024)/2.0;
+ }
+ }
+}
+
+void print_array()
+{
+ int i, j;
+
+ for (i=0; i<N; i++) {
+ for (j=0; j<N; j++) {
+ fprintf(stdout, "%lf ", C[i][j]);
+ if (j%80 == 79) fprintf(stdout, "\n");
+ }
+ fprintf(stdout, "\n");
+ }
+}
+
+int main()
+{
+ int i, j, k;
+ double t_start, t_end;
+
+ init_array();
+
+ for(i=0; i<N; i++) {
+ for(j=0; j<N; j++) {
+ C[i][j] = 0;
+ for(k=0; k<N; k++)
+ C[i][j] = C[i][j] + A[i][k] * B[k][j];
+ }
+ }
+
+#ifdef TEST
+ print_array();
+#endif
+ return 0;
+}
OpenPOWER on IntegriCloud