package org.trifort.rootbeer.testcases.rootbeertest.kerneltemplate;
import org.trifort.rootbeer.runtime.Kernel;
import org.trifort.rootbeer.runtime.RootbeerGpu;
public class GpuParametersRunOnGpu implements Kernel {
private int[] m_threadIds;
private int[] m_threadIdxxs;
private int[] m_blockIdxxs;
private int[] m_blockDims;
private long[] m_gridDims;
public GpuParametersRunOnGpu(int thread_count){
m_threadIds = new int[thread_count];
m_threadIdxxs = new int[thread_count];
m_blockIdxxs = new int[thread_count];
m_blockDims = new int[thread_count];
m_gridDims = new long[thread_count];
}
@Override
public void gpuMethod() {
int thread_id = RootbeerGpu.getThreadId();
m_threadIds[thread_id] = thread_id;
m_threadIdxxs[thread_id] = RootbeerGpu.getThreadIdxx();
m_blockIdxxs[thread_id] = RootbeerGpu.getBlockIdxx();
m_blockDims[thread_id] = RootbeerGpu.getBlockDimx();
m_gridDims[thread_id] = RootbeerGpu.getGridDimx();
}
public boolean compare(GpuParametersRunOnGpu rhs) {
if(m_threadIds.length != rhs.m_threadIds.length){
return false;
}
if(m_threadIdxxs.length != rhs.m_threadIdxxs.length){
return false;
}
if(m_blockIdxxs.length != rhs.m_blockIdxxs.length){
return false;
}
if(m_blockDims.length != rhs.m_blockDims.length){
return false;
}
if(m_gridDims.length != rhs.m_gridDims.length){
return false;
}
for(int i = 0; i < m_threadIds.length; ++i){
int lhs_value = m_threadIds[i];
int rhs_value = rhs.m_threadIds[i];
if(lhs_value != rhs_value){
return false;
}
}
for(int i = 0; i < m_threadIdxxs.length; ++i){
int lhs_value = m_threadIdxxs[i];
int rhs_value = rhs.m_threadIdxxs[i];
if(lhs_value != rhs_value){
return false;
}
}
for(int i = 0; i < m_blockIdxxs.length; ++i){
int lhs_value = m_blockIdxxs[i];
int rhs_value = rhs.m_blockIdxxs[i];
if(lhs_value != rhs_value){
return false;
}
}
for(int i = 0; i < m_blockDims.length; ++i){
int lhs_value = m_blockDims[i];
int rhs_value = rhs.m_blockDims[i];
if(lhs_value != rhs_value){
return false;
}
}
for(int i = 0; i < m_gridDims.length; ++i){
long lhs_value = m_gridDims[i];
long rhs_value = rhs.m_gridDims[i];
if(lhs_value != rhs_value){
return false;
}
}
return true;
}
}