parent
1a7f32b9db
commit
80dce07bae
@ -0,0 +1,53 @@
|
||||
package edu.thi.phga.aparapi_test;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.aparapi.Kernel;
|
||||
|
||||
public class MatrixReduce {
|
||||
static final int N = 6;
|
||||
static final int F = 2;
|
||||
public static void start() {
|
||||
var in = new Random().ints(N * N, 1, 10).toArray();
|
||||
var out = new float[N / F * N / F];
|
||||
|
||||
System.out.println("IN:");
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
for (int j = 0; j < N; j++) {
|
||||
System.out.printf("%2d ", in[i * N + j]);
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
reduziere(in, out);
|
||||
|
||||
System.out.println("OUT:");
|
||||
|
||||
for (int i = 0; i < N / F; i++) {
|
||||
for (int j = 0; j < N / F; j++) {
|
||||
System.out.printf("%.1f ", out[i * N / F + j]);
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
||||
public static void reduziere(int[] in, float[] out) {
|
||||
class MyKernel extends Kernel {
|
||||
@Override public void run() {
|
||||
int i = getGlobalId(0);
|
||||
float sum = 0;
|
||||
|
||||
for (int k = 0; k < F; k++) {
|
||||
for (int x = 0; x < F; x++) {
|
||||
sum += in[(i % F) * F + k * N + ((int) i / F) * N + x];
|
||||
}
|
||||
}
|
||||
out[i] = sum / (F * F);
|
||||
}
|
||||
}
|
||||
|
||||
MyKernel k = new MyKernel();
|
||||
k.execute(out.length);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue