/*
* Copyright 2012 Phil Pratt-Szeliga and other contributors
* http://chirrup.org/
*
* See the file LICENSE for copying permission.
*/
package org.trifort.rootbeer.testcases.rootbeertest.gpurequired;
import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
import org.trifort.rootbeer.runtime.Kernel;
public class AtomicLongRunOnGpu implements Kernel {
private AtomicLong m_along;
private AtomicLong m_along2;
private float m_random;
private double m_random2;
private Random random;
private long m_num1;
private long m_num2;
public AtomicLongRunOnGpu(AtomicLong along, Random random){
m_along = along;
m_random = -100;
m_random2 = -100;
this.random = random;
}
@Override
public void gpuMethod() {
m_num1 = m_along.addAndGet(10);
m_random = (float) random.nextDouble();
m_random2 = Math.random();
m_along2 = new AtomicLong(30);
m_num1 = m_along2.addAndGet(5);
m_num2 = m_along2.addAndGet(5);
m_random2 = 10;
}
boolean compare(AtomicLongRunOnGpu grhs) {
if(grhs == null){
System.out.println("grhs == null");
return false;
}
if(m_num1 != grhs.m_num1){
System.out.println("m_num1");
System.out.println("lhs: "+m_num1);
System.out.println("rhs: "+grhs.m_num1);
return false;
}
if(m_num2 != grhs.m_num2){
System.out.println("m_num2");
System.out.println("lhs: "+m_num2);
System.out.println("rhs: "+grhs.m_num2);
return false;
}
if(m_along2.get() != grhs.m_along2.get()){
System.out.println("m_along2");
System.out.println("lhs: "+m_along2.get());
System.out.println("rhs: "+grhs.m_along2.get());
return false;
}
if(m_along.get() != grhs.m_along.get()){
System.out.println("m_along");
System.out.println("lhs: "+m_along.get());
System.out.println("rhs: "+grhs.m_along.get());
return false;
}
if(grhs.m_random == -100){
System.out.println("m_random");
return false;
}
if(grhs.m_random2 == -100){
System.out.println("m_random2");
return false;
}
return true;
}
}