Skip to content

Commit

Permalink
Add examples/strsm/
Browse files Browse the repository at this point in the history
Add strsm to examples/

Signed-off-by: Uday Reddy <udayreddy@gmail.com>
  • Loading branch information
bondhugula committed May 20, 2011
1 parent 63ca50b commit 4b4bfdb
Show file tree
Hide file tree
Showing 6 changed files with 126 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ config.log
config.status
configure
stamp-h1
Makefile
./Makefile
Makefile.in
parsetab.py
polycc.sh
Expand Down
10 changes: 10 additions & 0 deletions examples/strsm/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
*.par.c
*.tiled.c
*.cloog
*.pluto.c
out_*
tiled
orig
par
opt
orig_par
23 changes: 23 additions & 0 deletions examples/strsm/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
SRC= strsm

PLCFLAGS = #--unroll
TILEFLAGS = #--l2tile

include ../common.mk

$(SRC).par2d.c:
$(PLC) $(SRC).c --tile --parallel --multipipe $(TILEFLAGS) $(PLCFLAGS)

par2d: $(SRC).par2d.c decls.h util.h
$(CC) $(OPT_FLAGS) -openmp -lm $(SRC).par2d.c -o par2d

par2d_test: $(SRC).par2d.c decls.h util.h
$(CC) $(OPT_FLAGS) -openmp -lm $(SRC).par2d.c -o par2d_test -DTEST

ptest: tiled_test par2d_test par_test
./tiled_test 2> out_tiled
export OMP_NUM_THREADS=4
./par_test 2> out_par4
diff -q out_tiled out_par4
export OMP_NUM_THREADS=4; ./par2d_test 2> out_par2d
diff -q out_tiled out_par2d
4 changes: 4 additions & 0 deletions examples/strsm/decls.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#define NMAX 3000

static double a[NMAX][NMAX], b[NMAX][NMAX];

59 changes: 59 additions & 0 deletions examples/strsm/strsm.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <sys/time.h>

#include "decls.h"
#include "util.h"

#define TIME 1

#ifdef TIME
#define IF_TIME(foo) foo;
#else
#define IF_TIME(foo)
#endif





void strsm(long N) {
int i,j,k;

#pragma scop
for (i=0; i<N; i++) {
for (j=0; j<N; j++) {
for (k=i+1; k<N; k++) {
if (k == i+1) b[j][i] /= a[i][i];
b[j][k] -= a[i][k] * b[j][i];
}
}
}
#pragma endscop
}


int main()
{
double t_start, t_end;
long N=NMAX;
int i,j;

IF_TIME(t_start = rtclock());
strsm(N);
IF_TIME(t_end = rtclock());

IF_TIME(fprintf(stderr, "%0.6lfs\n", t_end - t_start));

if (fopen(".test", "r")) {
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
fprintf(stdout, "%lf ", b[i][j]);
}
}
fprintf(stdout, "\n");
}

return 0;
}
29 changes: 29 additions & 0 deletions examples/strsm/util.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include <unistd.h>
#include <sys/time.h>

#ifdef TIME
#define IF_TIME(foo) foo;
#else
#define IF_TIME(foo)
#endif

void init_array()
{
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
b[i][j] = i*j*0.3+1;
a[i][j] = i+j+1;
}
}
}


double rtclock()
{
struct timezone Tzp;
struct timeval Tp;
int stat;
stat = gettimeofday (&Tp, &Tzp);
if (stat != 0) printf("Error return from gettimeofday: %d",stat);
return(Tp.tv_sec + Tp.tv_usec*1.0e-6);
}

0 comments on commit 4b4bfdb

Please sign in to comment.