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

* residuals for non-zero based values were calculated wrongly, fixed it


Unterschiede (79 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
@@ -148,15 +148,15 @@ cl_program getUSelectProgram(int type, c
                "  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: %%d, base: %%d\\n\", get_global_id(0), 
value, approximationTail->base);\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)"
                "     && (%5$d || value %3$s operand2)"
                "    )"
                "{\n"
                "    const int index = atomic_inc(&(outputHead->count));\n"
                "    atomic_inc(&(outputTail->count));\n" // TODO: this could 
probably be done more efficiently
-               /* "    printf(\"selected value %%d from slot %%d into slot 
%%d\\n\", value, get_global_id(0), index);\n" */
+               "    printf(\"selected value %%d from slot %%d into slot 
%%d\\n\", value, get_global_id(0), index);\n"
                "    const int offset = index * %4$d;\n"
                "    outputHead->positions[index] = get_global_id(0);\n"
                "    for(int i = 0; i < %4$d; i++){\n"
diff --git a/monetdb5/extras/bwd/operations.c b/monetdb5/extras/bwd/operations.c
--- a/monetdb5/extras/bwd/operations.c
+++ b/monetdb5/extras/bwd/operations.c
@@ -20,7 +20,11 @@
 static const int activateWorkInProgress = 1;
 static const int synchronousGPU = 1;
 static const int eagerBufferLoading = 1;
-#define WORK_GROUP_SIZE 16
+#ifdef __APPLE__
+static const int WORK_GROUP_SIZE=1;
+#else
+static const int WORK_GROUP_SIZE=16;
+#endif
 #define MAX_INTERMEDIATE_RESULT_SIZE 16777216
 
 #pragma mark Actual MAL Operations Implementation
@@ -455,6 +459,7 @@ str uselectrefine(bat *res, bat *bid, pt
                                                const int deCompressedValue =   
compressedTail->base+                                   \
                                                        (compressedValue << 
tailResidualBits)                                                               
                    \
                                                        + 
(*(int*)&residuals[index*residualBytes] & residualMask); \
+                                               printf ("compr: %d, decompr: 
%d\n", compressedValue, deCompressedValue); \
                                                {                               
                                                                                
                                                                                
                                                \
                                                        positionRegion[j] = 
index;                                                                          
                                                    \
                                                        j+= ((deCompressedValue 
comparator value1) &                                                    \
diff --git a/monetdb5/extras/bwd/utilities.c b/monetdb5/extras/bwd/utilities.c
--- a/monetdb5/extras/bwd/utilities.c
+++ b/monetdb5/extras/bwd/utilities.c
@@ -279,7 +279,7 @@ const unsigned int decomposeIntArray(con
        const register unsigned int residualMask = (1 << residualBits)-1;
        int i;
        for (i = 0; i < size; ++i){
-               *((unsigned int*)(slot->residuals + i*residualBytes)) |= 
(subject[i]&residualMask);
+               *((unsigned int*)(slot->residuals + i*residualBytes)) |= 
((subject[i]-approximation->base)&residualMask);
                *((unsigned 
int*)(&approximation->elements[i*approximationBytes])) |= 
((subject[i]-approximation->base) >> residualBits);
        }
        {
@@ -295,6 +295,20 @@ const unsigned int decomposeIntArray(con
                program = compileProgram("__kernel void dummy (__global const 
struct{int count; int padding; char values[];}* inputTail1){}","");
        cl_kernel dummyKernel = clCreateKernel(program, "dummy", &err);
 
+       if(0)
+               for (int i = 0; i < size; ++i) {
+                       int approximationValue = 0, residualValue = 0;
+                       for (int j = 0; j < approximationBytes ; ++j){
+                               printf ("%d\n", 
approximation->elements[i*approximationBytes+j]);
+                               approximationValue = 
approximation->elements[i*approximationBytes+j]<<(j*8);
+                       }
+
+                       for (int j = 0; j < residualBytes; ++j)
+                               residualValue = 
slot->residuals[i*residualBytes+j]<<(j*8);
+                       printf ("base: %d, approximation: %d, refinement: 
%d\n", approximation->base, 
approximation->base+(approximationValue<<(residualBytes*8)), 
approximation->base+(approximationValue<<(residualBytes*8)) + residualValue);
+                       
+               }
+       
        clSetKernelArg(dummyKernel, 0, sizeof(cl_mem), 
(cl_mem[]){slot->tailApproximation});
        if((err = clEnqueueNDRangeKernel(getCommandQueue(), dummyKernel, 1, 
(const size_t[]){0}, (const size_t[]){1}, (const size_t[]){1}, 0, NULL, NULL)))
                printf("#%s, clEnqueueNDRangeKernel: %s;\n", __func__, 
clError(err));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to