From 6ea9939e0610a809f6f47d13ec68df00d1ca0afc Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Fri, 16 Oct 2020 16:55:14 -0400 Subject: Move the DIS benchmarks up a directory and update hardcoded paths Note that this repo does not attempt to keep a copy of the original DIS benchmark distributions. UNC real-time has another repo for that. --- dis/original/Field/DISstressmarkRNG.h | 190 --------- dis/original/Field/field.c | 153 ------- dis/original/Makefile | 38 -- dis/original/Matrix/ver1/DISstressmarkRNG.h | 190 --------- dis/original/Matrix/ver1/matrix.c | 600 --------------------------- dis/original/Matrix/ver2/DISstressmarkRNG.h | 190 --------- dis/original/Matrix/ver2/matrix.c | 594 -------------------------- dis/original/Neighborhood/DISstressmarkRNG.h | 190 --------- dis/original/Neighborhood/neighborhood.c | 103 ----- dis/original/Neighborhood/utili.h | 363 ---------------- dis/original/Pointer/DISstressmarkRNG.h | 190 --------- dis/original/Pointer/pointer.c | 159 ------- dis/original/Transitive/DISstressmarkRNG.h | 190 --------- dis/original/Transitive/transitive.c | 131 ------ dis/original/Update/DISstressmarkRNG.h | 190 --------- dis/original/Update/update.c | 138 ------ dis/original/WSS_DOCS.md | 83 ---- dis/original/clean.sh | 1 - dis/original/gen_input.py | 113 ----- dis/original/inputs/Field/in1 | 179 -------- dis/original/inputs/Field/in2 | 179 -------- dis/original/inputs/Field/in3 | 45 -- dis/original/inputs/Field/in4 | 90 ---- dis/original/inputs/Field/in5 | 198 --------- dis/original/inputs/Field/in6 | 201 --------- dis/original/inputs/Field/in7 | 197 --------- dis/original/inputs/Matrix/in1 | 1 - dis/original/inputs/Matrix/in2 | 3 - dis/original/inputs/Matrix/in3 | 1 - dis/original/inputs/Matrix/in4 | 1 - dis/original/inputs/Matrix/in5 | 1 - dis/original/inputs/Matrix/in6 | 1 - dis/original/inputs/Matrix/in7 | 1 - dis/original/inputs/Neighborhood/in1 | 2 - dis/original/inputs/Neighborhood/in2 | 2 - dis/original/inputs/Neighborhood/in3 | 2 - dis/original/inputs/Neighborhood/in4 | 2 - dis/original/inputs/Neighborhood/in5 | 2 - dis/original/inputs/Pointer/in1 | 13 - dis/original/inputs/Pointer/in10 | 12 - dis/original/inputs/Pointer/in2 | 8 - dis/original/inputs/Pointer/in3 | 5 - dis/original/inputs/Pointer/in4 | 12 - dis/original/inputs/Pointer/in5 | 8 - dis/original/inputs/Pointer/in6 | 12 - dis/original/inputs/Pointer/in7 | 12 - dis/original/inputs/Pointer/in8 | 12 - dis/original/inputs/Pointer/in9 | 12 - dis/original/inputs/Transitive/in1 | 1 - dis/original/inputs/Transitive/in2 | 1 - dis/original/inputs/Transitive/in3 | 1 - dis/original/inputs/Transitive/in4 | 1 - dis/original/inputs/Transitive/in5 | 1 - dis/original/inputs/Transitive/in6 | 1 - dis/original/inputs/Transitive/in7 | 1 - dis/original/inputs/Transitive/in8 | 1 - dis/original/inputs/Update/in1 | 1 - dis/original/inputs/Update/in2 | 1 - dis/original/inputs/Update/in3 | 1 - dis/original/inputs/Update/in4 | 1 - dis/original/inputs/Update/in5 | 1 - dis/original/inputs/Update/in6 | 1 - dis/original/inputs/Update/in7 | 1 - dis/original/inputs/Update/in8 | 1 - dis/original/inputs/WSSS | 12 - dis/original/inputs/WSSS_maxstride4mb | 16 - dis/original/inputs/caches | 7 - dis/original/inputs/caches_maxstride2ways | 11 - dis/original/inputs/random_walk/in1 | 1 - dis/original/postproc.sh | 3 - dis/original/random_walk.c | 550 ------------------------ dis/original/runDIS1.sh | 2 - dis/original/runDIS2.sh | 2 - dis/original/runDIS4.sh | 5 - dis/original/run_dis.sh | 81 ---- dis/original/setup_mem_and_global.sh | 13 - dis/original/summarize.py | 71 ---- 77 files changed, 5810 deletions(-) delete mode 100644 dis/original/Field/DISstressmarkRNG.h delete mode 100644 dis/original/Field/field.c delete mode 100755 dis/original/Makefile delete mode 100755 dis/original/Matrix/ver1/DISstressmarkRNG.h delete mode 100755 dis/original/Matrix/ver1/matrix.c delete mode 100755 dis/original/Matrix/ver2/DISstressmarkRNG.h delete mode 100755 dis/original/Matrix/ver2/matrix.c delete mode 100644 dis/original/Neighborhood/DISstressmarkRNG.h delete mode 100644 dis/original/Neighborhood/neighborhood.c delete mode 100644 dis/original/Neighborhood/utili.h delete mode 100644 dis/original/Pointer/DISstressmarkRNG.h delete mode 100644 dis/original/Pointer/pointer.c delete mode 100644 dis/original/Transitive/DISstressmarkRNG.h delete mode 100644 dis/original/Transitive/transitive.c delete mode 100644 dis/original/Update/DISstressmarkRNG.h delete mode 100644 dis/original/Update/update.c delete mode 100644 dis/original/WSS_DOCS.md delete mode 100755 dis/original/clean.sh delete mode 100755 dis/original/gen_input.py delete mode 100644 dis/original/inputs/Field/in1 delete mode 100644 dis/original/inputs/Field/in2 delete mode 100644 dis/original/inputs/Field/in3 delete mode 100644 dis/original/inputs/Field/in4 delete mode 100644 dis/original/inputs/Field/in5 delete mode 100644 dis/original/inputs/Field/in6 delete mode 100644 dis/original/inputs/Field/in7 delete mode 100644 dis/original/inputs/Matrix/in1 delete mode 100644 dis/original/inputs/Matrix/in2 delete mode 100644 dis/original/inputs/Matrix/in3 delete mode 100644 dis/original/inputs/Matrix/in4 delete mode 100644 dis/original/inputs/Matrix/in5 delete mode 100644 dis/original/inputs/Matrix/in6 delete mode 100644 dis/original/inputs/Matrix/in7 delete mode 100644 dis/original/inputs/Neighborhood/in1 delete mode 100644 dis/original/inputs/Neighborhood/in2 delete mode 100644 dis/original/inputs/Neighborhood/in3 delete mode 100644 dis/original/inputs/Neighborhood/in4 delete mode 100644 dis/original/inputs/Neighborhood/in5 delete mode 100644 dis/original/inputs/Pointer/in1 delete mode 100644 dis/original/inputs/Pointer/in10 delete mode 100644 dis/original/inputs/Pointer/in2 delete mode 100644 dis/original/inputs/Pointer/in3 delete mode 100644 dis/original/inputs/Pointer/in4 delete mode 100644 dis/original/inputs/Pointer/in5 delete mode 100644 dis/original/inputs/Pointer/in6 delete mode 100644 dis/original/inputs/Pointer/in7 delete mode 100644 dis/original/inputs/Pointer/in8 delete mode 100644 dis/original/inputs/Pointer/in9 delete mode 100644 dis/original/inputs/Transitive/in1 delete mode 100644 dis/original/inputs/Transitive/in2 delete mode 100644 dis/original/inputs/Transitive/in3 delete mode 100644 dis/original/inputs/Transitive/in4 delete mode 100644 dis/original/inputs/Transitive/in5 delete mode 100644 dis/original/inputs/Transitive/in6 delete mode 100644 dis/original/inputs/Transitive/in7 delete mode 100644 dis/original/inputs/Transitive/in8 delete mode 100644 dis/original/inputs/Update/in1 delete mode 100644 dis/original/inputs/Update/in2 delete mode 100644 dis/original/inputs/Update/in3 delete mode 100644 dis/original/inputs/Update/in4 delete mode 100644 dis/original/inputs/Update/in5 delete mode 100644 dis/original/inputs/Update/in6 delete mode 100644 dis/original/inputs/Update/in7 delete mode 100644 dis/original/inputs/Update/in8 delete mode 100644 dis/original/inputs/WSSS delete mode 100644 dis/original/inputs/WSSS_maxstride4mb delete mode 100644 dis/original/inputs/caches delete mode 100644 dis/original/inputs/caches_maxstride2ways delete mode 100644 dis/original/inputs/random_walk/in1 delete mode 100755 dis/original/postproc.sh delete mode 100644 dis/original/random_walk.c delete mode 100755 dis/original/runDIS1.sh delete mode 100755 dis/original/runDIS2.sh delete mode 100755 dis/original/runDIS4.sh delete mode 100755 dis/original/run_dis.sh delete mode 100755 dis/original/setup_mem_and_global.sh delete mode 100755 dis/original/summarize.py (limited to 'dis/original') diff --git a/dis/original/Field/DISstressmarkRNG.h b/dis/original/Field/DISstressmarkRNG.h deleted file mode 100644 index 4aa2620..0000000 --- a/dis/original/Field/DISstressmarkRNG.h +++ /dev/null @@ -1,190 +0,0 @@ -#include - -#define IA 16807 -#define IM 2147483647 -#define AM (1.0/IM) -#define IQ 127773 -#define IR 2836 -#define NTAB 32 -#define NDIV (1+(IM-1)/NTAB) -#define EPS 1.2e-7 -#define RNMX (1.0-EPS) - -static long iy=0; -static long iv[NTAB]; -static long iseed; - -int ABS(int x){ - if (x>= 0) return x; - else - return (-x); -} - -int sign(int x){ - if (x >= 0) return 1; - else - return (-1); -} - -int MAX(int x, int y){ - if (x>= y) return x; - else - return y; -} - -int MIN(int x, int y){ - if (x<= y) return x; - else - return y; -} - -void randInit(long idum) -{ - long j; - long k; - - assert (idum <= 0); - assert (iy == 0); - - iseed = idum; - if (-(iseed)<1){ - iseed = 1; - } - else { - iseed = -(iseed); - } - for (j=NTAB+7; j>=0; j--){ - k = (iseed)/IQ; - iseed = IA*(iseed-k*IQ)-IR*k; - if (iseed < 0){ - iseed += IM; - } - if (j < NTAB){ - iv[j] = iseed; - } - } - iy = iv[0]; -} - -float randNum() -{ - long j; - long k; - float temp; - - assert (iy != 0); - - k = (iseed)/IQ; - iseed = IA*(iseed-k*IQ)-IR*k; - - if (iseed < 0){ - iseed += IM; - } - j = iy/NDIV; - iy = iv[j]; - iv[j] = iseed; - - temp = AM * iy; - - if (temp > RNMX){ - return RNMX; - } - else { - return temp; - } -} - - -float randomFloat(float lowest_float, float highest_float) -{ - float value; - float range; - -assert (lowest_float < highest_float); - -range = highest_float - lowest_float; -value = randNum()*(highest_float - lowest_float) + lowest_float; -assert(value >= lowest_float); -assert(value <= highest_float); - -return value; - -} - -float randomNonZeroFloat(float lowest_float, float highest_float, float epsilon) -{ - - double range; - float value; - - - assert (lowest_float < 0); - assert (highest_float > 0); - assert (epsilon > 0); - assert ((epsilon < -lowest_float) && (epsilon < highest_float)); - - range = highest_float - lowest_float; - value = (randNum() * range)+lowest_float; - - if (ABS(value) < epsilon) - { - if (value > 0) value = value + epsilon; - else if (value < 0) value = value - epsilon; - - } - - assert (value >= lowest_float); - assert (value <= highest_float); - - return value; -} - -unsigned int randomUInt(int lowest_uint, int highest_uint) -{ - float range; - unsigned int value; - float temp; - - range =(float)(highest_uint - lowest_uint + 1); - temp = randNum(); - value =(unsigned int)( floor(temp * range) + lowest_uint); - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} - -unsigned int randomNonZeroUInt(int lowest_uint, int highest_uint) -{ - float range; - unsigned int value; - float temp; - - range =(float)(highest_uint - lowest_uint + 1); - value = 0; - while(value == 0){ - temp = randNum(); - - value =(unsigned int)( floor(temp * range) + lowest_uint); - } - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} - -int randInt(int lowest_uint, int highest_uint) -{ - float range; - int value; - - range = highest_uint - lowest_uint + 1; - value = (int)(floor(randNum() * range) + lowest_uint); - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} diff --git a/dis/original/Field/field.c b/dis/original/Field/field.c deleted file mode 100644 index 8565e8c..0000000 --- a/dis/original/Field/field.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Sample code for the DIS Field Stressmark - * - * This source code is the completely correct source code based on - * the example codes provided by Atlantic Aerospace Division, Titan - * Systems Corporation, 2000. - * - * If you just compile and generate the executables from this source - * code, this code would be enough. However, if you wish to get a complete - * understanding of this stressmark, it is strongly suggested that you - * read the Benchmark Analysis and Specifications Document Version 1.0 - * before going on since the detailed comments are given in this documents. - * the comments are not repeated here. - */ - -#include -#include -#include -#include -#include "DISstressmarkRNG.h" -#include "extra.h" - - -#define MIN_FIELD_SIZE 16 -#define MAX_FIELD_SIZE (16777216*4) // This has been quadrupled from original -#define MIN_SEED -2147483647 -#define MAX_SEED -1 -#define MIN_MOD_OFFSET 0 -#define MAX_MOD_OFFSET 65535 -#define MIN_TOKENS 1 -#define MAX_TOKENS 256 -#define MIN_TOKEN_LENGTH 1 -#define MAX_TOKEN_LENGTH 8 -#define MIN_TOKEN_VALUE 0 -#define MAX_TOKEN_VALUE 255 -#define MAX_SUBFIELDS 256 - -/* - * main() - */ - -int main(int argc, char** argv){ - SET_UP - unsigned char *field; - unsigned int f; - int seed; - int mod_offset; - unsigned int n; - - time_t startTime; - - struct tokenS{ - unsigned char delimiter[MAX_TOKEN_LENGTH]; - unsigned char length; - struct statisticS{ - unsigned int count; - unsigned char min; - unsigned char sum; - }stat[MAX_SUBFIELDS]; - unsigned char subfields; - }token[MAX_TOKENS]; - - unsigned int l; - - assert(fscanf(stdin, "%d %d %d %d", &f, &seed, &mod_offset, &n) == 4); - - assert((f >= MIN_FIELD_SIZE) && (f <= MAX_FIELD_SIZE)); - assert((seed >= MIN_SEED) && (seed <= MAX_SEED)); - assert((mod_offset >= MIN_MOD_OFFSET) && (mod_offset <= MAX_MOD_OFFSET)); - assert((n >= MIN_TOKENS) && (n <= MAX_TOKENS)); - for (l=0; l= MIN_TOKEN_VALUE) && (x <= MAX_TOKEN_VALUE)); - token[l].delimiter[index] = (unsigned char )x; - index++; - assert(fscanf(stdin,"%x", &x) == 1); - } - assert((index >= MIN_TOKEN_LENGTH) && (index <= MAX_TOKEN_LENGTH)); - token[l].length = index; - } - - if ((field = (unsigned char*)malloc(f*sizeof(unsigned char))) == NULL) - return (-1); - - randInit(seed); - for (l =0; l field[index]) - token[l].stat[token[l].subfields].min = field[index]; - } - index++; - } - token[l].subfields++; - STOP_LOOP - } - - startTime = time(NULL) - startTime; - - for (l = 0; l< n; l++){ - unsigned int ll; - fprintf(stdout, "%d subfields for token %d \n", token[l].subfields, l); - for ( ll =0; ll - -#define IA 16807 -#define IM 2147483647 -#define AM (1.0/IM) -#define IQ 127773 -#define IR 2836 -#define NTAB 32 -#define NDIV (1+(IM-1)/NTAB) -#define EPS 1.2e-7 -#define RNMX (1.0-EPS) - -static long iy=0; -static long iv[NTAB]; -static long iseed; - -int ABS(int x){ - if (x>= 0) return x; - else - return (-x); -} - -int sign(int x){ - if (x >= 0) return 1; - else - return (-1); -} - -int MAX(int x, int y){ - if (x>= y) return x; - else - return y; -} - -int MIN(int x, int y){ - if (x<= y) return x; - else - return y; -} - -void randInit(long idum) -{ - long j; - long k; - - assert (idum <= 0); - assert (iy == 0); - - iseed = idum; - if (-(iseed)<1){ - iseed = 1; - } - else { - iseed = -(iseed); - } - for (j=NTAB+7; j>=0; j--){ - k = (iseed)/IQ; - iseed = IA*(iseed-k*IQ)-IR*k; - if (iseed < 0){ - iseed += IM; - } - if (j < NTAB){ - iv[j] = iseed; - } - } - iy = iv[0]; -} - -float randNum() -{ - long j; - long k; - float temp; - - assert (iy != 0); - - k = (iseed)/IQ; - iseed = IA*(iseed-k*IQ)-IR*k; - - if (iseed < 0){ - iseed += IM; - } - j = iy/NDIV; - iy = iv[j]; - iv[j] = iseed; - - temp = AM * iy; - - if (temp > RNMX){ - return RNMX; - } - else { - return temp; - } -} - - -float randomFloat(float lowest_float, float highest_float) -{ - float value; - float range; - -assert (lowest_float < highest_float); - -range = highest_float - lowest_float; -value = randNum()*(highest_float - lowest_float) + lowest_float; -assert(value >= lowest_float); -assert(value <= highest_float); - -return value; - -} - -float randomNonZeroFloat(float lowest_float, float highest_float, float epsilon) -{ - - double range; - float value; - - - assert (lowest_float < 0); - assert (highest_float > 0); - assert (epsilon > 0); - assert ((epsilon < -lowest_float) && (epsilon < highest_float)); - - range = highest_float - lowest_float; - value = (randNum() * range)+lowest_float; - - if (ABS(value) < epsilon) - { - if (value > 0) value = value + epsilon; - else if (value < 0) value = value - epsilon; - - } - - assert (value >= lowest_float); - assert (value <= highest_float); - - return value; -} - -unsigned int randomUInt(int lowest_uint, int highest_uint) -{ - float range; - unsigned int value; - float temp; - - range =(float)(highest_uint - lowest_uint + 1); - temp = randNum(); - value =(unsigned int)( floor(temp * range) + lowest_uint); - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} - -unsigned int randomNonZeroUInt(int lowest_uint, int highest_uint) -{ - float range; - unsigned int value; - float temp; - - range =(float)(highest_uint - lowest_uint + 1); - value = 0; - while(value == 0){ - temp = randNum(); - - value =(unsigned int)( floor(temp * range) + lowest_uint); - } - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} - -int randInt(int lowest_uint, int highest_uint) -{ - float range; - int value; - - range = highest_uint - lowest_uint + 1; - value = (int)(floor(randNum() * range) + lowest_uint); - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} diff --git a/dis/original/Matrix/ver1/matrix.c b/dis/original/Matrix/ver1/matrix.c deleted file mode 100755 index 518a638..0000000 --- a/dis/original/Matrix/ver1/matrix.c +++ /dev/null @@ -1,600 +0,0 @@ -/* - * Sample code for the DIS Matrix Stressmark - * - * This source code is the completely correct source code based on - * the example codes provided by Atlantic Aerospace Division, Titan - * Systems Corporation, 2000. - * - * If you just compile and generate the executables from this source - * code, this code would be enough. However, if you wish to get a complete - * understanding of this stressmark, it is strongly suggested that you - * read the Benchmark Analysis and Specifications Document Version 1.0 - * before going on since the detailed comments are given in this documents. - * the comments are not repeated here. - */ - -/* - * The Sparse Matrix Storage is implemented by Compact Row Storage Scheme - * In the code, the data is first generated by randomNonzeroFloat() - * the data is first stored in a full-space matrix with size of dim*dim - * then the data is transfered to the Compact Row Matrix, - * the data value is kept in *value, - * the columns corresponding to the value are stored in *col_ind, - * the start element of each row is stored in *row_start. - */ - -/* - * Please note: - * the total number of data is numberNonzero +dim - * among which, NumberNonzero because this is symmetric matrix - * dim because the diagonal elements - */ - -#include -#include -#include -#include -#include -#include "DISstressmarkRNG.h" - -#define MIN_SEED -2147483647 -#define MAX_SEED -1 -#define MIN_DIM 1 -#define MAX_DIM 32768 -#define MAX_ITERATIONS 65536 -#define MIN_TOLERANCE 0.000007 -#define MAX_TOLERANCE 0.5 -#define MIN_NUMBER -3.4e10/dim -#define MAX_NUMBER 3.4e10/dim -#define EPSI 1.0e-10 -#define MIN_DIG_NUMBER 1.0e-10 -#define MAX_DIG_NUMBER 3.4e10 - -/* - * External variable, dimension - */ - -static int dim; - -/* - * matrix * vector - */ - -double *matrixMulvector(double *value, - int *col_ind, - int *row_start, - double *vector) -{ - int l, ll; - double *out; - double sum; - int tmp_rs, tmp_re; - - out = (double *)malloc(dim*sizeof(double)); - - for (l=0; l - */ -double *valueMulvector(double value, double *vector){ - - int l; - double *vect; - int lll; - double sum; - - vect = (double *) malloc(dim * sizeof(double )); - - for (l=0; l errorTolerance)){ - - /* - * alpha = (transpose(vectorR) * vectorR) / - * (transpose(vectorP) * (matrixA * vectorP) - */ - temp1 = matrixMulvector(value, col_ind, row_start, vectorP); - temp3 = transpose(vectorR); - temp4 = transpose(vectorP); - temp5 = vectorMul(temp4, temp1); - temp6 = vectorMul(temp3, vectorR); - alpha = temp6/temp5; - - /* - * nextVectorR = vectorR - alpha*(matrixA * vectorP) - */ - - temp7 = valueMulvector(alpha, temp1); - temp8 = vectorSub(vectorR, temp7); - nextVectorR = equalVector(temp8); - - /* - * beta = (transpose(nextVectorR) * nextVectorR) / - * (transpose(vectorR) * vectorR) - */ - temp9 = transpose(nextVectorR); - temp10 = vectorMul(temp9, nextVectorR); - temp11 = transpose(vectorR); - temp12 = vectorMul(temp11, vectorR); - beta = temp10/temp12; - - /* - * vectorX = vectorX + alpha * vectorP - */ - temp13 = valueMulvector(alpha, vectorP); - vectorX = vectorAdd(vectorX,temp13); - - /* - *vectorP = nextVectorR + beta*vectorP - */ - temp14 = valueMulvector(beta, vectorP); - temp17 = vectorAdd(nextVectorR, temp14); - - for (ll=0; ll MIN_SEED) && (seed < MAX_SEED)); - assert((dim > MIN_DIM) && (dim < MAX_DIM)); - assert((numberNonzero > dim) && (numberNonzero < dim*dim)); - assert((maxIterations > 0) && (maxIterations < MAX_ITERATIONS)); - assert((errorTolerance > MIN_TOLERANCE) && (errorTolerance < MAX_TOLERANCE)); - - matrixA = (double *)malloc(dim*dim*sizeof(double )); - vectorB = (double *)malloc(dim*sizeof(double)); - vectorX = (double *)malloc(dim*sizeof(double)); - - value = (double *)malloc((numberNonzero+dim)*sizeof(double)); - col_ind = (int *)malloc((numberNonzero+dim)*sizeof(int)); - row_start = (int *)malloc((dim+1)*sizeof(int)); - - randInit(seed); - - initMatrix(matrixA, dim, numberNonzero); - - create_CRS(matrixA, value, col_ind, row_start, dim, numberNonzero); - - initVector(vectorB, dim); - zeroVector(vectorX, dim); - printf(" after init\n"); - - beginTime = time(NULL); - - actualError = 0; - actualIteration = 0; - - biConjugateGradient(value, col_ind, row_start, vectorB, vectorX, errorTolerance, - maxIterations, - &actualError, &actualIteration, dim); - - - - endTime = time(NULL) - beginTime; - - - - sum = 0; - for (k=1; k - -#define IA 16807 -#define IM 2147483647 -#define AM (1.0/IM) -#define IQ 127773 -#define IR 2836 -#define NTAB 32 -#define NDIV (1+(IM-1)/NTAB) -#define EPS 1.2e-7 -#define RNMX (1.0-EPS) - -static long iy=0; -static long iv[NTAB]; -static long iseed; - -int ABS(int x){ - if (x>= 0) return x; - else - return (-x); -} - -int sign(int x){ - if (x >= 0) return 1; - else - return (-1); -} - -int MAX(int x, int y){ - if (x>= y) return x; - else - return y; -} - -int MIN(int x, int y){ - if (x<= y) return x; - else - return y; -} - -void randInit(long idum) -{ - long j; - long k; - - assert (idum <= 0); - assert (iy == 0); - - iseed = idum; - if (-(iseed)<1){ - iseed = 1; - } - else { - iseed = -(iseed); - } - for (j=NTAB+7; j>=0; j--){ - k = (iseed)/IQ; - iseed = IA*(iseed-k*IQ)-IR*k; - if (iseed < 0){ - iseed += IM; - } - if (j < NTAB){ - iv[j] = iseed; - } - } - iy = iv[0]; -} - -float randNum() -{ - long j; - long k; - float temp; - - assert (iy != 0); - - k = (iseed)/IQ; - iseed = IA*(iseed-k*IQ)-IR*k; - - if (iseed < 0){ - iseed += IM; - } - j = iy/NDIV; - iy = iv[j]; - iv[j] = iseed; - - temp = AM * iy; - - if (temp > RNMX){ - return RNMX; - } - else { - return temp; - } -} - - -float randomFloat(float lowest_float, float highest_float) -{ - float value; - float range; - -assert (lowest_float < highest_float); - -range = highest_float - lowest_float; -value = randNum()*(highest_float - lowest_float) + lowest_float; -assert(value >= lowest_float); -assert(value <= highest_float); - -return value; - -} - -float randomNonZeroFloat(float lowest_float, float highest_float, float epsilon) -{ - - double range; - float value; - - - assert (lowest_float < 0); - assert (highest_float > 0); - assert (epsilon > 0); - assert ((epsilon < -lowest_float) && (epsilon < highest_float)); - - range = highest_float - lowest_float; - value = (randNum() * range)+lowest_float; - - if (ABS(value) < epsilon) - { - if (value > 0) value = value + epsilon; - else if (value < 0) value = value - epsilon; - - } - - assert (value >= lowest_float); - assert (value <= highest_float); - - return value; -} - -unsigned int randomUInt(int lowest_uint, int highest_uint) -{ - float range; - unsigned int value; - float temp; - - range =(float)(highest_uint - lowest_uint + 1); - temp = randNum(); - value =(unsigned int)( floor(temp * range) + lowest_uint); - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} - -unsigned int randomNonZeroUInt(int lowest_uint, int highest_uint) -{ - float range; - unsigned int value; - float temp; - - range =(float)(highest_uint - lowest_uint + 1); - value = 0; - while(value == 0){ - temp = randNum(); - - value =(unsigned int)( floor(temp * range) + lowest_uint); - } - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} - -int randInt(int lowest_uint, int highest_uint) -{ - float range; - int value; - - range = highest_uint - lowest_uint + 1; - value = (int)(floor(randNum() * range) + lowest_uint); - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} diff --git a/dis/original/Matrix/ver2/matrix.c b/dis/original/Matrix/ver2/matrix.c deleted file mode 100755 index 957d7c5..0000000 --- a/dis/original/Matrix/ver2/matrix.c +++ /dev/null @@ -1,594 +0,0 @@ -/* Please note: - * This code is the optimized version of the first version of Matrix - * Stressmark. It uses less temporary vectors and vsariables, thus reduce - * memory allocation/deallocation overhead. the simulation is faster - */ -/* - * Sample code for the DIS Matrix Stressmark - * - * This source code is the completely correct source code based on - * the example codes provided by Atlantic Aerospace Division, Titan - * Systems Corporation, 2000. - * - * If you just compile and generate the executables from this source - * code, this code would be enough. However, if you wish to get a complete - * understanding of this stressmark, it is strongly suggested that you - * read the Benchmark Analysis and Specifications Document Version 1.0 - * before going on since the detailed comments are given in this documents. - * the comments are not repeated here. - */ - -/* - * The Sparse Matrix Storage is implemented by Compact Row Storage Scheme - * In the code, the data is first generated by randomNonzeroFloat() - * the data is first stored in a full-space matrix with size of dim*dim - * then the data is transfered to the Compact Row Matrix, - * the data value is kept in *value, - * the columns corresponding to the value are stored in *col_ind, - * the start element of each row is stored in *row_start. - */ - -/* - * Please note: - * the total number of data is numberNonzero +dim - * among which, NumberNonzero because this is symmetric matrix - * dim because the diagonal elements - */ - -#include -#include -#include -#include -#include -#include "DISstressmarkRNG.h" -#include "extra.h" - -#define MIN_SEED -2147483647 -#define MAX_SEED -1 -#define MIN_DIM 1 -#define MAX_DIM 32768 -#define MAX_ITERATIONS 65536 -#define MIN_TOLERANCE 0.000007 -#define MAX_TOLERANCE 0.5 -#define MIN_NUMBER -3.4e10/dim -#define MAX_NUMBER 3.4e10/dim -#define EPSI 1.0e-10 -#define MIN_DIG_NUMBER 1.0e-10 -#define MAX_DIG_NUMBER 3.4e10 - -/* - * External variable, dimension - */ - -static int dim; -int argc; -char** argv; - -/* - * matrix * vector - */ - -void matrixMulvector(double *value, - int *col_ind, - int *row_start, - double *vector, - double *out) -{ - int l, ll; - double sum; - int tmp_rs, tmp_re; - - for (l=0; l - */ -void valueMulvector(double value, double *vector, double *vect){ - - int l; - int lll, i; - double tmp; - - for (l=0; l errorTolerance)){ - START_LOOP - - /* - * alpha = (transpose(vectorR) * vectorR) / - * (transpose(vectorP) * (matrixA * vectorP) - */ - - matrixMulvector(value, col_ind, row_start, vectorP, tmpVector1); - transpose(vectorR, tmpVector2); - transpose(vectorP, tmpVector3); - tmpValue1 = vectorMul(tmpVector3, tmpVector1); - tmpValue2 = vectorMul(tmpVector2, vectorR); - alpha = tmpValue2/tmpValue1; - - /* - * nextVectorR = vectorR - alpha*(matrixA * vectorP) - */ - - valueMulvector(alpha, tmpVector1, tmpVector2); - vectorSub(vectorR, tmpVector2, tmpVector1); - equalVector(tmpVector1, nextVectorR); - - /* - * beta = (transpose(nextVectorR) * nextVectorR) / - * (transpose(vectorR) * vectorR) - */ - - transpose(nextVectorR, tmpVector3); - tmpValue1 = vectorMul(tmpVector3, nextVectorR); - transpose(vectorR, tmpVector2); - tmpValue2 = vectorMul(tmpVector2, vectorR); - beta = tmpValue1/tmpValue2; - - /* - * vectorX = vectorX + alpha * vectorP - */ - valueMulvector(alpha, vectorP, tmpVector1); - vectorAdd(vectorX,tmpVector1, vectorX); - - /* - *vectorP = nextVectorR + beta*vectorP - */ - valueMulvector(beta, vectorP, tmpVector1); - vectorAdd(nextVectorR, tmpVector1, tmpVector1); - - for (ll=0; ll MIN_SEED) && (seed < MAX_SEED)); - assert((dim > MIN_DIM) && (dim < MAX_DIM)); - assert((numberNonzero > dim) && (numberNonzero < dim*dim)); - assert((maxIterations > 0) && (maxIterations < MAX_ITERATIONS)); - assert((errorTolerance > MIN_TOLERANCE) && (errorTolerance < MAX_TOLERANCE)); - - matrixA = (double *)malloc(dim*dim*sizeof(double )); - vectorB = (double *)malloc(dim*sizeof(double)); - vectorX = (double *)malloc(dim*sizeof(double)); - - value = (double *)malloc((numberNonzero+dim)*sizeof(double)); - col_ind = (int *)malloc((numberNonzero+dim)*sizeof(int)); - row_start = (int *)malloc((dim+1)*sizeof(int)); - - randInit(seed); - - initMatrix(matrixA, dim, numberNonzero); - - create_CRS(matrixA, value, col_ind, row_start, dim, numberNonzero); - - initVector(vectorB, dim); - zeroVector(vectorX, dim); - printf(" after init\n"); - - beginTime = time(NULL); - - actualError = 0; - actualIteration = 0; - - biConjugateGradient(value, col_ind, row_start, vectorB, vectorX, errorTolerance, - maxIterations, - &actualError, &actualIteration, dim); - - - - endTime = time(NULL) - beginTime; - - - - sum = 0; - for (k=1; k - -#define IA 16807 -#define IM 2147483647 -#define AM (1.0/IM) -#define IQ 127773 -#define IR 2836 -#define NTAB 32 -#define NDIV (1+(IM-1)/NTAB) -#define EPS 1.2e-7 -#define RNMX (1.0-EPS) - -static long iy=0; -static long iv[NTAB]; -static long iseed; - -int ABS(int x){ - if (x>= 0) return x; - else - return (-x); -} - -int sign(int x){ - if (x >= 0) return 1; - else - return (-1); -} - -int MAX(int x, int y){ - if (x>= y) return x; - else - return y; -} - -int MIN(int x, int y){ - if (x<= y) return x; - else - return y; -} - -void randInit(long idum) -{ - long j; - long k; - - assert (idum <= 0); - assert (iy == 0); - - iseed = idum; - if (-(iseed)<1){ - iseed = 1; - } - else { - iseed = -(iseed); - } - for (j=NTAB+7; j>=0; j--){ - k = (iseed)/IQ; - iseed = IA*(iseed-k*IQ)-IR*k; - if (iseed < 0){ - iseed += IM; - } - if (j < NTAB){ - iv[j] = iseed; - } - } - iy = iv[0]; -} - -float randNum() -{ - long j; - long k; - float temp; - - assert (iy != 0); - - k = (iseed)/IQ; - iseed = IA*(iseed-k*IQ)-IR*k; - - if (iseed < 0){ - iseed += IM; - } - j = iy/NDIV; - iy = iv[j]; - iv[j] = iseed; - - temp = AM * iy; - - if (temp > RNMX){ - return RNMX; - } - else { - return temp; - } -} - - -float randomFloat(float lowest_float, float highest_float) -{ - float value; - float range; - -assert (lowest_float < highest_float); - -range = highest_float - lowest_float; -value = randNum()*(highest_float - lowest_float) + lowest_float; -assert(value >= lowest_float); -assert(value <= highest_float); - -return value; - -} - -float randomNonZeroFloat(float lowest_float, float highest_float, float epsilon) -{ - - double range; - float value; - - - assert (lowest_float < 0); - assert (highest_float > 0); - assert (epsilon > 0); - assert ((epsilon < -lowest_float) && (epsilon < highest_float)); - - range = highest_float - lowest_float; - value = (randNum() * range)+lowest_float; - - if (ABS(value) < epsilon) - { - if (value > 0) value = value + epsilon; - else if (value < 0) value = value - epsilon; - - } - - assert (value >= lowest_float); - assert (value <= highest_float); - - return value; -} - -unsigned int randomUInt(int lowest_uint, int highest_uint) -{ - float range; - unsigned int value; - float temp; - - range =(float)(highest_uint - lowest_uint + 1); - temp = randNum(); - value =(unsigned int)( floor(temp * range) + lowest_uint); - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} - -unsigned int randomNonZeroUInt(int lowest_uint, int highest_uint) -{ - float range; - unsigned int value; - float temp; - - range =(float)(highest_uint - lowest_uint + 1); - value = 0; - while(value == 0){ - temp = randNum(); - - value =(unsigned int)( floor(temp * range) + lowest_uint); - } - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} - -int randInt(int lowest_uint, int highest_uint) -{ - float range; - int value; - - range = highest_uint - lowest_uint + 1; - value = (int)(floor(randNum() * range) + lowest_uint); - - assert (value >= lowest_uint); - assert (value <= highest_uint); - - return value; -} diff --git a/dis/original/Neighborhood/neighborhood.c b/dis/original/Neighborhood/neighborhood.c deleted file mode 100644 index 1736d38..0000000 --- a/dis/original/Neighborhood/neighborhood.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Sample code for the DIS Neighborhood Stressmark - * - * This source code is the completely correct source code based on - * the example codes provided by Atlantic Aerospace Division, Titan - * Systems Corporation, 2000. - * - * If you just compile and generate the executables from this source - * code, this code would be enough. However, if you wish to get a complete - * understanding of this stressmark, it is strongly suggested that you - * read the Benchmark Analysis and Specifications Document Version 1.0 - * before going on since the detailed comments are given in this documents. - * the comments are not repeated here. - */ - -#include -#include -#include -#include -#include "DISstressmarkRNG.h" -#include "utili.h" -#include "extra.h" - -/* - * main() - */ -int main(int argc, char** argv) -{ - long int seed; - int dimension; - int numberLines; - int minThickness; - int maxThickness; - int distanceShort; - int distanceLong; - int bitDepth; - int maxPixel; - Pixel *image; - Neighborhood values; - - time_t beginTime; - time_t endTime; - SET_UP - - assert(fscanf(stdin, "%ld %d %d %d %d %d %d %d", - &seed, &bitDepth, &dimension, &numberLines, - &minThickness, &maxThickness, - &distanceShort, &distanceLong) == 8); - - assert((seed >= MIN_SEED) && (seed <= MAX_SEED)); - assert((dimension > 0) && (dimension <= MAX_DIMENSION)); - assert((numberLines > 0) && (numberLines <= MAX_NUMBER_LINES)); - assert((minThickness > 0) && (minThickness < dimension)); - assert((maxThickness >= minThickness) && (maxThickness < dimension)); - assert((distanceShort > 0) && (distanceShort < dimension)); - assert((distanceLong > 0) && (distanceLong < dimension)); - assert((bitDepth >= MIN_BIT_DEPTH) && (bitDepth <= MAX_BIT_DEPTH)); - - randInit(seed); - maxPixel = (1 << bitDepth) - 1; - image = createImage(dimension, maxPixel, numberLines, - minThickness, maxThickness); - 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); - - fprintf(stdout, "%9.4e %9.4e %9.4e %9.4e %9.4e %9.4e %9.4e %9.4e", - values.distShort.deg0.entropy, - values.distShort.deg0.energy, - values.distShort.deg45.entropy, - values.distShort.deg45.energy, - values.distShort.deg90.entropy, - values.distShort.deg90.energy, - values.distShort.deg135.entropy, - values.distShort.deg135.energy); - - fprintf(stdout,"%9.4e %9.4e %9.4e %9.4e %9.4e %9.4e %9.4e %9.4e", - values.distLong.deg0.entropy, - values.distLong.deg0.energy,values.distShort.deg45.entropy, - values.distLong.deg45.energy, - values.distLong.deg90.entropy, - values.distLong.deg90.energy, - values.distLong.deg135.entropy, - values.distLong.deg135.energy); - - fprintf(stderr, "time for neghborhood stressmark = %f\n", - difftime(endTime, beginTime)); - - free((Pixel *)image); - return (SUCCESS); - } - - - - diff --git a/dis/original/Neighborhood/utili.h b/dis/original/Neighborhood/utili.h deleted file mode 100644 index 2a8e2a0..0000000 --- a/dis/original/Neighborhood/utili.h +++ /dev/null @@ -1,363 +0,0 @@ -/* - * Sample code for the DIS Pointer Stressmark - * - * This source code is the completely correct source code based on - * the example codes provided by Atlantic Aerospace Division, Titan - * Systems Corporation, 2000. - * - * If you just compile and generate the executables from this source - * code, this code would be enough. However, if you wish to get a complete - * understanding of this stressmark, it is strongly suggested that you - * read the Benchmark Analysis and Specifications Document Version 1.0 - * before going on since the detailed comments are given in this documents. - * the comments are not repeated here. - */ - -#include - -#define TRUE 1 -#define FALSE !TRUE -#define SUCCESS TRUE -#define ERROR FLASE - -#define MIN_PIXEL 0 -#define MAX_DIMENSION 32768 -#define MIN_SEED -2147483647 -#define MAX_SEED -1 -#define MAX_NUMBER_LINES 65536 -#define MIN_BIT_DEPTH 7 -#define MAX_BIT_DEPTH 15 - -typedef struct { - int column; - int row; -}Coord; - -/* - * Neighborhood structure consists of the GLCM descriptors entropy and - * energy for each of 2 distance and 4 angels - */ -typedef struct { - float entropy; - float energy; -}Descriptors; - -typedef struct { - Descriptors deg0; - Descriptors deg45; - Descriptors deg90; - Descriptors deg135; -}Angeles; - -typedef struct { - Angeles distShort; - Angeles distLong; -}Neighborhood; - -typedef short int Pixel; /* short int;*/ - - -void drawLineSegment(Pixel *image, - Coord startPoint, - Coord endPoint, - int startValue, - int endValue, - int thickness, - int dimension) - { - int changeColumn, changeRow; - int delta; - int column, row; - float value, valueDelta; - int t; - - changeColumn = endPoint.column - startPoint.column; - changeRow = endPoint.row - startPoint.row; - - assert((changeRow != 0) || (changeColumn != 0)); - - column = startPoint.column; - row = startPoint.row; - value = startValue; - - if (ABS(changeColumn) > ABS(changeRow)){ - valueDelta = ((float) endValue - startValue)/ - ((float) ABS(changeColumn)); - delta = 2*ABS(row) - ABS(column); - for (column = startPoint.column; - column == endPoint.column+sign(changeColumn); - column += sign(changeColumn)){ - for (t = MAX(0, row-thickness/2); - t < MIN(dimension, row+thickness - thickness/2); - t++) - image[t*dimension + column] = (int)value; - value += valueDelta; - if (delta >= 0){ - row += sign(changeRow); - delta -= 2*ABS(changeColumn); - } - column += sign(changeColumn); - delta += 2*ABS(changeRow); - } - } - else { - valueDelta = ((float) endValue - startValue)/ - ((float) ABS(changeRow)); - delta = 2* ABS(column) - ABS(row); - for (row = startPoint.row; - row == endPoint.row + sign(changeRow); - row += sign(changeRow)){ - for (t = MAX(0, column-thickness/2); - t < MIN(dimension, row + thickness - thickness/2); - t++) - image[row*dimension + t] = (int)value; - if (delta >= 0){ - column += sign(changeColumn); - delta -= 2*ABS(changeRow); - } - row += sign(changeRow); - delta += 2*ABS(changeColumn); - } - } - return; - } - - - -Pixel *createImage (int dimension, - Pixel maxPixel, - int numberLines, - int minThickness, - int maxThickness) - { - Pixel *image; - int i; - - Coord startPoint; - Coord endPoint; - int thickness; - int startValue; - int endValue; - - image = (Pixel *)malloc(sizeof(Pixel) * dimension * dimension); - assert (image != NULL); - for (i=0; i= 0) && (binIndex < numBins)); - sumHist[binIndex] += 1; - binIndex = value0 - value1 + maxPixel - MIN_PIXEL; - - assert((binIndex >= 0) && (binIndex < numBins)); - - diffHist[binIndex] += 1; - totalNumPixels += 1; - - } - - value0RowOffset += dimension; - value1RowOffset += dimension; - - } - - - if (totalNumPixels > 0){ - int index; - double energySum; - double energyDifference; - double entropyValue; - double sumNormalized; - double diffNormalized; - double scale; - - energySum = (double) 0; - energyDifference = (double) 0; - entropyValue = (double) 0; - scale = 1.e0/totalNumPixels; - for (index = 0; index 0){ - sumNormalized = (double) sumHist[index]*scale; - entropyValue = entropyValue - sumNormalized * - log((double)sumNormalized); - energySum = energySum + sumNormalized * sumNormalized ; - } - if (diffHist[index] > 0){ - diffNormalized = (double)diffHist[index]*scale; - entropyValue = entropyValue - diffNormalized * log(diffNormalized); - energyDifference = energyDifference + - diffNormalized * diffNormalized; - } - } - *energy = energySum * energ