Changeset 2067 for trunk


Ignore:
Timestamp:
Apr 28, 2012, 6:24:27 PM (7 years ago)
Author:
ksherdy
Message:

Set up log2 Makefile, Macro, derived class...

Location:
trunk/symbol_table
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/symbol_table/Makefile

    r2058 r2067  
    2828ID_GROUP_STRMS = id_group_strms.py
    2929DIV2_GROUP_STRMS = div2_group_strms.py
     30LOG2_GROUP_STRMS = log2_group_strms.py
    3031
    3132GROUP_PREFIX=@group_strms_
    3233#GROUP_PABLO_SRC= $(ID_GROUP_STRMS)
    33 GROUP_PABLO_SRC= $(DIV2_GROUP_STRMS)
     34#GROUP_PABLO_SRC= $(DIV2_GROUP_STRMS)
     35GROUP_PABLO_SRC= $(LOG2_GROUP_STRMS)
    3436GROUP_TEMPLATE=group_strms_template.hpp
    3537GROUP_OUTFILE=src/group_strms.hpp
  • trunk/symbol_table/log2_group_strms.py

    r2065 r2067  
    88        ends_2 = 0
    99        ends_4 = 0
    10         ends_6 = 0
    1110        ends_8 = 0
    1211        ends_16 = 0
     
    5453    # Group symbols of length 17 and longer
    5554    groups.ends_gte_17 = remaining_ends
     55
     56def Main(groups):
     57        Gen_lgth_groups(groups)
  • trunk/symbol_table/src/hash_table.hpp

    r2065 r2067  
    315315
    316316///////////////////////////////////////////////////////////////////////////
    317 // id
     317// id - Identity Strategy
    318318///////////////////////////////////////////////////////////////////////////
    319319template<uint32_t LGTH, class ALLOCATOR>
     
    363363
    364364///////////////////////////////////////////////////////////////////////////
    365 // div2
     365// div2 - Div2 Strategy
    366366///////////////////////////////////////////////////////////////////////////
    367367
     
    450450
    451451///////////////////////////////////////////////////////////////////////////
    452 // log2
     452// log2 - Log base 2 Strategy
    453453///////////////////////////////////////////////////////////////////////////
    454454template<uint32_t LGTH, class ALLOCATOR>
     
    457457public:
    458458
    459 
     459    IDISA_ALWAYS_INLINE gid_type lookup_or_insert(uint8_t * raw_bytes, const uint32_t idx, const uint32_t raw_byte_lgth,
     460                                                  uint8_t * h0, uint8_t * h1,
     461                                                  GIDFactory & gid_factory, GIDData & gid_data) {
     462
     463        gid_type gid;
     464        uint64_t bucket = this->get_bucket(h0,h1,idx);
     465
     466
     467        return gid;
     468    }
    460469};
    461470
    462 
    463471#endif // HASH_TABLE_HPP
  • trunk/symbol_table/src/symbol_table.hpp

    r2062 r2067  
    3939// Symbol Type - do_block()
    4040///////////////////////////////////////////////////////////////////////////
    41 template<class SYMBOL, class HASH_TABLE>
     41template<class GIDS, class HASH_TABLE>
    4242void do_block(uint32_t blk_offset,
    4343              HASH_TABLE & h_table,
     
    4545              uint8_t buffer [], const uint32_t lgth,
    4646              uint8_t h0 [], uint8_t h1 [], const uint32_t h_block_size,
    47               SYMBOL & gids, GIDFactory & gid_factory, GIDData & gid_data);
    48 
    49 template<class SYMBOL, class HASH_TABLE>
     47              GIDS & gids, GIDFactory & gid_factory, GIDData & gid_data);
     48
     49template<class GIDS, class HASH_TABLE>
    5050void do_block(uint32_t blk_offset,
    5151              HASH_TABLE & h_table,
     
    5353              uint8_t buffer [],
    5454              uint8_t h0 [], uint8_t h1 [], const uint32_t h_block_size,
    55               SYMBOL & gids, GIDFactory & gid_factory, GIDData & gid_data);
     55              GIDS & gids, GIDFactory & gid_factory, GIDData & gid_data);
    5656
    5757///////////////////////////////////////////////////////////////////////////
     
    126126
    127127                        ///////////////////////////////////////////////////////////////////////////////
    128                         // Byte Space Hash
     128                        // Byte Space Hash (Fixed Length)
    129129                        ///////////////////////////////////////////////////////////////////////////////
    130                         #define BYTE_HASH(GROUP, LGTH) \
     130                        #define BYTE_HASH_FIXED(GROUP, LGTH) \
    131131                                if(bitblock::any(groups.ends_##LGTH)) { \
    132132                                        do_block<GIDS, GROUP##_hash_table <LGTH, ALLOCATOR> > \
     
    139139                                }
    140140
    141                                 //BYTE_HASH(id,1);
    142                                 BYTE_HASH(div2,2);
    143 //                              //BYTE_HASH(id,3);
    144                                 BYTE_HASH(div2,4);
    145                                 //BYTE_HASH(id,5);
    146                                 BYTE_HASH(div2,6);
    147                                 //BYTE_HASH(id,7);
    148 
    149                         #undef BYTE_HASH
    150 
     141//                              //BYTE_HASH_FIXED(id,1);
     142//                              BYTE_HASH_FIXED(div2,2);
     143//                              //BYTE_HASH_FIXED(id,3);
     144//                              BYTE_HASH_FIXED(div2,4);
     145//                              //BYTE_HASH_FIXED(id,5);
     146//                              BYTE_HASH_FIXED(div2,6);
     147//                              //BYTE_HASH_FIXED(id,7);
     148
     149                        #undef BYTE_HASH_FIXED
     150
     151                        /////////////////////////////////////////////////////////////////////////////
     152                        // Byte Space Variable Lengths (groups contain variable lengths)
    151153                        ///////////////////////////////////////////////////////////////////////////////
    152                         // Bit Space Hash
     154                        #define BYTE_HASH_VARIABLE(GROUP, LGTH) \
     155                                if(bitblock::any(groups.ends_##LGTH)) { \
     156                                        do_block<GIDS, GROUP##_hash_table <LGTH, ALLOCATOR> > \
     157                                                (blk_offset, \
     158                                                 hash_table_##LGTH, \
     159                                                 starts, \
     160                                                 &groups.ends_##LGTH, \
     161                                                 buffer, \
     162                                                 buffer, buffer, BLOCK_SIZE, /* h0, h1, hash block size (bits) */ \
     163                                                 gids, this->gid_factory, this->gid_data); \
     164                                }
     165
     166                                BYTE_HASH_VARIABLE(log2,1);
     167                                BYTE_HASH_VARIABLE(log2,2);
     168                                BYTE_HASH_VARIABLE(log2,4);
     169
     170                        #undef BYTE_HASH_VARIABLE
     171
    153172                        ///////////////////////////////////////////////////////////////////////////////
    154                         #define BIT_HASH(GROUP, LGTH) \
     173                        // Bit Space Hash (Fixed Length)
     174                        ///////////////////////////////////////////////////////////////////////////////
     175                        #define BIT_HASH_FIXED(GROUP, LGTH) \
    155176                                if(bitblock::any(groups.ends_##LGTH)) { \
    156177                                        do_block<GIDS, GROUP##_hash_table <LGTH, ALLOCATOR> > \
     
    163184                                }
    164185
    165                                 BIT_HASH(div2,8);
    166 //                              //BIT_HASH(9);
    167                                 BIT_HASH(div2,10);
    168 //                              //BIT_HASH(11);
    169                                 BIT_HASH(div2,12);
    170 //                              //BIT_HASH(13);
    171                                 BIT_HASH(div2,14);
    172 //                              //BIT_HASH(15);
    173                                 BIT_HASH(div2,16);
    174 
    175                         #undef BIT_HASH
    176 
    177                         if(bitblock::any(groups.ends_gte_17)) {
    178 
    179                                 //print_register("17", groups.ends_gte_17);
    180 
    181                                 do_block<GIDS, id_hash_table<0, ALLOCATOR> >
    182                                                 (blk_offset,
    183                                                  hash_table_gte_17,
    184                                                  starts, &groups.ends_gte_17,
    185                                                  buffer,
    186                                                  (uint8_t *)h0, (uint8_t *)h1, BLOCK_SIZE/8,
    187                                                  gids, this->gid_factory, this->gid_data);
    188                         }
     186//                              BIT_HASH_FIXED(div2,8);
     187//                              //BIT_HASH_FIXED(9);
     188//                              BIT_HASH_FIXED(div2,10);
     189//                              //BIT_HASH_FIXED(11);
     190//                              BIT_HASH_FIXED(div2,12);
     191//                              //BIT_HASH_FIXED(13);
     192//                              BIT_HASH_FIXED(div2,14);
     193//                              //BIT_HASH_FIXED(15);
     194//                              BIT_HASH_FIXED(div2,16);
     195
     196                        #undef BIT_HASH_FIXED
     197
     198//                      if(bitblock::any(groups.ends_gte_17)) {
     199
     200//                          do_block<GIDS, id_hash_table<0, ALLOCATOR> >
     201//                                              (blk_offset,
     202//                                               hash_table_gte_17,
     203//                                               starts, &groups.ends_gte_17,
     204//                                               buffer,
     205//                                               (uint8_t *)h0, (uint8_t *)h1, BLOCK_SIZE/8,
     206//                                               gids, this->gid_factory, this->gid_data);
     207//                        }
    189208        }
    190209
     
    210229//      id_hash_table<7, ALLOCATOR> hash_table_7;
    211230
    212         div2_hash_table<2, ALLOCATOR> hash_table_2;
    213         div2_hash_table<4, ALLOCATOR> hash_table_4;
    214         div2_hash_table<6, ALLOCATOR> hash_table_6;
     231//      div2_hash_table<2, ALLOCATOR> hash_table_2;
     232//      div2_hash_table<4, ALLOCATOR> hash_table_4;
     233//      div2_hash_table<6, ALLOCATOR> hash_table_6;
     234
     235        log2_hash_table<1, ALLOCATOR> hash_table_1;
     236        log2_hash_table<2, ALLOCATOR> hash_table_2;
     237        log2_hash_table<4, ALLOCATOR> hash_table_4;
    215238
    216239        ///////////////////////////////////////////////////////////////////////////////
     
    228251//      id_hash_table<0, ALLOCATOR> hash_table_gte_17;
    229252
    230         div2_hash_table<8, ALLOCATOR> hash_table_8;
    231 //      id_hash_table<9, ALLOCATOR> hash_table_9;
    232         div2_hash_table<10, ALLOCATOR> hash_table_10;
    233 //      id_hash_table<11, ALLOCATOR> hash_table_11;
    234         div2_hash_table<12, ALLOCATOR> hash_table_12;
    235 //      id_hash_table<13, ALLOCATOR> hash_table_13;
    236         div2_hash_table<14, ALLOCATOR> hash_table_14;
    237 //      id_hash_table<15, ALLOCATOR> hash_table_15;
    238         div2_hash_table<16, ALLOCATOR> hash_table_16;
    239         id_hash_table<0, ALLOCATOR> hash_table_gte_17;
     253//      div2_hash_table<8, ALLOCATOR> hash_table_8;
     254//      div2_hash_table<10, ALLOCATOR> hash_table_10;
     255//      div2_hash_table<12, ALLOCATOR> hash_table_12;
     256//      div2_hash_table<14, ALLOCATOR> hash_table_14;
     257//      div2_hash_table<16, ALLOCATOR> hash_table_16;
     258//      id_hash_table<0, ALLOCATOR> hash_table_gte_17;
    240259};
    241260
Note: See TracChangeset for help on using the changeset viewer.