projects
/
IRC.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
246704e
)
change to use less memory
author
bdemsky
<bdemsky>
Wed, 11 Mar 2009 06:22:56 +0000
(06:22 +0000)
committer
bdemsky
<bdemsky>
Wed, 11 Mar 2009 06:22:56 +0000
(06:22 +0000)
Robust/src/Benchmarks/Prefetch/ManualPrefetch/2DFFT/fft2d.java
patch
|
blob
|
history
diff --git
a/Robust/src/Benchmarks/Prefetch/ManualPrefetch/2DFFT/fft2d.java
b/Robust/src/Benchmarks/Prefetch/ManualPrefetch/2DFFT/fft2d.java
index 82fee742ac506eed095802479791c543159abcd8..5813989b8d0c6e28656c76c228ad101a43b08ed4 100644
(file)
--- a/
Robust/src/Benchmarks/Prefetch/ManualPrefetch/2DFFT/fft2d.java
+++ b/
Robust/src/Benchmarks/Prefetch/ManualPrefetch/2DFFT/fft2d.java
@@
-9,13
+9,12
@@
public class fft2d extends Thread {
//
// Code borrowed from :Java Digital Signal Processing book by Lyon and Rao
//
// Code borrowed from :Java Digital Signal Processing book by Lyon and Rao
- public Matrix data1
, data2
;
+ public Matrix data1;
public int x0, x1;
// Constructor: 2-d FFT of Complex data.
public int x0, x1;
// Constructor: 2-d FFT of Complex data.
- public fft2d(Matrix data1,
Matrix data2,
int x0, int x1) {
+ public fft2d(Matrix data1, int x0, int x1) {
this.data1 = data1;
this.data1 = data1;
- this.data2 = data2;
this.x0 = x0;
this.x1 = x1;
}
this.x0 = x0;
this.x1 = x1;
}
@@
-64,7
+63,7
@@
public class fft2d extends Thread {
for (int i = x0; i < x1; i++,l++) {
//input of FFT
if ((l&15)==0) {
for (int i = x0; i < x1; i++,l++) {
//input of FFT
if ((l&15)==0) {
- offsets2[0] = (short)
l+x0
;
+ offsets2[0] = (short)
(l+x0)
;
if ((l+x0+16)>= x1) {
int t=x1-l-x0-1;
if (t>0) {
if ((l+x0+16)>= x1) {
int t=x1-l-x0-1;
if (t>0) {
@@
-90,9
+89,7
@@
public class fft2d extends Thread {
// Tranpose data.
if (start == 0) {
atomic {
// Tranpose data.
if (start == 0) {
atomic {
- //NO PREFETCH HERE...ALL DATA IS LOCAL
-
- transpose(tempdataRe,tempdataIm, data2.dataRe,data2.dataIm, rowlength, columnlength);
+ transpose(tempdataRe, tempdataIm, rowlength, columnlength);
}
}
}
}
@@
-106,18
+103,18
@@
public class fft2d extends Thread {
//
// Add manual prefetch
// prefetch data2.dataRe[start -> end]
//
// Add manual prefetch
// prefetch data2.dataRe[start -> end]
- Object o1 = data
2
.dataRe;
+ Object o1 = data
1
.dataRe;
short[] offsets1 = new short[2];
offsets1[0] = (short) start;
offsets1[1] = (short) 15;
System.rangePrefetch(o1, offsets1);
short[] offsets1 = new short[2];
offsets1[0] = (short) start;
offsets1[1] = (short) 15;
System.rangePrefetch(o1, offsets1);
- o1 = data
2
.dataIm;
+ o1 = data
1
.dataIm;
System.rangePrefetch(o1, offsets1);
/////////////////////
System.rangePrefetch(o1, offsets1);
/////////////////////
- transtempRe = data
2
.dataRe;
- transtempIm = data
2
.dataIm;
+ transtempRe = data
1
.dataRe;
+ transtempIm = data
1
.dataIm;
int l=8;
for (int j = start; j < end; j++,l++) {
if ((l&15)==0) {
int l=8;
for (int j = start; j < end; j++,l++) {
if ((l&15)==0) {
@@
-143,14
+140,19
@@
public class fft2d extends Thread {
}
} //end of run
}
} //end of run
- public void transpose(double[][] tempdataRe, double[][] tempdataIm, double[][] outputRe,
- double[][] outputIm, int rowlength, int columnlength) {
+ public void transpose(double[][] tempdataRe, double[][] tempdataIm, int rowlength, int columnlength) {
for(int i = 0; i<rowlength; i++) {
double tRe[] = tempdataRe[i];
double tIm[] = tempdataIm[i];
for(int i = 0; i<rowlength; i++) {
double tRe[] = tempdataRe[i];
double tIm[] = tempdataIm[i];
- for(int j = 0; j<columnlength; j++) {
- outputRe[j][i] = tRe[j];
- outputIm[j][i] = tIm[j];
+ double a;
+
+ for(int j = 0; j<i; j++) {
+ a=tempdataRe[j][i];
+ tempdataRe[j][i] = tRe[j];
+ tRe[j]=a;
+ a=tempdataIm[j][i];
+ tempdataIm[j][i] = tIm[j];
+ tIm[j]=a;
}
}
}
}
}
}
@@
-186,24
+188,21
@@
public class fft2d extends Thread {
mybarr.start(mid[0]);
Matrix data1;
mybarr.start(mid[0]);
Matrix data1;
- Matrix data2;
// Create threads to do FFT
fft2d[] myfft2d;
atomic {
// Set up data for FFT transform
data1 = global new Matrix(SIZE, SIZE);
// Create threads to do FFT
fft2d[] myfft2d;
atomic {
// Set up data for FFT transform
data1 = global new Matrix(SIZE, SIZE);
- data2 = global new Matrix(SIZE, SIZE);
data1.setValues(); //Input Matrix
data1.setValues(); //Input Matrix
- data2.setZeros(); //Transpose Matrix
myfft2d = global new fft2d[NUM_THREADS];
int increment = SIZE/NUM_THREADS;
int base = 0;
for(int i =0 ; i<NUM_THREADS; i++) {
if((i+1)==NUM_THREADS)
myfft2d = global new fft2d[NUM_THREADS];
int increment = SIZE/NUM_THREADS;
int base = 0;
for(int i =0 ; i<NUM_THREADS; i++) {
if((i+1)==NUM_THREADS)
- myfft2d[i] = global new fft2d(data1,
data2,
base, SIZE);
+ myfft2d[i] = global new fft2d(data1, base, SIZE);
else
else
- myfft2d[i] = global new fft2d(data1,
data2,
base, base+increment);
+ myfft2d[i] = global new fft2d(data1, base, base+increment);
base+=increment;
}
}
base+=increment;
}
}