/* * Temporary usage: run_queries <index file> <type> [length] [V] */ int main(int argc, char* argv[]) { char* filename; char querytype; if (argc < 2) { usage(argv[0]); exit(1); } filename = argv[1]; querytype = *argv[2]; string index_file = string(argv[1]) + "." + string(SUF); bool mapped = false; #ifdef USE_HP uint64_t index_size = util::file_size(index_file); // allocate hugepages, add 10 MiB + 3% overhead uint64_t alloc_size = (uint64_t)(index_size*1.03+(1ULL<<20)*10); try { memory_manager::use_hugepages(alloc_size); mapped = true; } catch (...) { std::cout<<"Unable to allocate "<<alloc_size<<" bytes "; std::cout<<"of hugepage space on your system"<<std::endl; } #endif CSA_TYPE csa; fprintf(stderr, "# File = %s\n",(string(filename) + "." + string(SUF)).c_str()); fprintf(stderr, "# program = %s\n",string(SUF).c_str()); Load_time = getTime(); load_from_file(csa, index_file); Load_time = getTime() - Load_time; fprintf(stderr, "# Load_index_time_in_sec = %.2f\n", Load_time); std::cerr<<"# text_size = " << csa.size()-1 << std::endl; Index_size = size_in_bytes(csa); Text_length = csa.size()-1; // -1 since we added a sentinel character /* Index_size /=1024; */ fprintf(stderr, "# Index_size_in_bytes = %lu\n", Index_size); fprintf(stderr, "# hugepages = %i\n", (int)mapped); bool use_sse = false; #ifdef __SSE4_2__ use_sse = true; #endif fprintf(stderr, "# sse = %i\n", (int)use_sse); bool use_popcount_tl = false; #ifdef POPCOUNT_TL use_popcount_tl = true; #endif fprintf(stderr, "# popcount_tl = %i\n", (int)use_popcount_tl); switch (querytype) { case COUNT: if (argc > 3) if (*argv[3] == VERBOSE) { Verbose = 1; fprintf(stdout,"%c", COUNT); } do_count(csa); break; case LOCATE: if (argc > 3) if (*argv[3] == VERBOSE) { Verbose = 1; fprintf(stdout,"%c", LOCATE); } do_locate(csa); break; default: fprintf(stderr, "Unknow option: main ru\n"); exit(1); } return 0; }
/* * Temporary usage: run_queries <index file> <type> [length] [V] */ int main(int argc, char* argv[]) { int error = 0; char* filename; char querytype; if (argc < 2) { usage(argv[0]); exit(1); } filename = argv[1]; querytype = *argv[2]; CSA_TYPE csa; fprintf(stderr, "Load from file %s\n",(string(argv[1]) + "." + string(SDSL_XSTR(SUF))).c_str()); Load_time = getTime(); load_from_file(csa, (string(argv[1]) + "." + string(SDSL_XSTR(SUF))).c_str()); IFERROR(error); Load_time = getTime() - Load_time; fprintf(stderr, "# Load_index_time_in_sec = %.2f\n", Load_time); fprintf(stderr, "# text_size = %lld\n", csa.size()-1); Index_size = size_in_bytes(csa); IFERROR(error); Text_length = csa.size()-1; // -1 since we added a sentinel character // error = get_length(Index, &Text_length); IFERROR(error); /* Index_size /=1024; */ fprintf(stderr, "# Index_size_in_bytes = %lu\n", Index_size); #ifdef USE_HP bool mapped = mm::map_hp(); fprintf(stderr, "# hugepages = %i\n", (int)mapped); #endif switch (querytype) { case COUNT: if (argc > 3) if (*argv[3] == VERBOSE) { Verbose = 1; fprintf(stdout,"%c", COUNT); } do_count(csa); break; case LOCATE: if (argc > 3) if (*argv[3] == VERBOSE) { Verbose = 1; fprintf(stdout,"%c", LOCATE); } do_locate(csa); break; case EXTRACT: if (argc > 3) if (*argv[3] == VERBOSE) { Verbose = 1; fprintf(stdout,"%c", EXTRACT); } do_extract(csa); break; /* case DISPLAY: if (argc < 4) { usage(argv[0]); exit (1); } if (argc > 4) if (*argv[4] == VERBOSE){ Verbose = 1; fprintf(stdout,"%c", DISPLAY); } do_display((ulong) atol(argv[3])); break; */ default: fprintf(stderr, "Unknow option: main ru\n"); exit(1); } #ifdef USE_HP if (mapped) { mm::unmap_hp(); } #endif // error = free_index(Index); IFERROR(error); return 0; }