Changeset 2184
- Timestamp:
- 05/29/12 12:59:28 (12 months ago)
- Location:
- trunk/symbol_table
- Files:
-
- 2 modified
-
Makefile (modified) (3 diffs)
-
templates/main_template.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/symbol_table/Makefile
r2182 r2184 29 29 HASH_OUTFILE=$(PABLO_OUT)/hash_strms.hpp 30 30 31 ID_GROUP_STRMS = $(SYMBOL_TABLE_PABLO_SRC_DIR)/id_group_strms.py32 DIV2_GROUP_STRMS = $(SYMBOL_TABLE_PABLO_SRC_DIR)/div2_group_strms.py33 LOGBASE2_GROUP_STRMS = $(SYMBOL_TABLE_PABLO_SRC_DIR)/logbase2_group_strms.py34 DIV2_LOGBASE2_GROUP_STRMS = $(SYMBOL_TABLE_PABLO_SRC_DIR)/div2_logbase2_group_strms.py35 BIT_BYTE_GROUP_STRMS = $(SYMBOL_TABLE_PABLO_SRC_DIR)/bit_byte_group_strms.py31 ID_GROUP_STRMS_SRC = $(SYMBOL_TABLE_PABLO_SRC_DIR)/id_group_strms.py 32 DIV2_GROUP_STRMS_SRC = $(SYMBOL_TABLE_PABLO_SRC_DIR)/div2_group_strms.py 33 LOGBASE2_GROUP_STRMS_SRC = $(SYMBOL_TABLE_PABLO_SRC_DIR)/logbase2_group_strms.py 34 DIV2_LOGBASE2_GROUP_STRMS_SRC = $(SYMBOL_TABLE_PABLO_SRC_DIR)/div2_logbase2_group_strms.py 35 BIT_BYTE_GROUP_STRMS_SRC = $(SYMBOL_TABLE_PABLO_SRC_DIR)/bit_byte_group_strms.py 36 36 37 37 GROUP_PREFIX=@group_strms_ … … 51 51 # python $(PABLO_COMPILER) $(MARKER_PABLO_SRC) -t $(TEMPLATE) -l $(MARKER_PREFIX) -o $(TEMP) $(PABLO_ADD_DEBUG) 52 52 # python $(PABLO_COMPILER) $(HASH_PABLO_SRC) -t $(TEMP) -l $(HASH_PREFIX) -o $(TEMP) $(PABLO_ADD_DEBUG) 53 # python $(PABLO_COMPILER) $(ID_GROUP_STRMS ) -t $(TEMP) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG)53 # python $(PABLO_COMPILER) $(ID_GROUP_STRMS_SRC) -t $(TEMP) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG) 54 54 55 55 ########################################################################### … … 78 78 python $(PABLO_COMPILER) $(HASH_PABLO_SRC) -t $(HASH_TEMPLATE) -l $(HASH_PREFIX) -o $(HASH_OUTFILE) $(PABLO_ADD_DEBUG) 79 79 80 id_group: $(ID_GROUP_STRMS ) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE)81 python $(PABLO_COMPILER) $(ID_GROUP_STRMS ) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG)82 python $(PABLO_COMPILER) $(ID_GROUP_STRMS ) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG)80 id_group: $(ID_GROUP_STRMS_SRC) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE) 81 python $(PABLO_COMPILER) $(ID_GROUP_STRMS_SRC) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG) 82 python $(PABLO_COMPILER) $(ID_GROUP_STRMS_SRC) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG) 83 83 84 div2_group: $(DIV2_GROUP_STRMS ) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE)85 python $(PABLO_COMPILER) $(DIV2_GROUP_STRMS ) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG)86 python $(PABLO_COMPILER) $(DIV2_GROUP_STRMS ) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG)84 div2_group: $(DIV2_GROUP_STRMS_SRC) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE) 85 python $(PABLO_COMPILER) $(DIV2_GROUP_STRMS_SRC) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG) 86 python $(PABLO_COMPILER) $(DIV2_GROUP_STRMS_SRC) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG) 87 87 88 logbase2_group: $(LOGBASE2_GROUP_STRMS ) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE)89 python $(PABLO_COMPILER) $(LOGBASE2_GROUP_STRMS ) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG)90 python $(PABLO_COMPILER) $(LOGBASE2_GROUP_STRMS ) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG)88 logbase2_group: $(LOGBASE2_GROUP_STRMS_SRC) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE) 89 python $(PABLO_COMPILER) $(LOGBASE2_GROUP_STRMS_SRC) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG) 90 python $(PABLO_COMPILER) $(LOGBASE2_GROUP_STRMS_SRC) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG) 91 91 92 div2_logbase2_group: $(DIV2_LOGBASE2_GROUP_STRMS ) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE)93 python $(PABLO_COMPILER) $(DIV2_LOGBASE2_GROUP_STRMS ) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG)94 python $(PABLO_COMPILER) $(DIV2_LOGBASE2_GROUP_STRMS ) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG)92 div2_logbase2_group: $(DIV2_LOGBASE2_GROUP_STRMS_SRC) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE) 93 python $(PABLO_COMPILER) $(DIV2_LOGBASE2_GROUP_STRMS_SRC) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG) 94 python $(PABLO_COMPILER) $(DIV2_LOGBASE2_GROUP_STRMS_SRC) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG) 95 95 96 bit_byte_group: $(BIT_BYTE_GROUP_STRMS ) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE)97 python $(PABLO_COMPILER) $(BIT_BYTE_GROUP_STRMS ) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG)98 python $(PABLO_COMPILER) $(BIT_BYTE_GROUP_STRMS ) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG)96 bit_byte_group: $(BIT_BYTE_GROUP_STRMS_SRC) $(GROUP_TEMPLATE) $(MAIN_TEMPLATE) 97 python $(PABLO_COMPILER) $(BIT_BYTE_GROUP_STRMS_SRC) -t $(GROUP_TEMPLATE) -l $(GROUP_PREFIX) -o $(GROUP_OUTFILE) $(PABLO_ADD_DEBUG) 98 python $(PABLO_COMPILER) $(BIT_BYTE_GROUP_STRMS_SRC) -t $(MAIN_TEMPLATE) -l $(GROUP_PREFIX) -o $(MAIN_OUTFILE) $(PABLO_ADD_DEBUG) 99 99 100 100 clean: -
trunk/symbol_table/templates/main_template.cpp
r2182 r2184 145 145 /////////////////////////////////////////////////////////////////////////// 146 146 while (chars_avail >= SEGMENT_SIZE) { 147 uint32_t blk;148 for(blk=0;blk<SEGMENT_BLOCKS;blk++) {149 s2p_do_block((BytePack *) &src_buffer[blk*BLOCK_SIZE], basis_bits[blk]); // transpose150 markers_do_block(basis_bits[blk], markers[blk]); // gen symbol spans, mark starts & follows151 hash_strms_do_block(basis_bits[blk], hash[blk]); // gen hash bit streams152 identity_group_do_block(markers[blk], groups[blk]); // sort marker bit stream (identity)147 uint32_t blk; 148 for(blk=0;blk<SEGMENT_BLOCKS;blk++) { 149 s2p_do_block((BytePack *) &src_buffer[blk*BLOCK_SIZE], basis_bits[blk]); // transpose 150 markers_do_block(basis_bits[blk], markers[blk]); // gen symbol spans, mark starts & follows 151 hash_strms_do_block(basis_bits[blk], hash[blk]); // gen hash bit streams 152 identity_group_do_block(markers[blk], groups[blk]); // sort marker bit stream (identity) 153 153 } 154 154 155 155 for(int blk=0;blk<SEGMENT_BLOCKS;blk++) { // write contiguous bit streams 156 h0[blk] = hash[blk].h0;157 h1[blk] = hash[blk].h1;158 starts[blk] = groups[blk].starts;159 follows_0[blk] = groups[blk].follows_0;156 h0[blk] = hash[blk].h0; 157 h1[blk] = hash[blk].h1; 158 starts[blk] = groups[blk].starts; 159 follows_0[blk] = groups[blk].follows_0; 160 160 } 161 161 … … 176 176 uint32_t blk_offset; 177 177 for(int blk=0;blk<SEGMENT_BLOCKS;blk++) { 178 blk_offset = blk * BLOCK_SIZE;179 gid_type gid;180 181 #ifdef INDEX_AT_STARTS182 ForwardScanner<BitBlock, scanword_t> scanner(&(groups[blk].starts));183 #else184 ForwardScanner<BitBlock, scanword_t> scanner(&(groups[blk].follows));185 #endif186 187 scanner.scan_to_next();188 while(!scanner.is_done()) {189 gid = gids.at[scanner.get_pos() + blk_offset];190 cout << string((char *)st.get_raw_data(gid), st.get_lgth(gid)) << ",";191 scanner.scan_to_next();192 }178 blk_offset = blk * BLOCK_SIZE; 179 gid_type gid; 180 181 #ifdef INDEX_AT_STARTS 182 ForwardScanner<BitBlock, scanword_t> scanner(&(groups[blk].starts)); 183 #else 184 ForwardScanner<BitBlock, scanword_t> scanner(&(groups[blk].follows)); 185 #endif 186 187 scanner.scan_to_next(); 188 while(!scanner.is_done()) { 189 gid = gids.at[scanner.get_pos() + blk_offset]; 190 cout << string((char *)st.get_raw_data(gid), st.get_lgth(gid)) << ","; 191 scanner.scan_to_next(); 192 } 193 193 } 194 194 #endif … … 203 203 uint32_t blk = 0; 204 204 while (remaining >= BLOCK_SIZE) { 205 s2p_do_block((BytePack *) &src_buffer[blk*BLOCK_SIZE], basis_bits[blk]);206 markers_do_block(basis_bits[blk], markers[blk]);207 hash_strms_do_block(basis_bits[blk], hash[blk]);208 identity_group_do_block(markers[blk], groups[blk]);209 blk++;210 remaining -= BLOCK_SIZE;205 s2p_do_block((BytePack *) &src_buffer[blk*BLOCK_SIZE], basis_bits[blk]); 206 markers_do_block(basis_bits[blk], markers[blk]); 207 hash_strms_do_block(basis_bits[blk], hash[blk]); 208 identity_group_do_block(markers[blk], groups[blk]); 209 blk++; 210 remaining -= BLOCK_SIZE; 211 211 } 212 212 … … 215 215 /////////////////////////////////////////////////////////////////////////// 216 216 if (remaining > 0 || @marker_strms_any_carry || @group_strms_any_carry /*|| hash_strms_any_carry*/) { 217 BitBlock EOF_mask = bitblock::srl(simd<1>::constant<1>(), convert(BLOCK_SIZE-remaining));218 s2p_do_final_block((BytePack *) &src_buffer[blk*BLOCK_SIZE], basis_bits[blk], EOF_mask);219 markers_do_final_block(basis_bits[blk], markers[blk], EOF_mask);220 hash_strms_do_final_block(basis_bits[blk], hash[blk], EOF_mask);221 identity_group_do_final_block(markers[blk], groups[blk], EOF_mask);222 blk++;217 BitBlock EOF_mask = bitblock::srl(simd<1>::constant<1>(), convert(BLOCK_SIZE-remaining)); 218 s2p_do_final_block((BytePack *) &src_buffer[blk*BLOCK_SIZE], basis_bits[blk], EOF_mask); 219 markers_do_final_block(basis_bits[blk], markers[blk], EOF_mask); 220 hash_strms_do_final_block(basis_bits[blk], hash[blk], EOF_mask); 221 identity_group_do_final_block(markers[blk], groups[blk], EOF_mask); 222 blk++; 223 223 } 224 224 225 225 uint32_t segment_blocks = blk; 226 226 for(int blk=0;blk<segment_blocks;blk++) { // write contiguous hash bit streams 227 h0[blk] = hash[blk].h0;228 h1[blk] = hash[blk].h1;229 starts[blk] = groups[blk].starts;230 follows_0[blk] = groups[blk].follows_0;227 h0[blk] = hash[blk].h0; 228 h1[blk] = hash[blk].h1; 229 starts[blk] = groups[blk].starts; 230 follows_0[blk] = groups[blk].follows_0; 231 231 } 232 232 … … 239 239 uint32_t blk_offset; 240 240 for(int blk=0;blk<segment_blocks;blk++) { 241 blk_offset = blk * BLOCK_SIZE; 242 gid_type gid; 243 244 #ifdef INDEX_AT_STARTS 245 ForwardScanner<BitBlock, scanword_t> scanner(&(groups[blk].starts)); 246 #else 247 ForwardScanner<BitBlock, scanword_t> scanner(&(groups[blk].follows)); 248 #endif 249 250 scanner.scan_to_next(); 251 while(!scanner.is_done()) { 252 gid = gids.at[scanner.get_pos() + blk_offset]; 253 cout << string((char *)st.get_raw_data(gid), st.get_lgth(gid)) << ","; 241 blk_offset = blk * BLOCK_SIZE; 242 gid_type gid; 243 244 #ifdef INDEX_AT_STARTS 245 ForwardScanner<BitBlock, scanword_t> scanner(&(groups[blk].starts)); 246 #else 247 ForwardScanner<BitBlock, scanword_t> scanner(&(groups[blk].follows)); 248 #endif 249 254 250 scanner.scan_to_next(); 255 } 251 while(!scanner.is_done()) { 252 gid = gids.at[scanner.get_pos() + blk_offset]; 253 cout << string((char *)st.get_raw_data(gid), st.get_lgth(gid)) << ","; 254 scanner.scan_to_next(); 255 } 256 256 } 257 257 #endif 258 258 259 259 #ifdef GID_TEST 260 cout << st.get_max_gid() << endl;260 cout << st.get_max_gid() << endl; 261 261 #endif 262 262
