From 95861dbef966e2cb612b303615681fc29c3acd3d Mon Sep 17 00:00:00 2001 From: Nadesh Ramanathan Date: Wed, 11 Nov 2020 19:47:42 +0000 Subject: polybench edits --- .../polybench-syn/linear-algebra/blas/gemm.c | 64 ++++++++--------- .../polybench-syn/linear-algebra/blas/gemver.c | 15 ++-- .../polybench-syn/linear-algebra/blas/gesummv.c | 84 +++++++++++----------- .../polybench-syn/linear-algebra/blas/symm.c | 10 +-- .../polybench-syn/linear-algebra/blas/syr2k.c | 9 ++- .../polybench-syn/linear-algebra/blas/syrk.c | 7 +- .../polybench-syn/linear-algebra/blas/trmm.c | 43 ++++++----- 7 files changed, 111 insertions(+), 121 deletions(-) (limited to 'benchmarks/polybench-syn/linear-algebra/blas') diff --git a/benchmarks/polybench-syn/linear-algebra/blas/gemm.c b/benchmarks/polybench-syn/linear-algebra/blas/gemm.c index 5a28f08..a81f094 100644 --- a/benchmarks/polybench-syn/linear-algebra/blas/gemm.c +++ b/benchmarks/polybench-syn/linear-algebra/blas/gemm.c @@ -9,14 +9,16 @@ */ /* gemm.c: this file is part of PolyBench/C */ +#include "../../include/misc.h" + #define plus(i) i = i + ONE -static + static void init_array(int ni, int nj, int nk, - int *alpha, - int *beta, - int C[ 20 + 0][25 + 0], - int A[ 20 + 0][30 + 0], - int B[ 30 + 0][25 + 0]) + int *alpha, + int *beta, + int C[ 20 + 0][25 + 0], + int A[ 20 + 0][30 + 0], + int B[ 30 + 0][25 + 0]) { int i, j; int ONE = 1; @@ -25,21 +27,21 @@ void init_array(int ni, int nj, int nk, *beta = 2; for (i = 0; i < ni; plus(i)) for (j = 0; j < nj; plus(j)) - C[i][j] = (int) ((i*j+ONE) % ni) / ni; + C[i][j] = (int) divider(smodulo(i*j+ONE, ni), ni); for (i = 0; i < ni; plus(i)) for (j = 0; j < nk; plus(j)) - A[i][j] = (int) (i*(j+ONE) % nk) / nk; + A[i][j] = (int) divider(smodulo(i*(j+ONE), nk), nk); for (i = 0; i < nk; plus(i)) for (j = 0; j < nj; plus(j)) - B[i][j] = (int) (i*(j+ONE+ONE) % nj) / nj; + B[i][j] = (int) divider(smodulo(i*(j+ONE+ONE), nj), nj); } -static + static int print_array(int ni, int nj, - int C[ 20 + 0][25 + 0]) + int C[ 20 + 0][25 + 0]) { int i, j; int ONE = 1; @@ -48,30 +50,28 @@ int print_array(int ni, int nj, for (j = 0; j < nj; plus(j)) { res ^= C[i][j]; } - return res; + return res; } -static + static void kernel_gemm(int ni, int nj, int nk, - int alpha, - int beta, - int C[ 20 + 0][25 + 0], - int A[ 20 + 0][30 + 0], - int B[ 30 + 0][25 + 0]) + int alpha, + int beta, + int C[ 20 + 0][25 + 0], + int A[ 20 + 0][30 + 0], + int B[ 30 + 0][25 + 0]) { int i, j, k; int ONE = 1; -#pragma scop - for (i = 0; i < ni; plus(i)) { + for (i = 0; i < ni; plus(i)) { for (j = 0; j < nj; plus(j)) - C[i][j] *= beta; + C[i][j] *= beta; for (k = 0; k < nk; plus(k)) { - for (j = 0; j < nj; plus(j)) - C[i][j] += alpha * A[i][k] * B[k][j]; + for (j = 0; j < nj; plus(j)) + C[i][j] += alpha * A[i][k] * B[k][j]; } } -#pragma endscop } @@ -92,20 +92,20 @@ int main() init_array (ni, nj, nk, &alpha, &beta, - C, - A, - B); + C, + A, + B); kernel_gemm (ni, nj, nk, - alpha, beta, - C, - A, - B); + alpha, beta, + C, + A, + B); return - print_array(ni, nj, C); + print_array(ni, nj, C); } diff --git a/benchmarks/polybench-syn/linear-algebra/blas/gemver.c b/benchmarks/polybench-syn/linear-algebra/blas/gemver.c index 5b627d1..fafd49f 100644 --- a/benchmarks/polybench-syn/linear-algebra/blas/gemver.c +++ b/benchmarks/polybench-syn/linear-algebra/blas/gemver.c @@ -37,15 +37,15 @@ void init_array (int n, for (i = 0; i < n; plus(i)) { u1[i] = i; - u2[i] = sdivider(((i+ONE)/fn),2); - v1[i] = sdivider(((i+ONE)/fn),4); - v2[i] = sdivider(((i+ONE)/fn),6); - y[i] = sdivider(((i+ONE)/fn),8); - z[i] = sdivider(((i+ONE)/fn),9); + u2[i] = divider((i+ONE),fn*2); + v1[i] = divider((i+ONE),fn*4); + v2[i] = divider((i+ONE),fn*6); + y[i] = divider((i+ONE),fn*8); + z[i] = divider((i+ONE),fn*9); x[i] = 0; w[i] = 0; for (j = 0; j < n; plus(j)) - A[i][j] = (int) sdivider(smodulo(i*j, n), n); + A[i][j] = (int) divider(smodulo(i*j, n), n); } } @@ -86,8 +86,6 @@ void kernel_gemver(int n, int i, j; int ONE = 1; -#pragma scop - for (i = 0; i < n; plus(i)) for (j = 0; j < n; plus(j)) A[i][j] = A[i][j] + u1[i] * v1[j] + u2[i] * v2[j]; @@ -103,7 +101,6 @@ void kernel_gemver(int n, for (j = 0; j < n; plus(j)) w[i] = w[i] + alpha * A[i][j] * x[j]; -#pragma endscop } diff --git a/benchmarks/polybench-syn/linear-algebra/blas/gesummv.c b/benchmarks/polybench-syn/linear-algebra/blas/gesummv.c index 606a581..e9fe78e 100644 --- a/benchmarks/polybench-syn/linear-algebra/blas/gesummv.c +++ b/benchmarks/polybench-syn/linear-algebra/blas/gesummv.c @@ -9,16 +9,17 @@ */ /* gesummv.c: this file is part of PolyBench/C */ +#include "../../include/misc.h" #define plus(i) i = i + ONE -static + static void init_array(int n, - int *alpha, - int *beta, - int A[ 30 + 0][30 + 0], - int B[ 30 + 0][30 + 0], - int x[ 30 + 0]) + int *alpha, + int *beta, + int A[ 30 + 0][30 + 0], + int B[ 30 + 0][30 + 0], + int x[ 30 + 0]) { int i, j; int ONE = 1; @@ -26,21 +27,19 @@ void init_array(int n, *alpha = 3; *beta = 2; for (i = 0; i < n; plus(i)) - { - x[i] = (int)( i % n) / n; - for (j = 0; j < n; plus(j)) { - A[i][j] = (int) ((i*j+ONE) % n) / n; - B[i][j] = (int) ((i*j+ONE+ONE) % n) / n; - } + { + x[i] = (int) divider(smodulo(i, n), n); + for (j = 0; j < n; plus(j)) { + A[i][j] = (int) divider(smodulo(i*j+ONE, n), n); + B[i][j] = (int) divider(smodulo(i*j+ONE+ONE, n), n); } + } } - - -static + static int print_array(int n, - int y[ 30 + 0]) + int y[ 30 + 0]) { int i; @@ -53,33 +52,30 @@ int print_array(int n, return res; } -static + static void kernel_gesummv(int n, - int alpha, - int beta, - int A[ 30 + 0][30 + 0], - int B[ 30 + 0][30 + 0], - int tmp[ 30 + 0], - int x[ 30 + 0], - int y[ 30 + 0]) + int alpha, + int beta, + int A[ 30 + 0][30 + 0], + int B[ 30 + 0][30 + 0], + int tmp[ 30 + 0], + int x[ 30 + 0], + int y[ 30 + 0]) { int i, j; int ONE = 1; -#pragma scop - for (i = 0; i < n; plus(i)) + for (i = 0; i < n; plus(i)) + { + tmp[i] = 0; + y[i] = 0; + for (j = 0; j < n; plus(j)) { - tmp[i] = 0; - y[i] = 0; - for (j = 0; j < n; plus(j)) - { - tmp[i] = A[i][j] * x[j] + tmp[i]; - y[i] = B[i][j] * x[j] + y[i]; - } - y[i] = alpha * tmp[i] + beta * y[i]; + tmp[i] = A[i][j] * x[j] + tmp[i]; + y[i] = B[i][j] * x[j] + y[i]; } -#pragma endscop - + y[i] = alpha * tmp[i] + beta * y[i]; + } } @@ -98,16 +94,16 @@ int main() int y[30 + 0]; init_array (n, &alpha, &beta, - A, - B, - x); + A, + B, + x); kernel_gesummv (n, alpha, beta, - A, - B, - tmp, - x, - y); + A, + B, + tmp, + x, + y); return print_array(n, y); diff --git a/benchmarks/polybench-syn/linear-algebra/blas/symm.c b/benchmarks/polybench-syn/linear-algebra/blas/symm.c index a5e8539..f13577b 100644 --- a/benchmarks/polybench-syn/linear-algebra/blas/symm.c +++ b/benchmarks/polybench-syn/linear-algebra/blas/symm.c @@ -9,6 +9,8 @@ */ /* symm.c: this file is part of PolyBench/C */ +#include "../../include/misc.h" + #define plus(i) i = i + ONE static void init_array(int m, int n, @@ -26,12 +28,12 @@ void init_array(int m, int n, *beta = 2; for (i = 0; i < m; plus(i)) for (j = 0; j < n; plus(j)) { - C[i][j] = (int) ((i+j) % HUND) / m; - B[i][j] = (int) ((n+i-j) % HUND) / m; + C[i][j] = (int) divider(smodulo(i+j, HUND), m); + B[i][j] = (int) divider(smodulo(n+i-j, HUND), m); } for (i = 0; i < m; plus(i)) { for (j = 0; j <=i; plus(j)) - A[i][j] = (int) ((i+j) % HUND) / m; + A[i][j] = (int) divider(smodulo(i+j, HUND), m); for (j = i+ONE; j < m; plus(j)) A[i][j] = -999; } @@ -64,7 +66,6 @@ void kernel_symm(int m, int n, int ONE = 1; int i, j, k; int temp2; -#pragma scop for (i = 0; i < m; plus(i)) for (j = 0; j < n; plus(j) ) { @@ -75,7 +76,6 @@ void kernel_symm(int m, int n, } C[i][j] = beta * C[i][j] + alpha*B[i][j] * A[i][i] + alpha * temp2; } -#pragma endscop } diff --git a/benchmarks/polybench-syn/linear-algebra/blas/syr2k.c b/benchmarks/polybench-syn/linear-algebra/blas/syr2k.c index 82b4d3b..2214d4a 100644 --- a/benchmarks/polybench-syn/linear-algebra/blas/syr2k.c +++ b/benchmarks/polybench-syn/linear-algebra/blas/syr2k.c @@ -9,6 +9,7 @@ */ /* syr2k.c: this file is part of PolyBench/C */ +#include "../../include/misc.h" #define plus(i) i = i + ONE static @@ -26,12 +27,12 @@ void init_array(int n, int m, *beta = 2; for (i = 0; i < n; plus(i)) for (j = 0; j < m; plus(j)) { - A[i][j] = (int) ((i*j+ONE)%n) / n; - B[i][j] = (int) ((i*j+ONE+ONE)%m) / m; + A[i][j] = (int) divider(smodulo(i*j+ONE, n), n); + B[i][j] = (int) divider(smodulo(i*j+ONE+ONE, m), m); } for (i = 0; i < n; plus(i)) for (j = 0; j < n; plus(j)) { - C[i][j] = (int) ((i*j+4-ONE)%n) / m; + C[i][j] = (int) divider(smodulo(i*j+4-ONE, n), m); } } @@ -65,7 +66,6 @@ void kernel_syr2k(int n, int m, int i, j, k; int ONE = 1; -#pragma scop for (i = 0; i < n; plus(i)) { for (j = 0; j <= i; plus(j)) C[i][j] *= beta; @@ -75,7 +75,6 @@ void kernel_syr2k(int n, int m, C[i][j] += A[j][k]*alpha*B[i][k] + B[j][k]*alpha*A[i][k]; } } -#pragma endscop } diff --git a/benchmarks/polybench-syn/linear-algebra/blas/syrk.c b/benchmarks/polybench-syn/linear-algebra/blas/syrk.c index dbf2e6b..3c792a0 100644 --- a/benchmarks/polybench-syn/linear-algebra/blas/syrk.c +++ b/benchmarks/polybench-syn/linear-algebra/blas/syrk.c @@ -9,6 +9,7 @@ */ /* syrk.c: this file is part of PolyBench/C */ +#include "../../include/misc.h" #define plus(i) i = i + ONE static @@ -25,10 +26,10 @@ void init_array(int n, int m, *beta = 2; for (i = 0; i < n; plus(i)) for (j = 0; j < m; plus(j)) - A[i][j] = (int) ((i*j+ONE)%n) / n; + A[i][j] = (int) divider(smodulo((i*j+ONE), n), n); for (i = 0; i < n; plus(i)) for (j = 0; j < n; plus(j)) - C[i][j] = (int) ((i*j+ONE+ONE)%m) / m; + C[i][j] = (int) divider(smodulo(i*j+ONE+ONE,m), m); } @@ -60,7 +61,6 @@ void kernel_syrk(int n, int m, int i, j, k; int ONE = 1; -#pragma scop for (i = 0; i < n; plus(i)) { for (j = 0; j <= i; plus(j)) C[i][j] *= beta; @@ -69,7 +69,6 @@ void kernel_syrk(int n, int m, C[i][j] += alpha * A[i][k] * A[j][k]; } } -#pragma endscop } diff --git a/benchmarks/polybench-syn/linear-algebra/blas/trmm.c b/benchmarks/polybench-syn/linear-algebra/blas/trmm.c index 79b384d..e369fd0 100644 --- a/benchmarks/polybench-syn/linear-algebra/blas/trmm.c +++ b/benchmarks/polybench-syn/linear-algebra/blas/trmm.c @@ -9,13 +9,14 @@ */ /* trmm.c: this file is part of PolyBench/C */ +#include "../../include/misc.h" #define plus(i) i = i + ONE -static + static void init_array(int m, int n, - int *alpha, - int A[ 20 + 0][20 + 0], - int B[ 20 + 0][30 + 0]) + int *alpha, + int A[ 20 + 0][20 + 0], + int B[ 20 + 0][30 + 0]) { int i, j; int ONE = 1; @@ -23,22 +24,22 @@ void init_array(int m, int n, *alpha = 3; for (i = 0; i < m; plus(i)) { for (j = 0; j < i; plus(j)) { - A[i][j] = (int)((i+j) % m)/m; + A[i][j] = (int) divider(smodulo(i+j, m), m); } A[i][i] = 1; for (j = 0; j < n; plus(j)) { - B[i][j] = (int)((n+(i-j)) % n)/n; + B[i][j] = (int)divider(smodulo(n+i-j, n), n); } - } + } } -static + static int print_array(int m, int n, - int B[ 20 + 0][30 + 0]) + int B[ 20 + 0][30 + 0]) { int i, j; int ONE = 1; @@ -48,28 +49,26 @@ int print_array(int m, int n, for (j = 0; j < n; plus(j)) { res ^= B[i][j]; } - return res; + return res; } -static + static void kernel_trmm(int m, int n, - int alpha, - int A[ 20 + 0][20 + 0], - int B[ 20 + 0][30 + 0]) + int alpha, + int A[ 20 + 0][20 + 0], + int B[ 20 + 0][30 + 0]) { int i, j, k; int ONE = 1; -#pragma scop - for (i = 0; i < m; plus(i)) - for (j = 0; j < n; plus(j)) { - for (k = i+ONE; k < m; plus(k)) - B[i][j] += A[k][i] * B[k][j]; - B[i][j] = alpha * B[i][j]; - } -#pragma endscop + for (i = 0; i < m; plus(i)) + for (j = 0; j < n; plus(j)) { + for (k = i+ONE; k < m; plus(k)) + B[i][j] += A[k][i] * B[k][j]; + B[i][j] = alpha * B[i][j]; + } } -- cgit