From 8dfefc152f16f9fd9e8aa0910fd4d23d6543d87e Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Fri, 29 May 2020 12:44:28 -0400 Subject: Add DIS benchmarks and scripts as they were used for Joshua's PRP Note that Neighborhood has been modified to use less space --- dis/original/Field/field.c | 8 +++- dis/original/Neighborhood/neighborhood.c | 9 ++-- dis/original/Neighborhood/utili.h | 2 +- dis/original/Pointer/pointer.c | 8 +++- dis/original/Transitive/transitive.c | 7 +++- dis/original/Update/update.c | 7 +++- dis/original/runDIS1.sh | 2 + dis/original/runDIS2.sh | 2 + dis/original/runDIS4.sh | 5 +++ dis/original/summarize.py | 71 ++++++++++++++++++++++++++++++++ 10 files changed, 111 insertions(+), 10 deletions(-) create mode 100755 dis/original/runDIS1.sh create mode 100755 dis/original/runDIS2.sh create mode 100755 dis/original/runDIS4.sh create mode 100755 dis/original/summarize.py (limited to 'dis/original') diff --git a/dis/original/Field/field.c b/dis/original/Field/field.c index 7d26d37..a561f72 100644 --- a/dis/original/Field/field.c +++ b/dis/original/Field/field.c @@ -18,6 +18,7 @@ #include #include #include "DISstressmarkRNG.h" +#include "extra.h" #define MIN_FIELD_SIZE 16 @@ -38,8 +39,8 @@ * main() */ -int main(){ - +int main(int argc, char** argv){ + SET_UP unsigned char *field; unsigned int f; int seed; @@ -93,6 +94,7 @@ int main(){ startTime = time(NULL); for (l =0; l #include "DISstressmarkRNG.h" #include "utili.h" +#include "extra.h" /* * main() */ -int main() +int main(int argc, char** argv) { long int seed; int dimension; @@ -39,6 +40,7 @@ int main() time_t beginTime; time_t endTime; + SET_UP fscanf(stdin, "%ld %d %d %d %d %d %d %d", &seed, &bitDepth, &dimension, &numberLines, @@ -61,11 +63,12 @@ int main() assert (image != NULL); beginTime = time(NULL); - + START_LOOP neighborhoodCalculation(image, dimension, distanceShort, distanceLong, &values, maxPixel); - + STOP_LOOP endTime = time(NULL); + WRITE_TO_FILE printf(" end time is %d\n", endTime); diff --git a/dis/original/Neighborhood/utili.h b/dis/original/Neighborhood/utili.h index 2a8e2a0..87a481c 100644 --- a/dis/original/Neighborhood/utili.h +++ b/dis/original/Neighborhood/utili.h @@ -54,7 +54,7 @@ typedef struct { Angeles distLong; }Neighborhood; -typedef short int Pixel; /* short int;*/ +typedef char Pixel; /* short int;*/ void drawLineSegment(Pixel *image, diff --git a/dis/original/Pointer/pointer.c b/dis/original/Pointer/pointer.c index 0c4966f..a0aa62e 100644 --- a/dis/original/Pointer/pointer.c +++ b/dis/original/Pointer/pointer.c @@ -17,6 +17,7 @@ #include #include #include "DISstressmarkRNG.h" +#include "extra.h" #define MIN_FIELD_SIZE 16 #define MAX_FIELD_SIZE 16777216 @@ -34,7 +35,7 @@ /* * main() */ -int main(){ +int main(int argc, char** argv){ unsigned int *field; unsigned int f; @@ -53,6 +54,7 @@ int main(){ }*thread; unsigned int l; + SET_UP fscanf(stdin, "%lu %u %lu %ld %u", &f, &l, &maxhops, &seed, &n); @@ -84,12 +86,12 @@ int main(){ for (l=0; l #include #include "DISstressmarkRNG.h" +#include "extra.h" #define MIN_VERTICES 8 #define MAX_VERTICES 16384 @@ -34,7 +35,7 @@ * main() */ -int main(){ +int main(int argc, char** argv){ unsigned int *din, *dout; unsigned int n; unsigned int m; @@ -68,12 +69,14 @@ int main(){ *(din + j*n + i) = randInt(MIN_EDGES, MAX_EDGES); } + SET_UP startTime = time(NULL); for (k=0; k #include #include "DISstressmarkRNG.h" +#include "extra.h" #define MIN_FIELD_SIZE 16 @@ -39,7 +40,7 @@ *main() */ -int main(){ +int main(int argc, char** argv){ unsigned int *field; unsigned int f; @@ -76,6 +77,7 @@ int main(){ field[l] = randInt(0, f-w); } + SET_UP startTime = time(NULL); hops = 0; @@ -90,6 +92,7 @@ int main(){ unsigned int max, min; unsigned int partition; unsigned int high; + START_LOOP max = MAX_FIELD_SIZE; min = 0; high = 0; @@ -122,6 +125,7 @@ int main(){ field[index] = sum % (f-w); index = (partition+hops)%(f-w); hops++; + STOP_LOOP }/* end for loop */ startTime = time(NULL) - startTime; @@ -129,5 +133,6 @@ int main(){ fprintf(stdout, "%u hops\n", hops); fprintf(stderr, "total time = %u seconds.\n", (unsigned int)startTime); free(field); + WRITE_TO_FILE return(1); } diff --git a/dis/original/runDIS1.sh b/dis/original/runDIS1.sh new file mode 100755 index 0000000..88d2989 --- /dev/null +++ b/dis/original/runDIS1.sh @@ -0,0 +1,2 @@ +#!/bin/bash +cat inputs/Field/in1 | ./field field 80 3 May20-fieldtest 1 diff --git a/dis/original/runDIS2.sh b/dis/original/runDIS2.sh new file mode 100755 index 0000000..9471319 --- /dev/null +++ b/dis/original/runDIS2.sh @@ -0,0 +1,2 @@ +#!/bin/bash +cat inputs/Matrix/in0 | ./matrix matrix 1000 3 Nov27-matrixtest 1 diff --git a/dis/original/runDIS4.sh b/dis/original/runDIS4.sh new file mode 100755 index 0000000..58072a5 --- /dev/null +++ b/dis/original/runDIS4.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cat inputs/Neighborhood/in0 | ./neighborhood neighborhood 1 3 Oct19-neighborhoodtest 1 +cat inputs/Pointer/in0 | ./pointer pointer 10 3 Oct19-pointertest 1 +cat inputs/Transitive/in1 | ./transitive transitive 800 3 Oct19-transitivetest 1 +cat inputs/Update/in0 | ./update update 1000 3 Oct19-updatetest 1 diff --git a/dis/original/summarize.py b/dis/original/summarize.py new file mode 100755 index 0000000..f8f6929 --- /dev/null +++ b/dis/original/summarize.py @@ -0,0 +1,71 @@ +#!/usr/bin/python3 +import sys + +f = sys.argv[1] +res = {} +mem_res = {} +memw_res = {} +samples = {} +max_res = {} + +with open(f) as fp: + for line in fp: + s = line.split() + if s[0] not in res: +# print(s[0]) + res[s[0]] = list([int(s[5])])#)int(s[5]) + mem_res[s[0]] = int(s[8]) + memw_res[s[0]] = int(s[9]) + samples[s[0]] = int(s[4]) + max_res[s[0]] = int(s[5]) + else: + res[s[0]].append(int(s[5])) + mem_res[s[0]] += int(s[8]) + memw_res[s[0]] += int(s[9]) + max_res[s[0]] = max(int(s[5]), max_res[s[0]]) +## {{{ http://code.activestate.com/recipes/511478/ (r1) +import math +import functools + +def percentile(N, percent, key=lambda x:x): + """ + Find the percentile of a list of values. + + @parameter N - is a list of values. Note N MUST BE already sorted. + @parameter percent - a float value from 0.0 to 1.0. + @parameter key - optional key function to compute value from each element of N. + + @return - the percentile of the values + """ + if not N: + return None + k = (len(N)-1) * percent + f = math.floor(k) + c = math.ceil(k) + if f == c: + return key(N[int(k)]) + d0 = key(N[int(f)]) * (c-k) + d1 = key(N[int(c)]) * (k-f) + return d0+d1 +## end of http://code.activestate.com/recipes/511478/ }}} +""" +print("Average times:") +for r in res.keys(): + print(res[r]/samples[r]) + +print("Average memory read:") +for r in mem_res.keys(): + print(mem_res[r]/samples[r]) + +print("Average memory write:") +for r in memw_res.keys(): + print(memw_res[r]/samples[r]) + +print("Max times:") +for r in max_res.keys(): + print(max_res[r]) +""" +print("Name\t\tAverage\t\tMax\t\t99th %\t\tAvg Mem Read\tAvg Mem Write\t") +for r in res.keys(): +# print(r + "\t\t" + str(res[r]/samples[r]) + "\t\t" + str(max_res[r])) + print("{:12}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}\t{:>12.0f}".format(r, sum(res[r])/len(res[r]), max(res[r]), percentile(sorted(res[r]), 0.99), mem_res[r]/samples[r], memw_res[r]/samples[r])) -- cgit v1.2.2