Changeset: b304b24b78b6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b304b24b78b6
Modified Files:
gdk/gdk_bitvector.c
gdk/gdk_bitvector.h
monetdb5/modules/mosaic/TODO_MOSAIC.txt
monetdb5/modules/mosaic/mosaic_delta.c
monetdb5/modules/mosaic/mosaic_delta.h
monetdb5/modules/mosaic/mosaic_frame.c
monetdb5/modules/mosaic/mosaic_prefix.c
monetdb5/modules/mosaic/mosaic_prefix.h
Branch: mosaic
Log Message:
Bits counters fit in a byte.
diffs (209 lines):
diff --git a/gdk/gdk_bitvector.c b/gdk/gdk_bitvector.c
--- a/gdk/gdk_bitvector.c
+++ b/gdk/gdk_bitvector.c
@@ -61,7 +61,7 @@ newBitVector(BUN cnt, int width)
// get the bits of cell i
int
-getBitVector(BitVector vector, BUN i, int bits)
+getBitVector(BitVector vector, BUN i, const bte bits)
{
BUN cid;
unsigned int value = 0, shift, m1;
@@ -93,7 +93,7 @@ getBitVector(BitVector vector, BUN i, in
// set the bits of cell idx to the lower number of bits of the value
void
-setBitVector(BitVector vector, const BUN i, const int bits, const
BitVectorChunk value)
+setBitVector(BitVector vector, const BUN i, const bte bits, const
BitVectorChunk value)
{
BUN cid;
unsigned int m1, shift;
@@ -129,14 +129,14 @@ setBitVector(BitVector vector, const BUN
// clear a cell
void
-clrBitVector(BitVector vector, BUN i, int bits)
+clrBitVector(BitVector vector, BUN i, const bte bits)
{
setBitVector(vector,i,bits, 0);
}
int
-tstBitVector(BitVector m, BUN idx, int width)
+tstBitVector(BitVector m, BUN idx, const bte width)
{
return getBitVector(m,idx,width) > 0;
}
diff --git a/gdk/gdk_bitvector.h b/gdk/gdk_bitvector.h
--- a/gdk/gdk_bitvector.h
+++ b/gdk/gdk_bitvector.h
@@ -24,10 +24,10 @@ typedef BitVectorChunk *BitVector;
gdk_export void initBitMasks(void);
gdk_export size_t getBitVectorSize(const BUN cnt, const int width);
gdk_export BitVector newBitVector(BUN cnt, int width);
-gdk_export void setBitVector(BitVector vector, const BUN i, const int bits,
const BitVectorChunk value);
-gdk_export void clrBitVector(BitVector vector, BUN i, int bits);
-gdk_export int tstBitVector(BitVector vector, BUN i, int bits);
-gdk_export int getBitVector(BitVector vector, BUN i, int bits);
+gdk_export void setBitVector(BitVector vector, const BUN i, const bte bits,
const BitVectorChunk value);
+gdk_export void clrBitVector(BitVector vector, BUN i, const bte bits);
+gdk_export int tstBitVector(BitVector vector, BUN i, const bte bits);
+gdk_export int getBitVector(BitVector vector, BUN i, const bte bits);
#define BitVectorSize(CNT, BITS) wordaligned(((CNT) * (BITS) / CHAR_BIT) + (
((CNT) * (BITS)) % CHAR_BIT != 0 ), BitVectorChunk)
diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt
b/monetdb5/modules/mosaic/TODO_MOSAIC.txt
--- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt
+++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt
@@ -22,6 +22,5 @@ Create a plug-in estimation model framew
####code issues####
See if the iteration algorithms can be improved.
Get rid of (most of) MOStask and/or don't allocate it on the heap.
-Make sure the parameters.bits fields are always char.
Use GDK naming conventions, e.g. o for stuff coming out if canditer_next.
Update copyright in 2020.
diff --git a/monetdb5/modules/mosaic/mosaic_delta.c
b/monetdb5/modules/mosaic/mosaic_delta.c
--- a/monetdb5/modules/mosaic/mosaic_delta.c
+++ b/monetdb5/modules/mosaic/mosaic_delta.c
@@ -94,7 +94,7 @@ MOSlayout_delta(MOStask task, BAT *btech
#define determineDeltaParameters(PARAMETERS, SRC, LIMIT, TPE) \
do {\
TPE *val = SRC;\
- int bits = 1;\
+ bte bits = 1;\
unsigned int i;\
DeltaTpe(TPE) unsigned_delta = 0;\
TPE prev_val;\
@@ -111,7 +111,7 @@ do {\
}\
\
if (current_unsigned_delta > unsigned_delta) {\
- int current_bits = bits;\
+ bte current_bits = bits;\
while (current_unsigned_delta > ((DeltaTpe(TPE))(-1))
>> (sizeof(DeltaTpe(TPE)) * CHAR_BIT - current_bits) ) {\
/*keep track of number of BITS necessary to
store the difference*/\
current_bits++;\
@@ -247,7 +247,7 @@ MOSdecompress_DEF(hge)
MOSBlockHeaderTpe(delta, TPE)* parameters = (MOSBlockHeaderTpe(delta,
TPE)*) task->blk;\
BitVector base = (BitVector) MOScodevectorDelta(task, TPE);\
DeltaTpe(TPE) acc = (DeltaTpe(TPE)) parameters->init; /*previous
value*/\
- int bits = parameters->bits;\
+ const bte bits = parameters->bits;\
DeltaTpe(TPE) sign_mask = (DeltaTpe(TPE)) ((IPTpe(TPE)) 1) << (bits -
1);\
v = (TPE) acc;\
BUN j = 0;\
@@ -276,7 +276,7 @@ MOSselect_DEF(delta, hge)
MOSBlockHeaderTpe(delta, TPE)* parameters = (MOSBlockHeaderTpe(delta,
TPE)*) task->blk;\
BitVector base = (BitVector) MOScodevectorDelta(task, TPE);\
DeltaTpe(TPE) acc = (DeltaTpe(TPE)) parameters->init; /*previous
value*/\
- int bits = parameters->bits;\
+ const bte bits = parameters->bits;\
DeltaTpe(TPE) sign_mask = (DeltaTpe(TPE)) ((IPTpe(TPE)) 1) << (bits -
1);\
TPE v = (TPE) acc;\
BUN j = 0;\
@@ -304,7 +304,7 @@ MOSprojection_DEF(delta, hge)
MOSBlockHeaderTpe(delta, TPE)* parameters = (MOSBlockHeaderTpe(delta,
TPE)*) task->blk;\
BitVector base = (BitVector) MOScodevectorDelta(task, TPE);\
DeltaTpe(TPE) acc = (DeltaTpe(TPE)) parameters->init; /*previous
value*/\
- int bits = parameters->bits;\
+ const bte bits = parameters->bits;\
DeltaTpe(TPE) sign_mask = (DeltaTpe(TPE)) ((IPTpe(TPE)) 1) << (bits -
1);\
TPE lval = (TPE) acc;\
BUN j = 0;\
diff --git a/monetdb5/modules/mosaic/mosaic_delta.h
b/monetdb5/modules/mosaic/mosaic_delta.h
--- a/monetdb5/modules/mosaic/mosaic_delta.h
+++ b/monetdb5/modules/mosaic/mosaic_delta.h
@@ -50,7 +50,7 @@ ALGEBRA_INTERFACES_INTEGERS_ONLY(delta);
MOSBlockHeaderTpe(delta, TPE)* parameters = (MOSBlockHeaderTpe(delta,
TPE)*) task->blk;\
BitVector base = MOScodevectorDelta(task, TPE);\
DeltaTpe(TPE) acc = (DeltaTpe(TPE)) parameters->init; /*previous
value*/\
- char bits = parameters->bits;\
+ const bte bits = parameters->bits;\
DeltaTpe(TPE) sign_mask = (DeltaTpe(TPE)) ((IPTpe(TPE)) 1) << (bits -
1);\
TPE rval = (TPE) acc;\
BUN j = 0;\
diff --git a/monetdb5/modules/mosaic/mosaic_frame.c
b/monetdb5/modules/mosaic/mosaic_frame.c
--- a/monetdb5/modules/mosaic/mosaic_frame.c
+++ b/monetdb5/modules/mosaic/mosaic_frame.c
@@ -92,7 +92,7 @@ MOSlayout_frame(MOStask task, BAT *btech
#define determineFrameParameters(PARAMETERS, SRC, LIMIT, TPE) \
do {\
TPE *val = SRC, max, min;\
- int bits = 1;\
+ bte bits = 1;\
unsigned int i;\
max = *val;\
min = *val;\
@@ -111,7 +111,7 @@ do {\
}\
if (evaluate_bits) {\
DeltaTpe(TPE) width = GET_DELTA(TPE, current_max,
current_min);\
- int current_bits = bits;\
+ bte current_bits = bits;\
while (width > ((DeltaTpe(TPE))(-1)) >>
(sizeof(DeltaTpe(TPE)) * CHAR_BIT - current_bits) ) {/*keep track of number of
BITS necessary to store difference*/\
current_bits++;\
}\
diff --git a/monetdb5/modules/mosaic/mosaic_prefix.c
b/monetdb5/modules/mosaic/mosaic_prefix.c
--- a/monetdb5/modules/mosaic/mosaic_prefix.c
+++ b/monetdb5/modules/mosaic/mosaic_prefix.c
@@ -133,15 +133,15 @@ MOSadvance_DEF(hge)
do {\
PrefixTpe(TPE) *val = (PrefixTpe(TPE)*) (SRC);\
const int type_size_in_bits = sizeof(PrefixTpe(TPE)) * CHAR_BIT;\
- int suffix_bits = 1;\
- int prefix_bits = type_size_in_bits - suffix_bits;\
+ bte suffix_bits = 1;\
+ bte prefix_bits = type_size_in_bits - suffix_bits;\
PrefixTpe(TPE) prefix_mask = getPrefixMask(prefix_bits, TPE);\
PrefixTpe(TPE) prefix = *val & prefix_mask;\
/*TODO: add additional loop to find best bit wise upper bound*/\
BUN i;\
for(i = 0; i < (LIMIT); i++, val++){\
- int current_prefix_bits = prefix_bits;\
- int current_suffix_bits = suffix_bits;\
+ bte current_prefix_bits = prefix_bits;\
+ bte current_suffix_bits = suffix_bits;\
PrefixTpe(TPE) current_prefix = prefix;\
PrefixTpe(TPE) current_prefix_mask = prefix_mask;\
\
@@ -291,7 +291,7 @@ MOSdecompress_DEF(hge)
MOSBlockHeaderTpe(prefix, TPE)* parameters = (MOSBlockHeaderTpe(prefix,
TPE)*) task->blk;\
BitVector base = (BitVector) MOScodevectorPrefix(task, TPE);\
PrefixTpe(TPE) prefix = parameters->prefix;\
- int suffix_bits = parameters->suffix_bits;\
+ bte suffix_bits = parameters->suffix_bits;\
for (oid c = canditer_peekprev(task->ci); !is_oid_nil(c) && c < last; c =
CI_NEXT(task->ci)) {\
BUN i = (BUN) (c - first);\
v = (TPE) (prefix | getBitVector(base,i,suffix_bits));\
@@ -314,7 +314,7 @@ MOSselect_DEF(prefix, hge)
MOSBlockHeaderTpe(prefix, TPE)* parameters = (MOSBlockHeaderTpe(prefix,
TPE)*) task->blk;\
BitVector base = (BitVector) MOScodevectorPrefix(task, TPE);\
PrefixTpe(TPE) prefix = parameters->prefix;\
- int suffix_bits = parameters->suffix_bits;\
+ bte suffix_bits = parameters->suffix_bits;\
for (oid o = canditer_peekprev(task->ci); !is_oid_nil(o) && o < last; o
= CI_NEXT(task->ci)) {\
BUN i = (BUN) (o - first);\
TPE value = (TPE) (prefix | getBitVector(base,i,suffix_bits));\
@@ -336,7 +336,7 @@ MOSprojection_DEF(prefix, hge)
MOSBlockHeaderTpe(prefix, TPE)* parameters = (MOSBlockHeaderTpe(prefix,
TPE)*) task->blk;\
BitVector base = (BitVector) MOScodevectorPrefix(task, TPE);\
PrefixTpe(TPE) prefix = parameters->prefix;\
- int suffix_bits = parameters->suffix_bits;\
+ bte suffix_bits = parameters->suffix_bits;\
for (oid lo = canditer_peekprev(task->ci); !is_oid_nil(lo) && lo <
last; lo = LEFT_CI_NEXT(task->ci)) {\
BUN i = (BUN) (lo - first);\
TPE lval = (TPE) (prefix | getBitVector(base,i,suffix_bits));\
diff --git a/monetdb5/modules/mosaic/mosaic_prefix.h
b/monetdb5/modules/mosaic/mosaic_prefix.h
--- a/monetdb5/modules/mosaic/mosaic_prefix.h
+++ b/monetdb5/modules/mosaic/mosaic_prefix.h
@@ -56,7 +56,7 @@ ALGEBRA_INTERFACES_INTEGERS_ONLY(prefix)
MOSBlockHeaderTpe(prefix, TPE)* parameters = (MOSBlockHeaderTpe(prefix,
TPE)*) task->blk;\
BitVector base = (BitVector) MOScodevectorPrefix(task, TPE);\
PrefixTpe(TPE) prefix = parameters->prefix;\
- int suffix_bits = parameters->suffix_bits;\
+ bte suffix_bits = parameters->suffix_bits;\
for (oid ro = canditer_peekprev(task->ci); !is_oid_nil(ro) && ro < last;
ro = RIGHT_CI_NEXT(task->ci)) {\
BUN i = (BUN) (ro - first);\
TPE rval = (TPE) (prefix | getBitVector(base,i,suffix_bits));\
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list