diff options
author | Isaac Wu <isaacwu@a5.Millennium.Berkeley.EDU> | 2014-04-19 19:38:51 -0700 |
---|---|---|
committer | Isaac Wu <isaacwu@a5.Millennium.Berkeley.EDU> | 2014-04-19 19:38:51 -0700 |
commit | 2425e5b6f7a7aa7cfa1312a29c7bac81f6be318b (patch) | |
tree | 9cd9bbb3463dae481cdd32e8dd14f7dbf22fc172 | |
parent | 83ed3f519de9929b6551b98677047228a8ab4d0c (diff) | |
download | riscv-tests-2425e5b6f7a7aa7cfa1312a29c7bac81f6be318b.zip riscv-tests-2425e5b6f7a7aa7cfa1312a29c7bac81f6be318b.tar.gz riscv-tests-2425e5b6f7a7aa7cfa1312a29c7bac81f6be318b.tar.bz2 |
Added sdisorder to riscv-tests
-rw-r--r-- | benchmarks/Makefile | 2 | ||||
-rw-r--r-- | benchmarks/sdisorder/bmark.mk | 30 | ||||
-rw-r--r-- | benchmarks/sdisorder/sdisorder.c | 76 |
3 files changed, 108 insertions, 0 deletions
diff --git a/benchmarks/Makefile b/benchmarks/Makefile index 241a933..f0531e8 100644 --- a/benchmarks/Makefile +++ b/benchmarks/Makefile @@ -26,6 +26,7 @@ bmarks = \ dhrystone \ spmv \ mt-vvadd \ + sdisorder \ #vec-fft \ #mt-matmul \ #vec-vvadd \ @@ -43,6 +44,7 @@ bmarks_host = \ vec-vvadd \ vec-cmplxmult \ vec-matmul \ + sdisorder \ #-------------------------------------------------------------------- # Build rules diff --git a/benchmarks/sdisorder/bmark.mk b/benchmarks/sdisorder/bmark.mk new file mode 100644 index 0000000..5f31f82 --- /dev/null +++ b/benchmarks/sdisorder/bmark.mk @@ -0,0 +1,30 @@ +#======================================================================= +# UCB CS250 Makefile fragment for benchmarks +#----------------------------------------------------------------------- +# +# Each benchmark directory should have its own fragment which +# essentially lists what the source files are and how to link them +# into an riscv and/or host executable. All variables should include +# the benchmark name as a prefix so that they are unique. +# + +sdisorder_c_src = \ + sdisorder.c \ + syscalls.c \ + +sdisorder_riscv_src = \ + crt.S \ + +sdisorder_c_objs = $(patsubst %.c, %.o, $(sdisorder_c_src)) +sdisorder_riscv_objs = $(patsubst %.S, %.o, $(sdisorder_riscv_src)) + +sdisorder_host_bin = sdisorder.host +$(sdisorder_host_bin): $(sdisorder_c_src) + $(HOST_COMP) $^ -o $(sdisorder_host_bin) + +sdisorder_riscv_bin = sdisorder.riscv +$(sdisorder_riscv_bin): $(sdisorder_c_objs) $(sdisorder_riscv_objs) + $(RISCV_LINK) $(sdisorder_c_objs) $(sdisorder_riscv_objs) -o $(sdisorder_riscv_bin) $(RISCV_LINK_OPTS) + +junk += $(sdisorder_c_objs) $(sdisorder_riscv_objs) \ + $(sdisorder_host_bin) $(sdisorder_riscv_bin) diff --git a/benchmarks/sdisorder/sdisorder.c b/benchmarks/sdisorder/sdisorder.c new file mode 100644 index 0000000..8803312 --- /dev/null +++ b/benchmarks/sdisorder/sdisorder.c @@ -0,0 +1,76 @@ +#include <stdio.h> +#include <stdlib.h> +#include <sys/time.h> + + +#ifndef MLP + #define MLP 32 +#endif +#ifndef STEP + #define STEP 64 +#endif + + +void InitStream(int *a, int n) { + for (int i=0; i<n; i++) + a[i] = (i+STEP) % n; +} + +// TODO: Verify this does the random shuffling well +void ShuffleStream(int *a, int n) { + if (n>1) { + int i; + for (i = 0; i < n-1; i++) { + int j = i + rand() / (RAND_MAX / (n-i)+1); + int t = a[j]; + a[j] = a[i]; + a[i] = t; + } + } +} + + +void Chase(int *a, int n, int iterations) { + int loc[MLP]; + for (int m=0; m<MLP; m++) + loc[m] = m * (n/MLP) + m; + + for (int k=0; k<iterations; k++) { + for (int i=0; i<n/MLP; i++) { + for (int m=0; m<MLP; m++) { + loc[m] = a[loc[m]]; + } + } + } + for (int m=0; m<MLP; m++) { + if (loc[m] < 0) { + //printf("woah\n"); + } + } +} + + +void RandGenBench(int n) { + long total=0; + for (int i=0; i<n; i++) { + total += (rand() % 1) + 1; + } +} + + + +int main(int argc, char* argv[]) { + + int num_iters = 2; + int length = 1<<6; + int randomize = 1; + + int stream[length]; + InitStream(stream, length); + + if (randomize) { + ShuffleStream(stream, length); + } + Chase(stream, length, num_iters); + +} |