Changeset: 0e08b7ff33eb for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0e08b7ff33eb Modified Files: monetdb5/extras/bwd/operations.c Branch: bwd Log Message:
* minor fixes in uselect
Unterschiede (78 Zeilen):
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
@@ -31,8 +31,8 @@ const int VALUES_PER_WORK_ITEM = 1;
extern const int VALUES_PER_WORK_ITEM;
#endif
/* #define MAX_INTERMEDIATE_RESULT_SIZE 16777216 */
-#define MAX_INTERMEDIATE_RESULT_SIZE 59142609
-
+/* #define MAX_INTERMEDIATE_RESULT_SIZE 59142609 */
+#define MAX_INTERMEDIATE_RESULT_SIZE 67108864
#pragma mark Actual MAL Operations Implementation
#ifdef __APPLE__
@@ -655,6 +655,7 @@ static inline unsigned int refinementLoo
const int positionIsCorrectPositive =
\
(positionIsTruePositiveCondition);
\
positionRegion[j] = index;
\
+
\
j+= ((deCompressedValue comparator value1) &
\
(deCompressedValue comparator2
value2) &
\
(positionIsCorrectPositive));
\
@@ -744,6 +745,7 @@ case '=': {
#undef refineLoopSingleOperator
#undef refineLoopDoubleOperator
}
+
return j;
}
@@ -801,7 +803,7 @@ str uselectrefine(bat *res, bat *bid, pt
clTail* compressedTail;
{
size_t bufferSize;
- size_t approximationSize =
sizeof(clTail) + candidateCount * 4 *
ceil(batTailApproximationBits(approximation)/32.0);
+ size_t approximationSize =
sizeof(clTail) + ceil(candidateCount *
batTailApproximationBits(approximation)/8.0);
clGetMemObjectInfo(batTailApproximation(approximation), CL_MEM_SIZE,
sizeof(size_t), &bufferSize
, NULL);
@@ -809,13 +811,14 @@ str uselectrefine(bat *res, bat *bid, pt
compressedTail =
GDKmalloc(approximationSize);
err =
clEnqueueReadBuffer(getCommandQueue(), batTailApproximation(approximation),
CL_TRUE, 0, approximationSize, compressedTail , 0, NULL, NULL);
if(err) printf("#%s,
clEnqueueReadBuffer: %s, %s:%u;\n", __func__, clError(err), __FILE__, __LINE__);
+ assert(compressedHead->count ==
compressedTail->count);
}
{
unsigned int j =
refinementLoop(OP, OP2, *(int*)val, val2?*(int*)val2:0, candidateCount,
compressedHead, compressedTail, (unsigned int*)residuals,
(oid*) Hloc(data, BUNfirst(data)),
-
batTailApproximationBits(approximation),
-
batTailResidualBits(approximation),
+
batTailApproximationBits(data),
+
batTailResidualBits(data),
positionRegion, (unsigned int*) data->T->heap.base);
if(1) printf ("%s reduced the
result from %zd to %d\n", __func__, Hloc(data,
BUNfirst(data))?MIN(candidateCount, BATcount(data)):candidateCount, j);
@@ -1081,8 +1084,9 @@ str BWDSemijoinRefine(int *res, int *lid
#define projectResidualsLoop(residualPosition)
\
for ( i = j =
0; j < BATcount(right); ++j) { \
-
while(supersetPositionsColumn->positions[i]
\
-
!= ((oid*)right->H->heap.base)[j])
\
+
while((supersetPositionsColumn->positions[i]
\
+
!= ((oid*)right->H->heap.base)[j])
\
+
&& (i<supersetPositionsColumn->count))
\
i++;
\
\
{
\
@@ -1118,7 +1122,8 @@ str BWDSemijoinRefine(int *res, int *lid
projectResidualsLoop(i);
}
#undef projectResidualsLoop
- }
+ }
+
BATsetcount(refinement,
refinementCount);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
