diff options
author | Andrew Waterman <waterman@eecs.berkeley.edu> | 2014-02-06 01:36:26 -0800 |
---|---|---|
committer | Andrew Waterman <waterman@eecs.berkeley.edu> | 2014-02-06 01:36:26 -0800 |
commit | 71330800b89cb4c6ae8716a7e78bdcf574fe04ab (patch) | |
tree | 5395bdf46cccee8f6c94538b63ab161fa41648db /benchmarks/mt-matmul | |
parent | 6fdd12c130d0c0c13934364a4dfe12d8dcf28e27 (diff) | |
download | riscv-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.mk | 5 | ||||
-rw-r--r-- | benchmarks/mt-matmul/mt-matmul.c | 51 |
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); } - |