Changeset: f425de5b9118 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f425de5b9118
Modified Files:
        monetdb5/extras/bwd/cl_program_utilities.c
Branch: bwd
Log Message:

* using unsigned chars now (important when dealing with values larger than 127 
:-))


Unterschiede (104 Zeilen):

diff --git a/monetdb5/extras/bwd/cl_program_utilities.c 
b/monetdb5/extras/bwd/cl_program_utilities.c
--- a/monetdb5/extras/bwd/cl_program_utilities.c
+++ b/monetdb5/extras/bwd/cl_program_utilities.c
@@ -41,9 +41,9 @@ cl_program compileProgram(const char* so
 
 cl_program getMultiplyProgram(unsigned int approximationBits){
        const char* sourceCode = "__kernel void project (\n"
-               "__global struct{int count; int base; char values[];}* 
outputTail,\n"
-               "__global const struct{int count; int padding; char values[];}* 
inputTail1,"
-               "__global const struct{int count; int padding; char values[];}* 
inputTail2\n) {\n"
+               "__global struct{int count; int base; unsigned char values[];}* 
outputTail,\n"
+               "__global const struct{int count; int padding; unsigned char 
values[];}* inputTail1,"
+               "__global const struct{int count; int padding; unsigned char 
values[];}* inputTail2\n) {\n"
                "  const int offset = get_global_id(0)*approximationBytes;\n"
                "  int value1 = 0;"
                "  for(int i = 0; i < approximationBytes; i++){\n"
@@ -59,16 +59,16 @@ cl_program getMultiplyProgram(unsigned i
 
 cl_program getProjectionLeftjoinProgram(unsigned int approximationBits, 
unsigned int offsetBits){
        const char* sourceCode = "__kernel void project (\n"
-               "__global struct{int count; int base; char values[];}* 
outputTail,\n"
+               "__global struct{int count; int base; unsigned char values[];}* 
outputTail,\n"
                "__global struct{int count; int padding; int positions[];}* 
inputTail,"
-               "__global const struct{int count; int base; char values[];}* 
approximationTail\n) {\n"
+               "__global const struct{int count; int base; unsigned char 
values[];}* approximationTail\n) {\n"
                " if(get_global_id(0) < inputTail->count){\n"
-               " __global const char* approximation = 
approximationTail->values;"
+               " __global const unsigned char* approximation = 
approximationTail->values;"
                "  const int offset = 
inputTail->positions[get_global_id(0)]*approximationBytes;\n"
                /* "  int value = approximationTail->base;" */
                "  for(int i = 0; i < approximationBytes; i++){\n"
                "    outputTail->values[get_global_id(0)*approximationBytes+i] 
= approximation[offset + i];\n"
-               /* "    value += approximation[offset + i] << 8*i;" */
+               /* "    value += approximation[offset + i] << 8*(i+1);" */
                "  }\n"
                /* "  printf(\"projected value (%d): %d (base: %d + %d + %d<<8, 
outbase: %d), approximationBytes: %d\\n\", 
inputTail->positions[get_global_id(0)], value, approximationTail->base, 
approximation[offset], approximation[offset + 1], outputTail->base, 
approximationBytes);" */
                " }\n"
@@ -78,40 +78,28 @@ cl_program getProjectionLeftjoinProgram(
                return compileProgram(sourceCode, options);
 }
 
-/* cl_program getProjectionSemijoinProgram(unsigned int approximationBits){ */
-/*     const char* sourceCode = "__kernel void project (\n" */
-/*             "__global struct{int count; int padding; int positions[];}* 
outputHead,\n" */
-/*             "__global struct{int count; int padding; char values[];}* 
outputTail,\n" */
-/*             "__global struct{int count; int padding; int positions[];}* 
inputHead){\n" */
-/*             /\* "__global const char* approximation\n) {\n" *\/ */
-/*             "  const int offset = 
inputHead->positions[get_global_id(0)]*approximationBytes;\n" */
-/*             "  for(int i = 0; i < approximationBytes; i++)\n" */
-/*             "    outputTail->values[get_global_id(0)*approximationBytes+i] 
= approximation[offset + i];\n" */
-/*             "}"; */
-/*     char options[64]; */
-/*     snprintf(options, 1024, "-D approximationBytes=%d", 
approximationBits/8); */
-/*     return compileProgram(sourceCode, options); */
-/* } */
-
 cl_program getUSelectProgram(int type, char* predicateOperation, char* 
predicateOperation2, unsigned int approximationBits, unsigned int offsetBits, 
char inputIsVoidHeaded){
 
        const char* sourceCodeTemplates[] = {
                [0] = "__kernel void uselect (\n"
                "__global struct{int count; int padding; int positions[];}* 
outputHead,\n"
-               "__global struct{int count; int base; char values[];}* 
outputTail,\n"
-               "__global const struct{int count; int base; char values[];}* 
approximationTail,\n"
+               "__global struct{int count; int base; unsigned char values[];}* 
outputTail,\n"
+               "__global const struct{int count; int base; unsigned char 
values[];}* approximationTail,\n"
                "__global const struct{int count; int padding; int 
positions[];}* approximationHead\n"
                ",\n"
                "const %1$s operand,\n"
                "const %1$s operand2\n"
                ") {\n"
                " if(get_global_id(0) < approximationTail->count){\n"
-               " __global const char* approximation = 
approximationTail->values;"
+               " __global const unsigned char* approximation = 
approximationTail->values;"
                "  %1$s value  = approximationTail->base;\n"
                "  const size_t inputOffset = get_global_id(0)*%4$d;\n"
-               "  for(int i = 0; i < %4$d; i++)\n"
+               "  for(int i = 0; i < %4$d; i++){\n"
                "    value += (approximation[inputOffset + i] << 
((i+sizeof(%1$s)-%6$d - %4$d)*8));\n"
-               "\n"
+               /* "  if(get_global_id(0) < 10)\n" */
+               /* "    printf(\"%%d, i=%%d: value: %%d, chunk: %%d\\n\", 
get_global_id(0), i, value, approximation[inputOffset + i]);\n" */
+
+               "}\n"
                /* "  if(get_global_id(0) < 10)\n" */
                /* "    printf(\"%%d: %%d, base: %%d\\n\", get_global_id(0), 
value, approximationTail->base);\n" */
                "  if((value %2$s operand)"
@@ -135,14 +123,14 @@ cl_program getUSelectProgram(int type, c
                "}",
                [1] = "__kernel void uselect (\n"
                "__global struct{int count; int padding; int positions[];}* 
outputHead,\n"
-               "__global struct{int count; int base; char values[];}* 
outputTail,\n"
-               "__global const struct{int count; int base; char values[];}* 
approximationTail\n"
+               "__global struct{int count; int base; unsigned char values[];}* 
outputTail,\n"
+               "__global const struct{int count; int base; unsigned char 
values[];}* approximationTail\n"
                ",\n"
                "const %1$s operand,\n"
                "const %1$s operand2\n"
                ") {\n"
                " if(get_global_id(0) < approximationTail->count){\n"
-               " __global const char* approximation = 
approximationTail->values;"
+               " __global const unsigned char* approximation = 
approximationTail->values;"
                "  %1$s value  = approximationTail->base;\n"
                "  const size_t inputOffset = get_global_id(0)*%4$d;\n"
                "  for(int i = 0; i < %4$d; i++)\n"
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to