aboutsummaryrefslogtreecommitdiff
path: root/benchmarks/mt-matmul
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@eecs.berkeley.edu>2014-02-06 01:36:26 -0800
committerAndrew Waterman <waterman@eecs.berkeley.edu>2014-02-06 01:36:26 -0800
commit71330800b89cb4c6ae8716a7e78bdcf574fe04ab (patch)
tree5395bdf46cccee8f6c94538b63ab161fa41648db /benchmarks/mt-matmul
parent6fdd12c130d0c0c13934364a4dfe12d8dcf28e27 (diff)
downloadriscv-tests-71330800b89cb4c6ae8716a7e78bdcf574fe04ab.zip
riscv-tests-71330800b89cb4c6ae8716a7e78bdcf574fe04ab.tar.gz
riscv-tests-71330800b89cb4c6ae8716a7e78bdcf574fe04ab.tar.bz2
Clean up benchmarks; support uarch-specific counters
Diffstat (limited to 'benchmarks/mt-matmul')
-rw-r--r--benchmarks/mt-matmul/bmark.mk5
-rw-r--r--benchmarks/mt-matmul/mt-matmul.c51
2 files changed, 14 insertions, 42 deletions
diff --git a/benchmarks/mt-matmul/bmark.mk b/benchmarks/mt-matmul/bmark.mk
index 7749951..4b7fcb7 100644
--- a/benchmarks/mt-matmul/bmark.mk
+++ b/benchmarks/mt-matmul/bmark.mk
@@ -10,9 +10,10 @@
mt_matmul_c_src = \
mt-matmul.c \
+ syscalls.c \
mt_matmul_riscv_src = \
- crt-mt.S \
+ crt.S \
mt_matmul_c_objs = $(patsubst %.c, %.o, $(mt_matmul_c_src))
mt_matmul_riscv_objs = $(patsubst %.S, %.o, $(mt_matmul_riscv_src))
@@ -23,7 +24,7 @@ $(mt_matmul_host_bin) : $(mt_matmul_c_src)
mt_matmul_riscv_bin = mt-matmul.riscv
$(mt_matmul_riscv_bin) : $(mt_matmul_c_objs) $(mt_matmul_riscv_objs)
- $(RISCV_LINK_MT) $(mt_matmul_c_objs) $(mt_matmul_riscv_objs) $(RISCV_LINK_OPTS) -o $(mt_matmul_riscv_bin)
+ $(RISCV_LINK) $(mt_matmul_c_objs) $(mt_matmul_riscv_objs) $(RISCV_LINK_OPTS) -o $(mt_matmul_riscv_bin)
junk += $(mt_matmul_c_objs) $(mt_matmul_riscv_objs) \
$(mt_matmul_host_bin) $(mt_matmul_riscv_bin)
diff --git a/benchmarks/mt-matmul/mt-matmul.c b/benchmarks/mt-matmul/mt-matmul.c
index 93f8ea9..e795b50 100644
--- a/benchmarks/mt-matmul/mt-matmul.c
+++ b/benchmarks/mt-matmul/mt-matmul.c
@@ -25,7 +25,7 @@
//--------------------------------------------------------------------------
// Input/Reference Data
-typedef float data_t;
+typedef double data_t;
#include "dataset.h"
@@ -34,6 +34,7 @@ typedef float data_t;
__thread unsigned long coreid;
unsigned long ncores;
+#define ncores ncores
#include "util.h"
@@ -48,41 +49,6 @@ unsigned long ncores;
stringify(code), _c, _c/DIM_SIZE/DIM_SIZE/DIM_SIZE, 10*_c/DIM_SIZE/DIM_SIZE/DIM_SIZE%10, _c/_i, 10*_c/_i%10); \
} while(0)
-
-//--------------------------------------------------------------------------
-// Helper functions
-
-void printArray( char name[], int n, data_t arr[] )
-{
- int i;
- if (coreid != 0)
- return;
-
- printf( " %10s :", name );
- for ( i = 0; i < n; i++ )
- printf( " %3ld ", (long) arr[i] );
- printf( "\n" );
-}
-
-void __attribute__((noinline)) verify(size_t n, const data_t* test, const data_t* correct)
-{
- if (coreid != 0)
- return;
-
- size_t i;
- for (i = 0; i < n; i++)
- {
- if (test[i] != correct[i])
- {
- printf("FAILED test[%d]= %3ld, correct[%d]= %3ld\n",
- i, (long)test[i], i, (long)correct[i]);
- exit(-1);
- }
- }
-
- return;
-}
-
//--------------------------------------------------------------------------
// matmul function
@@ -139,8 +105,11 @@ void thread_entry(int cid, int nc)
// verify
- verify(ARRAY_SIZE, results_data, verify_data);
-
+ int res = verifyDouble(ARRAY_SIZE, results_data, verify_data);
+ if (res)
+ exit(res);
+
+#if 0
// clear results from the first trial
size_t i;
if (coreid == 0)
@@ -159,9 +128,11 @@ void thread_entry(int cid, int nc)
#endif
// verify
- verify(ARRAY_SIZE, results_data, verify_data);
+ res = verify(ARRAY_SIZE, results_data, verify_data);
+ if (res)
+ exit(res);
barrier();
+#endif
exit(0);
}
-