From 82d14d4a72e0969a93f2eb7b76cb165989eba6a9 Mon Sep 17 00:00:00 2001 From: Gary Frost <frost.gary@gmail.com> Date: Mon, 6 Aug 2012 21:24:01 +0000 Subject: [PATCH] --- test/runtime/build.xml | 72 +++++----- .../aparapi/test/runtime/BufferTransfer.java | 125 ++++++++++++++++++ 2 files changed, 155 insertions(+), 42 deletions(-) create mode 100644 test/runtime/src/java/com/amd/aparapi/test/runtime/BufferTransfer.java diff --git a/test/runtime/build.xml b/test/runtime/build.xml index 7af1dceb..b52d42ac 100644 --- a/test/runtime/build.xml +++ b/test/runtime/build.xml @@ -3,15 +3,15 @@ <project name="codegen" default="junit" basedir="."> <!-- - USER CONFIGURABLE PROPERTIES + USER CONFIGURABLE PROPERTIES --> <property name="junit.jar.version" value="4.10"/> <property name="junit.jar.name" value="junit-${junit.jar.version}.jar"/> <property name="junit.home" value="${basedir}/.libs"/> <property name="junit.base.url" value="http://repo1.maven.org/maven2/junit/junit"/> - + <!-- - DO NOT EDIT BELOW THIS LINE + DO NOT EDIT BELOW THIS LINE --> <echo>OS Name: ${os.name}</echo> <echo>OS Version: ${os.version}</echo> @@ -20,24 +20,23 @@ <property name="build.compiler" value="javac1.6"/> <property name="ant.build.javac.source" value="1.6"/> <property name="ant.build.javac.target" value="1.6"/> - + <available property="junit.installed" file="${junit.home}/${junit.jar.name}"/> - <target name="install.junit" unless="junit.installed"> - <mkdir dir="${junit.home}"/> - <!-- Cleanup all existing JUnit installations --> - <delete failonerror="false" includeEmptyDirs="true"> - <fileset dir="${junit.home}" includes="junit*/"/> - </delete> - <!-- Download and unzip requested JUnit version --> - <get src="${junit.base.url}/${junit.jar.version}/${junit.jar.name}" dest="${junit.home}"/> - </target> - + <target name="install.junit" unless="junit.installed"> + <mkdir dir="${junit.home}"/> + <!-- Cleanup all existing JUnit installations --> + <delete failonerror="false" includeEmptyDirs="true"> + <fileset dir="${junit.home}" includes="junit*/"/> + </delete> + <!-- Download and unzip requested JUnit version --> + <get src="${junit.base.url}/${junit.jar.version}/${junit.jar.name}" dest="${junit.home}"/> + </target> + <target name="clean"> <delete dir="classes"/> <delete dir="junit"/> - <delete dir="src/genjava/com"/> - <!-- Legacy cleanup --> + <!-- Legacy cleanup --> <delete file="junit*.jar"/> </target> @@ -46,41 +45,30 @@ <pathelement path="${junit.home}/${junit.jar.name}"/> <pathelement path="classes"/> </path> - + <target name="junit" depends="clean, install.junit"> <mkdir dir="classes"/> - <javac debug="true" - debuglevel="lines,vars,source" + <javac debug="true" + debuglevel="lines,vars,source" srcdir="src/java" - destdir="classes" - includeAntRuntime="false" - classpathref="classpath"> - <compilerarg value="-Xlint"/> - <compilerarg value="-Xlint:-path"/> + destdir="classes" + includeAntRuntime="false" + classpathref="classpath"> + <compilerarg value="-Xlint"/> + <compilerarg value="-Xlint:-path"/> </javac> - <java classname="com.amd.aparapi.CreateJUnitTests" classpathref="classpath"> - <sysproperty key="root" value="${basedir}"/> - </java> - - <javac debug="true" - debuglevel="lines,vars,source" - srcdir="src/genjava" - destdir="classes" - includeAntRuntime="false" - classpathref="classpath"> - <compilerarg value="-Xlint"/> - <compilerarg value="-Xlint:-path"/> - </javac> - - <mkdir dir="junit"/> + <mkdir dir="junit"/> <mkdir dir="junit/data"/> - - <junit printsummary="false" fork="false" haltonfailure="false" failureproperty="tests.failed" showoutput="false"> + + <!-- even though fork is slower we need to set the library path and this requires fork --> + + <junit printsummary="false" fork="true" haltonfailure="false" failureproperty="tests.failed" showoutput="false"> + <sysproperty key="java.library.path" value="..\..\com.amd.aparapi.jni\dist"/> <formatter type="xml" /> <classpath refid="classpath"/> <batchtest todir="junit/data"> - <fileset dir="src/genjava"/> + <fileset dir="src\java"/> </batchtest> </junit> diff --git a/test/runtime/src/java/com/amd/aparapi/test/runtime/BufferTransfer.java b/test/runtime/src/java/com/amd/aparapi/test/runtime/BufferTransfer.java new file mode 100644 index 00000000..0074b8e5 --- /dev/null +++ b/test/runtime/src/java/com/amd/aparapi/test/runtime/BufferTransfer.java @@ -0,0 +1,125 @@ +package com.amd.aparapi.test.runtime; + +import static org.junit.Assert.*; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import com.amd.aparapi.Kernel; +import com.amd.aparapi.Range; + +public class BufferTransfer{ + + + interface Filler{ + void fill(int[] array, int index); + } + interface Comparer{ + boolean same(int[] lhs, int[]rhs, int index); + } + void fill(int[] array, Filler _filler ){ + for (int i=0; i<array.length; i++ ){ + _filler.fill(array, i); + } + } + boolean same(int[] lhs, int[] rhs, Comparer _comparer ){ + boolean same = lhs != null && rhs!=null && lhs.length==rhs.length; + for (int i=0; same && i<lhs.length; i++ ){ + same = _comparer.same(lhs, rhs, i); + } + return(same); + } + void zero(int[] array){ + Arrays.fill(array, 0); + } + + boolean same(int[] lhs, int[] rhs){ + return(same(lhs, rhs, new Comparer(){ + + @Override public boolean same(int[] lhs, int[] rhs, int index) { + + return lhs[index]==rhs[index]; + }})); + } + + + public static class BufferTransferKernel extends Kernel{ + int[] inSmall; + int[] inLarge; + int[] inOutSmall; + int[] inOutLarge; + int[] outSmall; + int[] outLarge; + int pass; + @Override public void run() { + int gid = getGlobalId(0); + outSmall[gid] = inSmall[gid]; + outLarge[gid*1024*16+pass] = inSmall[gid]; + + } + + } + + @BeforeClass public static void setUpBeforeClass() throws Exception { + System.out.println("setUpBeforeClass"); + } + + + @AfterClass public static void tearDownAfterClass() throws Exception { + System.out.println("tearDownAfterClass"); + } + + @Before public void setUp() throws Exception { + System.out.println("setup"); + } + + @After public void tearDown() throws Exception { + System.out.println("tearDown"); + } + + + + @Test public void once() { + + final int SMALL_SIZE=2048; + final int LARGE_SIZE=2048*1024*16; + final BufferTransferKernel bufferTransferKernel = new BufferTransferKernel(); + final Range range = Range.create(LARGE_SIZE); + final Range smallRange = Range.create(SMALL_SIZE); + + bufferTransferKernel.inSmall = new int[SMALL_SIZE]; + bufferTransferKernel.inLarge = new int[LARGE_SIZE]; + bufferTransferKernel.inOutSmall = new int[SMALL_SIZE]; + bufferTransferKernel.inOutLarge = new int[LARGE_SIZE]; + bufferTransferKernel.outSmall = new int[SMALL_SIZE]; + bufferTransferKernel.outLarge = new int[LARGE_SIZE]; + + zero(bufferTransferKernel.inSmall); + zero(bufferTransferKernel.inOutSmall); + zero(bufferTransferKernel.outSmall); + zero(bufferTransferKernel.inLarge); + zero(bufferTransferKernel.inOutLarge); + zero(bufferTransferKernel.outLarge); + + // bufferTransferKernel.setExecutionMode(Kernel.EXECUTION_MODE.SEQ); + fill(bufferTransferKernel.inSmall, new Filler(){ + public void fill(int[] array, int index) { + array[index]=index; + }}); + bufferTransferKernel.execute(smallRange); + + assertTrue("inSmall == outSmall", same(bufferTransferKernel.inSmall, bufferTransferKernel.outSmall)); + + + + + } + +} -- GitLab