Changeset: f85bd6776cfb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f85bd6776cfb
Modified Files:
monetdb5/extras/crackers/crackers_holistic.c
monetdb5/extras/crackers/crackers_holistic.h
monetdb5/extras/crackers/crackers_selectholpl_ops.mx
Branch: holindex
Log Message:
Fine-grained lock is the final implementation used in holistic indexing.
diffs (227 lines):
diff --git a/monetdb5/extras/crackers/crackers_holistic.c
b/monetdb5/extras/crackers/crackers_holistic.c
--- a/monetdb5/extras/crackers/crackers_holistic.c
+++ b/monetdb5/extras/crackers/crackers_holistic.c
@@ -29,8 +29,8 @@ static FrequencyNode *_InternalFrequency
static MT_Id *idletime_thread;
static MT_Id *cpuload_thread;
MT_Lock frequencylock;
-//MT_Lock CRKIndexLock[LOCKS];
-MT_Lock CRKIndexLock;
+MT_Lock CRKIndexLock[LOCKS];
+//MT_Lock CRKIndexLock;
pthread_rwlock_t CRKFirstPieceRWLock;
IdleFuncPtr IdleFunc;
@@ -39,7 +39,7 @@ CRKinitHolistic(int *ret)
{
char *p = getenv("MOTIVATION_EXPERIMENT");
int motivation_experiment=0;
- //int i=0;
+ int i=0;
if (p == NULL){
fprintf(stderr, "Error initHolistic: environment variable is
missing.\n");
@@ -52,9 +52,9 @@ CRKinitHolistic(int *ret)
idletime_thread = GDKzalloc(sizeof(*idletime_thread));
cpuload_thread = GDKzalloc(sizeof(*idletime_thread));
MT_lock_init(&frequencylock, "FrequencyStruct");
- //for (i=0;i<LOCKS;i++)
- // MT_lock_init(&CRKIndexLock[i], "Cracker Index Lock");
- MT_lock_init(&CRKIndexLock, "Cracker Index Lock");
+ for (i=0;i<LOCKS;i++)
+ MT_lock_init(&CRKIndexLock[i], "Cracker Index Lock");
+ //MT_lock_init(&CRKIndexLock, "Cracker Index Lock");
MT_create_thread(idletime_thread,(void (*)(void *))HeartbeatCPUload,
IdleFunc, MT_THR_JOINABLE);
if (motivation_experiment != 0)
MT_create_thread(cpuload_thread,(void (*)(void
*))HeartbeatCPUload_total, NULL, MT_THR_JOINABLE);
diff --git a/monetdb5/extras/crackers/crackers_holistic.h
b/monetdb5/extras/crackers/crackers_holistic.h
--- a/monetdb5/extras/crackers/crackers_holistic.h
+++ b/monetdb5/extras/crackers/crackers_holistic.h
@@ -39,8 +39,8 @@ typedef struct frequency{
typedef str (*IdleFuncPtr)(int *);
crackers_export MT_Lock frequencylock;
-//crackers_export MT_Lock CRKIndexLock[LOCKS];
-crackers_export MT_Lock CRKIndexLock;
+crackers_export MT_Lock CRKIndexLock[LOCKS];
+//crackers_export MT_Lock CRKIndexLock;
crackers_export pthread_rwlock_t CRKFirstPieceRWLock;
crackers_export FrequencyNode *getFrequencyStruct(char which);
diff --git a/monetdb5/extras/crackers/crackers_selectholpl_ops.mx
b/monetdb5/extras/crackers/crackers_selectholpl_ops.mx
--- a/monetdb5/extras/crackers/crackers_selectholpl_ops.mx
+++ b/monetdb5/extras/crackers/crackers_selectholpl_ops.mx
@@ -204,7 +204,7 @@ CRKrandomholpl_@1(int *bid, bit *inclusi
double wt=0, ct=0;
int countBatElements=0;
int L1=0; /*Number of elements that can fit into L1 cache (size:
32KB)*/
- //int mod_bid=0;
+ int mod_bid=0;
FILE *ofp;
char *outputFilename1;
FrequencyNode* FN;
@@ -231,10 +231,10 @@ CRKrandomholpl_@1(int *bid, bit *inclusi
exit(1);
}
- //mod_bid=ABS(*bid)%LOCKS;
+ mod_bid=ABS(*bid)%LOCKS;
- //MT_lock_set(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_set(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_set(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_set(&CRKIndexLock,"Cracker Index Lock");
gettimeofday(&tv1,0); wt+=dt(tv0,tv1); tv0=tv1;
@@ -255,8 +255,8 @@ CRKrandomholpl_@1(int *bid, bit *inclusi
idxFirst = BUNfirst(c);
- //MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
countBatElements=BATcount(b);
@@ -485,8 +485,8 @@ createView:
if (createIndex==1)
{
- //MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
createIndex=0;
}
@@ -522,7 +522,7 @@ createView:
bit copy=TRUE;
int countBatElements=0;
int L1=0; /*Number of elements that can fit into L1 cache (size:
32KB)*/
- //int mod_bid=0;
+ int mod_bid=0;
FILE *ofp;
char *outputFilename1;
FrequencyNode* FN;
@@ -544,10 +544,10 @@ createView:
exit(1);
}
- //mod_bid=ABS(*bid)%LOCKS;
+ mod_bid=ABS(*bid)%LOCKS;
- //MT_lock_set(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_set(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_set(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_set(&CRKIndexLock,"Cracker Index Lock");
gettimeofday(&tv1,0); wt+=dt(tv0,tv1); tv0=tv1;
@@ -740,8 +740,8 @@ createView:
}
- //MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
gettimeofday(&tv1,0); ct+=dt(tv0,tv1); tv0=tv1;
@@ -940,8 +940,8 @@ createView:
if (createIndex==1)
{
- //MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
createIndex=0;
}
@@ -1372,7 +1372,7 @@ CRKRangeLeftNilTree_@1(int *vid, int *bi
struct timeval tv0, tv1;
double wt=0, ct=0;
int L1=0;
- //int mod_bid=0;
+ int mod_bid=0;
int countBatElements=0;
FrequencyNode* FN;
FrequencyNode *FrequencyStructA = getFrequencyStruct('A');
@@ -1401,10 +1401,10 @@ CRKRangeLeftNilTree_@1(int *vid, int *bi
L1=32000/ATOMsize(TYPE_@1);
- //mod_bid=ABS(*bid)%LOCKS;
+ mod_bid=ABS(*bid)%LOCKS;
- //MT_lock_set(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_set(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_set(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_set(&CRKIndexLock,"Cracker Index Lock");
gettimeofday(&tv1,0); wt+=dt(tv0,tv1); tv0=tv1;
if (*inclusiveHgh == TRUE) HBound = FALSE;
@@ -1499,8 +1499,8 @@ CRKRangeLeftNilTree_@1(int *vid, int *bi
idxFirst = BUNfirst(c);
- //MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
gettimeofday(&tv1,0); ct+=dt(tv0,tv1); tv0=tv1;
@@ -1588,8 +1588,8 @@ CRKRangeLeftNilTree_@1(int *vid, int *bi
if (createIndex==1)
{
- //MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
- MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
+ MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ //MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
createIndex=0;
}
@@ -1612,7 +1612,7 @@ CRKRangeRightNilTree_@1(int *vid, int *b
BUN idxFirst = BUN_NONE;
int incr_pieces=0;
int L1=0;
- //int mod_bid=0;
+ int mod_bid=0;
int countBatElements;
FrequencyNode* FN;
FrequencyNode *FrequencyStructA = getFrequencyStruct('A');
@@ -1636,9 +1636,9 @@ CRKRangeRightNilTree_@1(int *vid, int *b
L1=32000/ATOMsize(TYPE_@1);
- //mod_bid=ABS(*bid)%LOCKS;
+ mod_bid=ABS(*bid)%LOCKS;
- //MT_lock_set(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ MT_lock_set(&CRKIndexLock[mod_bid],"Cracker Index Lock");
//MT_lock_set(&CRKIndexLock,"Cracker Index Lock");
m = existsCrackerIndex(*bid);
@@ -1721,7 +1721,7 @@ CRKRangeRightNilTree_@1(int *vid, int *b
idxFirst = BUNfirst(c);
- //MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
//MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
vh = BUNlast(b)-(oid)1;
@@ -1805,7 +1805,7 @@ CRKRangeRightNilTree_@1(int *vid, int *b
if (createIndex==1)
{
- //MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
+ MT_lock_unset(&CRKIndexLock[mod_bid],"Cracker Index Lock");
//MT_lock_unset(&CRKIndexLock,"Cracker Index Lock");
createIndex=0;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list