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

* switched positions of overloaded uselectapproximate mal declarations (mal 
type-matching is weird)
* fixed approximate uselect approximation output when overlapping word-size


Unterschiede (50 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
@@ -160,7 +160,7 @@ cl_program getUSelectProgram(int type, c
                "    size_t outoffset = 
(index*approximationBits)%targetTypeBits;\n"
                "    if(outoffset+approximationBits > 8*sizeof(accessType)){"
                /* "      outputTail[2+outslot] |= (delta << 
(approximationBits-(8*sizeof(accessType)-outoffset)));" */
-               "      atomic_add(&(outputTail[2+outslot]), (delta >> 
(8*sizeof(accessType)+approximationBits-targetTypeBits)));"
+               "      atomic_add(&(outputTail[2+outslot]), 
(approximationBits+outoffset-(8*sizeof(accessType))));"
                "      atomic_add(&(outputTail[2+outslot+1]), (delta << 
(8*sizeof(accessType)-(outoffset+approximationBits-targetTypeBits))));"         
                "    }else{"
                "      atomic_add(&(outputTail[2+outslot]), (delta << 
(8*sizeof(accessType)-outoffset-approximationBits)));"
@@ -200,13 +200,13 @@ cl_program getUSelectProgram(int type, c
                "  if((value firstOperator operand)"
                "     && (secondOperatorUnset || value secondOperator operand2)"
                "    ){\n"
+               "    atomic_inc(outputTail);\n" // TODO: this could probably be 
done more efficiently
                "    const int index = atomic_inc(outputHead);\n"
-               "    atomic_inc(outputTail);\n" // TODO: this could probably be 
done more efficiently
                "    size_t outslot = 
(index*approximationBits)/targetTypeBits;\n"
                "    size_t outoffset = 
(index*approximationBits)%targetTypeBits;\n"
                "    outputHead[2+index] = get_global_id(0);\n"
                "    if(outoffset+approximationBits > 8*sizeof(accessType)){"
-               "      atomic_add(&(outputTail[2+outslot]), (delta >> 
(8*sizeof(accessType)+approximationBits-targetTypeBits)));"
+               "      atomic_add(&(outputTail[2+outslot]), (delta >> 
(approximationBits+outoffset-(8*sizeof(accessType)))));"
                "      atomic_add(&(outputTail[2+outslot+1]), (delta << 
(8*sizeof(accessType)-(outoffset+approximationBits-targetTypeBits))));"         
                "    }else"
                        "      atomic_add(&(outputTail[2+outslot]), (delta << 
(8*sizeof(accessType)-outoffset-approximationBits)));"
diff --git a/monetdb5/extras/bwd/opt_bwd.mal b/monetdb5/extras/bwd/opt_bwd.mal
--- a/monetdb5/extras/bwd/opt_bwd.mal
+++ b/monetdb5/extras/bwd/opt_bwd.mal
@@ -33,14 +33,15 @@ address BWDThetauselectRefine
 comment "The refinement of an approximation of a theta (<=,<,=,>,>=) select() 
limited to head values";
 
 
-command uselectapproximate(b:bat[:any_1,:any_2], low:any_2, high:any_2, 
-               li:bit, hi:bit) :bat[:any_1,:void] 
-address BWDUselectInclusiveApproximate;
 
 command uselectapproximate(b:bat[:any_1,:any_2], low:any_2, high:any_2, 
                li:bit, hi:bit) :bat[:any_1,:any_2] 
 address BWDUselectInclusiveApproximateWithTail;
 
+command uselectapproximate(b:bat[:any_1,:any_2], low:any_2, high:any_2, 
+               li:bit, hi:bit) :bat[:any_1,:void] 
+address BWDUselectInclusiveApproximate;
+
 command uselectrefine(b:bat[:any_1,:any_2], low:any_2, high:any_2, 
                li:bit, hi:bit, approximation:bat[:any_1,:void] ) 
:bat[:any_1,:void] 
 address BWDUselectInclusiveRefine;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to