package org.trifort.rootbeer.testcases.rootbeertest.serialization; import org.trifort.rootbeer.runtime.Kernel; import org.trifort.rootbeer.runtime.RootbeerGpu; public class AtomicGlobalsRunOnGpu implements Kernel { private int[] intArray; private long[] longArray; private float[] floatArray; private int[] intArray2; private long[] longArray2; private float[] floatArray2; public AtomicGlobalsRunOnGpu(int[] intArray, long[] longArray, float[] floatArray, int[] intArray2, long[] longArray2, float[] floatArray2){ this.intArray = intArray; this.longArray = longArray; this.floatArray = floatArray; this.intArray2 = intArray2; this.longArray2 = longArray2; this.floatArray2 = floatArray2; } @Override public void gpuMethod() { RootbeerGpu.atomicAddGlobal(intArray, 0, 2); RootbeerGpu.atomicAddGlobal(longArray, 0, 2); RootbeerGpu.atomicAddGlobal(floatArray, 0, 2); RootbeerGpu.atomicAddGlobal(intArray, 1, 2); RootbeerGpu.atomicAddGlobal(longArray, 1, 2); RootbeerGpu.atomicAddGlobal(floatArray, 1, 2); RootbeerGpu.atomicAddGlobal(intArray, 2, 2); RootbeerGpu.atomicAddGlobal(longArray, 2, 2); RootbeerGpu.atomicAddGlobal(floatArray, 2, 2); RootbeerGpu.atomicSubGlobal(intArray, 0, 1); RootbeerGpu.atomicSubGlobal(intArray, 1, 1); RootbeerGpu.atomicSubGlobal(intArray, 2, 1); RootbeerGpu.atomicExchGlobal(intArray2, 0, 2); RootbeerGpu.atomicExchGlobal(longArray2, 0, 2); RootbeerGpu.atomicExchGlobal(floatArray2, 0, 2); RootbeerGpu.atomicMinGlobal(intArray2, 0, 2); RootbeerGpu.atomicMaxGlobal(intArray2, 0, 2); RootbeerGpu.atomicCASGlobal(intArray2, 0, 2, 1); RootbeerGpu.atomicAndGlobal(intArray2, 0, 2); RootbeerGpu.atomicOrGlobal(intArray2, 0, 2); RootbeerGpu.atomicXorGlobal(intArray2, 0, 2); } public boolean compare(AtomicGlobalsRunOnGpu rhs) { for(int i = 0; i < intArray.length; ++i){ int value1 = intArray[i]; int value2 = rhs.intArray[i]; if(value1 != value2){ System.out.println("intArray"); System.out.println("index: "+i); System.out.println("value1: "+value1); System.out.println("value2: "+value2); return false; } } for(int i = 0; i < longArray.length; ++i){ long value1 = longArray[i]; long value2 = rhs.longArray[i]; if(value1 != value2){ System.out.println("longArray"); System.out.println("index: "+i); System.out.println("value1: "+value1); System.out.println("value2: "+value2); return false; } } for(int i = 0; i < floatArray.length; ++i){ float value1 = floatArray[i]; float value2 = rhs.floatArray[i]; if(value1 != value2){ System.out.println("floatArray"); System.out.println("index: "+i); System.out.println("value1: "+value1); System.out.println("value2: "+value2); return false; } } return true; } }