Mercurial > hg > audiodb
changeset 513:a30948382f56
Added hook for dumping LSH INDEX tables on load via compile-time switch: -DLSH_DUMP_CORE_TABLES
author | mas01mc |
---|---|
date | Fri, 23 Jan 2009 21:44:32 +0000 |
parents | 3141e51cb077 |
children | 01cb73dfcddd |
files | Makefile QueryADB.py lshlib.cpp lshlib.h query-indexed.cpp |
diffstat | 5 files changed, 59 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile Wed Jan 21 21:48:25 2009 +0000 +++ b/Makefile Fri Jan 23 21:44:32 2009 +0000 @@ -17,7 +17,10 @@ MINORVERSION=0 LIBRARY=lib$(EXECUTABLE).so.$(SOVERSION).$(MINORVERSION) -override CFLAGS+=-O3 -g -fPIC +override CFLAGS+=-O3 -g -fPIC + +# set to DUMP hashtables on QUERY load +#override CFLAGS+=-DLSH_DUMP_CORE_TABLES ifeq ($(shell uname),Linux) override CFLAGS+=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
--- a/QueryADB.py Wed Jan 21 21:48:25 2009 +0000 +++ b/QueryADB.py Fri Jan 23 21:44:32 2009 +0000 @@ -286,7 +286,7 @@ pointNN = '20' trackNN = '5' seqLen = argv[5] - queryRadius = '0.2' + queryRadius = '0.1' else: featureFile = 'foo.chr12' powerFile = 'foo.power' @@ -295,7 +295,7 @@ pointNN = '3' trackNN = '5' seqLen = '10' - queryRadius = '0.2' + queryRadius = '0.1' message = FEATURE_QUERY_TEMPLATE message = FEATURE_QUERY_TEMPLATE%(dbName, featureFile, "", "", powerFile, qType, qPos, pointNN, trackNN, seqLen, queryRadius, '0.0', '0.0', '0', '1','0')
--- a/lshlib.cpp Wed Jan 21 21:48:25 2009 +0000 +++ b/lshlib.cpp Fri Jan 23 21:44:32 2009 +0000 @@ -1358,12 +1358,7 @@ token = unserialize_hashtable_row_to_array(dbFile, h[x]+y, numElements); #else token = unserialize_hashtable_row_format2(dbFile, h[x]+y); -#endif - -#ifdef LSH_DUMP_CORE_TABLES - printf("C[%d,%d]", x, y); - dump_hashtable_row(h[x][y]); -#endif +#endif // Check that token is valid if( !(token==O2_SERIAL_TOKEN_T1 || token==O2_SERIAL_TOKEN_ENDTABLE) ){ fclose(dbFile); @@ -1379,6 +1374,9 @@ H::t1 = token; } } +#ifdef LSH_DUMP_CORE_TABLES + dump_hashtables(); +#endif } Uns32T G::unserialize_hashtable_row_format2(FILE* dbFile, bucket** b, Uns32T token){ @@ -1574,6 +1572,49 @@ p = p + skip; }while( *p != LSH_CORE_ARRAY_END_ROW_TOKEN ); } + +void G::dump_hashtables(){ + for(Uns32T x = 0; x < H::L ; x++) + for(Uns32T y = 0; y < H::N ; y++){ + bucket* bPtr = h[x][y]; + if(bPtr){ + printf("C[%d,%d]", x, y); +#ifdef LSH_LIST_HEAD_COUNTERS + printf("[numBuckets=%d]",bPtr->snext.numBuckets); + if(bPtr->t2&LSH_CORE_ARRAY_BIT) { + dump_core_hashtable_array((Uns32T*)(bPtr->next)); + } + else { + dump_hashtable_row(bPtr->next); + } +#else + dump_hashtable_row(bPtr); +#endif + printf("\n"); + fflush(stdout); + } + } +} + + void G::dump_core_hashtable_array(Uns32T* p){ + Uns32T skip; + Uns32T t2; + Uns32T p1; + Uns32T p2; + CR_ASSERT(p); + do{ + t2 = *p++; + p1 = *p++; + p2 = *p++; + skip = (( p1 & SKIP_BITS ) >> SKIP_BITS_RIGHT_SHIFT_LSB) + (( p2 & SKIP_BITS ) >> SKIP_BITS_RIGHT_SHIFT_MSB); + printf("(%0x, %0x)", t2, p1 ^ (p1 & SKIP_BITS)); + if(skip--){ + printf("(%0x, %0x)", t2, p2 ^ (p2 & SKIP_BITS)); + while(skip-- ) + printf("(%0x, %0x)", t2, *p++); + } + }while( *p != LSH_CORE_ARRAY_END_ROW_TOKEN ); + } void G::dump_hashtable_row(bucket* p){ while(p && p->t2!=IFLAG){
--- a/lshlib.h Wed Jan 21 21:48:25 2009 +0000 +++ b/lshlib.h Fri Jan 23 21:44:32 2009 +0000 @@ -325,6 +325,7 @@ void bucket_chain_point(bucket* p, Uns32T qpos); void sbucket_chain_point(sbucket* p, Uns32T qpos); void dump_hashtable_row(bucket* p); + void dump_core_hashtable_array(Uns32T* p); // Serial (Format 1) Retrieval/Inspection Functions void serial_bucket_chain_point(SerialElementT* pe, Uns32T qpos); @@ -361,6 +362,8 @@ void serial_dump_tables(char* filename); float get_mean_collision_rate(){ return (float) pointCount / bucketCount ; } char* get_indexName(){return indexName;} + void dump_hashtables(); + }; typedef class G LSH;
--- a/query-indexed.cpp Wed Jan 21 21:48:25 2009 +0000 +++ b/query-indexed.cpp Fri Jan 23 21:44:32 2009 +0000 @@ -31,6 +31,9 @@ if((!corep) && (qstate->lsh->get_lshHeader()->flags & O2_SERIAL_FILEFORMAT2)) { delete qstate->lsh; qstate->lsh = audiodb_index_allocate(adb, indexName, true); +#ifdef LSH_DUMP_CORE_TABLES + qstate->lsh->dump_hashtables(); +#endif } delete[] indexName;