aboutsummaryrefslogtreecommitdiffstats
path: root/benchmarks/polybench-syn/linear-algebra/blas
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/polybench-syn/linear-algebra/blas')
-rw-r--r--benchmarks/polybench-syn/linear-algebra/blas/gemm.c64
-rw-r--r--benchmarks/polybench-syn/linear-algebra/blas/gemver.c15
-rw-r--r--benchmarks/polybench-syn/linear-algebra/blas/gesummv.c84
-rw-r--r--benchmarks/polybench-syn/linear-algebra/blas/symm.c10
-rw-r--r--benchmarks/polybench-syn/linear-algebra/blas/syr2k.c9
-rw-r--r--benchmarks/polybench-syn/linear-algebra/blas/syrk.c7
-rw-r--r--benchmarks/polybench-syn/linear-algebra/blas/trmm.c43
7 files changed, 111 insertions, 121 deletions
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];
+ }
}