|
|
__kernel void splitDataSet(__global char *in, __global int *out, const int rowSpan, const int colSpan, __global char *pat, const int pat_length, __global char* out_char, __global char* nullChar) { const int idx = get_global_id(0); int start = (idx * rowSpan); int end = start + rowSpan; int N = rowSpan; int M = pat_length; bool found = false; char nullCharTemp = nullChar[0]; if(in[start]!=nullCharTemp) { for(int k=start;k<end;k++) { int j; /* For current index i, check for pattern match */ for (j = 0; j < M; j++) { if (in[k + j] != pat[j]) break; } if (j == M) { out[idx] = 1; found = true; break; } } } if(found) { for(int k=start;k<end;k++) { out_char[k] = in[k]; } } if(!found) { out[idx] = 0; for(int k=start;k<end;k++) { out_char[k] = nullCharTemp; }
//out_char[start] = ' ';
} } __kernel void sumReduction(__global int *A, __global int* C, int offset) { int global_id = get_global_id(0); //if(get_global_size(0) < 5) // printf("Thread id = %d", global_id); int start = global_id * offset; int end = start + offset; int i; for(i=start; i<end; i++) { C[global_id] += A[i]; } }
__kernel void foldKernel(__global int *arVal, int offset) { int gid = get_global_id(0); arVal[gid] = arVal[gid]+arVal[gid+offset]; }
__kernel void allOneValues(__global char* examples, __global int* yesArray, __global int* noArray, const int rowSpan, __global char* yes, __global char* no, __global char* nullChar) { const int idx = get_global_id(0); int start = (idx * rowSpan); int end = start + rowSpan; int N = rowSpan; int M = 16; bool found = false;
char nullCharTemp = nullChar[0]; if(examples[start]!=nullCharTemp) { for(int k=start;k<end;k++) { int j; /* For current index i, check for pattern match */ for (j = 0; j < M; j++) { if (examples[k + j] != yes[j]) break; } if (j == M) { //out[idx] = 1; found = true; break; } } } if(found) { for(int k=start;k<end;k++) { //out_char[k] = in[k]; } //printf("Found at %d", idx); yesArray[idx] = 1; noArray[idx] = 0; } if(!found) { //out[idx] = 0; for(int k=start;k<end;k++) { //out_char[k] = nullCharTemp; }
//out_char[start] = ' ';
yesArray[idx] = 0; noArray[idx] = 1; } }
__kernel void splitDataSetNew(__global char *examplesChar, __global int* examplesInt, const int rowSpan, __global char *pat, const int pat_length, __global int* examplesViInt) { const int idx = get_global_id(0); int start = (idx * rowSpan); int end = start + rowSpan; int N = rowSpan; int M = pat_length; bool found = false; if(examplesInt[idx] == 1) { for(int k=start;k<end;k++) { int j; /* For current index i, check for pattern match */ for (j = 0; j < M; j++) { if (examplesChar[k + j] != pat[j]) break; } if (j == M) { //out[idx] = 1; found = true; break; } } } if(found) { examplesViInt[idx] = 1; } else { examplesViInt[idx] = 0; } }
__kernel void splitDataSet3(__global char *examplesChar, __global int* examplesInt, const int rowSpan, const int cellSpan, const int index, __global char *pat, const int pat_length, __global int* examplesViInt) { const int idx = get_global_id(0); int start = (idx * rowSpan + (2*index+1)*cellSpan); int end = start + cellSpan; //int N = rowSpan; int M = pat_length; bool found = false;
if(examplesInt[idx] == 1) { for(int k=start;k<end;k++) { int j; /* For current index i, check for pattern match */ for (j = 0; j < M; j++) { if (examplesChar[k + j] != pat[j]) break; } if (j == M) { //out[idx] = 1; found = true; examplesViInt[idx] = 1; break; } } } if(!found) { examplesViInt[idx] = 0; } }
__kernel void splitDataSet4(__global char *examplesChar, __global int* examplesInt, const int rowSpan, const int cellSpan, const int index, __global char *pat, const int pat_length, __global char* yes, __global int* yesArray, __global int* noArray, int targetIndex) { const int idx = get_global_id(0); int start = (idx * rowSpan + (2*index+1)*cellSpan); int end = start + cellSpan; //int N = rowSpan; int M = pat_length; bool found = false;
if(examplesInt[idx] == 1) { for(int k=start;k<end;k++) { int j; /* For current index i, check for pattern match */ for (j = 0; j < M; j++) { if (examplesChar[k + j] != pat[j]) break; } if (j == M) { //out[idx] = 1; found = true; //examplesViInt[idx] = 1;
} } }
if(found) { int start = (idx * rowSpan + (2*targetIndex+1)*cellSpan); int end = start + cellSpan; int M = 6; bool yesFound = false; for(int k=start;k<end;k++) { int j; /* For current index i, check for pattern match */ for (j = 0; j < M; j++) { if (examplesChar[k + j] != yes[j]) break; } if (j == M) { //out[idx] = 1; //found = true; //examplesViInt[idx] = 1; yesArray[idx] = 1; noArray[idx] = 0; yesFound = true; break; } } if(!yesFound){ noArray[idx] = 1; yesArray[idx] = 0; } } else{ yesArray[idx] = 0; noArray[idx] = 0; }
}
__kernel void getCount(__global char *examplesChar, __global int* examplesInt, const int rowSpan, const int cellSpan, const int index, __global char *pat, const int pat_length, __global int* countArray) { const int idx = get_global_id(0); int start = (idx * rowSpan + (2*index+1)*cellSpan); int end = start + cellSpan; //int N = rowSpan; int M = pat_length; bool found = false; if(examplesInt[idx] == 1) { for(int k=start;k<end;k++) { int j; /* For current index i, check for pattern match */ for (j = 0; j < M; j++) { if (examplesChar[k + j] != pat[j]) break; } if (j == M) { //out[idx] = 1; found = true; countArray[idx] = 1; break; } } } if(!found) { countArray[idx] = 0; } }
|