From 72e319e347be465c7bdabab47282d20b3e8316a5 Mon Sep 17 00:00:00 2001 From: Luis Mendes <luis.p.mendes@gmail.com> Date: Sat, 14 Apr 2018 17:49:05 +0100 Subject: [PATCH] Update: Add support for Local arguments in kernel functions (refs #79) - improved unit test --- .../runtime/LocalArrayArgsIssue79Test.java | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/test/java/com/aparapi/runtime/LocalArrayArgsIssue79Test.java b/src/test/java/com/aparapi/runtime/LocalArrayArgsIssue79Test.java index 6dc014ff..4c2f9246 100644 --- a/src/test/java/com/aparapi/runtime/LocalArrayArgsIssue79Test.java +++ b/src/test/java/com/aparapi/runtime/LocalArrayArgsIssue79Test.java @@ -23,7 +23,8 @@ import com.aparapi.device.Device; import com.aparapi.device.OpenCLDevice; import com.aparapi.internal.kernel.KernelManager; import static org.junit.Assume.*; -import org.junit.BeforeClass; + +import org.junit.Before; import org.junit.Test; public class LocalArrayArgsIssue79Test { @@ -31,8 +32,8 @@ public class LocalArrayArgsIssue79Test { private static final int SIZE = 32; private int[] targetArray; - @BeforeClass - public static void setUpBeforeClass() throws Exception { + @Before + public void setUpBeforeClass() throws Exception { Device device = KernelManager.instance().bestDevice(); assumeTrue (device != null && device instanceof OpenCLDevice); openCLDevice = (OpenCLDevice) device; @@ -71,23 +72,30 @@ public class LocalArrayArgsIssue79Test { expected[threadId] *= threadId; } - assertArrayEquals("destArray", expected, targetArray); + assertArrayEquals("targetArray", expected, targetArray); } public static class LocalArrayArgsKernel extends Kernel { - private int[] destArray; + private int[] resultArray; @Local private int[] myArray = new int[SIZE]; + + @PrivateMemorySpace(SIZE) + private int[] other_$private$ = new int[SIZE]; public LocalArrayArgsKernel() { } @NoCL public void setArray(int[] target) { - destArray = target; + resultArray = target; } + private void doInitialCopy(@Local int[] target, int[] source, int id) { + target[id] = source[id]; + } + private void doComputation1(@Local int[] arr, int id) { for (int i = 0; i < SIZE; i++) { arr[id] += i + id; @@ -97,17 +105,22 @@ public class LocalArrayArgsIssue79Test { private void doComputation2(int[] arr_$local$, int id) { arr_$local$[id] *= id; } + + private void doComputation3(int[] arr_$local$, int[] arr_$private$, int id) { + arr_$private$[id] = arr_$local$[id]; + } @Override public void run() { - int id = getLocalId(); + int id = getLocalId(); - myArray[id] = destArray[id]; - + + doInitialCopy(myArray, resultArray, id); doComputation1(myArray, id); doComputation2(myArray, id); + doComputation3(myArray, other_$private$, id); - destArray[id] = myArray[id]; + resultArray[id] = myArray[id]; } } } -- GitLab