Stable version of BRZ algorithm with option -M (memory_availability)
This commit is contained in:
parent
d686e0a53e
commit
0c25b2d6f5
|
@ -68,7 +68,7 @@ void brz_config_set_hashfuncs(cmph_config_t *mph, CMPH_HASH *hashfuncs)
|
|||
void brz_config_set_memory_availability(cmph_config_t *mph, cmph_uint32 memory_availability)
|
||||
{
|
||||
brz_config_data_t *brz = (brz_config_data_t *)mph->data;
|
||||
brz->memory_availability = memory_availability*1024*1024;
|
||||
if(memory_availability > 0) brz->memory_availability = memory_availability*1024*1024;
|
||||
}
|
||||
|
||||
void brz_config_set_tmp_dir(cmph_config_t *mph, cmph_uint8 *tmp_dir)
|
||||
|
|
|
@ -9,6 +9,7 @@ typedef struct __brz_config_data_t brz_config_data_t;
|
|||
brz_config_data_t *brz_config_new();
|
||||
void brz_config_set_hashfuncs(cmph_config_t *mph, CMPH_HASH *hashfuncs);
|
||||
void brz_config_set_tmp_dir(cmph_config_t *mph, cmph_uint8 *tmp_dir);
|
||||
void brz_config_set_memory_availability(cmph_config_t *mph, cmph_uint32 memory_availability);
|
||||
void brz_config_destroy(cmph_config_t *mph);
|
||||
cmph_t *brz_new(cmph_config_t *mph, float c);
|
||||
|
||||
|
|
19
src/cmph.c
19
src/cmph.c
|
@ -204,6 +204,25 @@ void cmph_config_set_tmp_dir(cmph_config_t *mph, cmph_uint8 *tmp_dir)
|
|||
|
||||
}
|
||||
|
||||
void cmph_config_set_memory_availability(cmph_config_t *mph, cmph_uint32 memory_availability)
|
||||
{
|
||||
switch (mph->algo)
|
||||
{
|
||||
case CMPH_CHM:
|
||||
break;
|
||||
case CMPH_BMZ: /* included -- Fabiano */
|
||||
break;
|
||||
case CMPH_BMZ8: /* included -- Fabiano */
|
||||
break;
|
||||
case CMPH_BRZ: /* included -- Fabiano */
|
||||
brz_config_set_memory_availability(mph, memory_availability);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void cmph_config_destroy(cmph_config_t *mph)
|
||||
{
|
||||
DEBUGP("Destroying mph with algo %s\n", cmph_names[mph->algo]);
|
||||
|
|
|
@ -36,6 +36,7 @@ void cmph_config_set_verbosity(cmph_config_t *mph, cmph_uint32 verbosity);
|
|||
void cmph_config_set_graphsize(cmph_config_t *mph, float c);
|
||||
void cmph_config_set_algo(cmph_config_t *mph, CMPH_ALGO algo);
|
||||
void cmph_config_set_tmp_dir(cmph_config_t *mph, cmph_uint8 *tmp_dir);
|
||||
void cmph_config_set_memory_availability(cmph_config_t *mph, cmph_uint32 memory_availability);
|
||||
void cmph_config_destroy(cmph_config_t *mph);
|
||||
|
||||
/** Hash API **/
|
||||
|
|
20
src/main.c
20
src/main.c
|
@ -22,12 +22,12 @@
|
|||
|
||||
void usage(const char *prg)
|
||||
{
|
||||
fprintf(stderr, "usage: %s [-v] [-h] [-V] [-k nkeys] [-f hash_function] [-g [-c value][-s seed] ] [-a algorithm] [-d tmp_dir] [-m file.mph] keysfile\n", prg);
|
||||
fprintf(stderr, "usage: %s [-v] [-h] [-V] [-k nkeys] [-f hash_function] [-g [-c value][-s seed] ] [-a algorithm] [-M memory_in_MB] [-d tmp_dir] [-m file.mph] keysfile\n", prg);
|
||||
}
|
||||
void usage_long(const char *prg)
|
||||
{
|
||||
cmph_uint32 i;
|
||||
fprintf(stderr, "usage: %s [-v] [-h] [-V] [-k nkeys] [-f hash_function] [-g [-c value][-s seed] ] [-a algorithm] [-d tmp_dir] [-m file.mph] keysfile\n", prg);
|
||||
fprintf(stderr, "usage: %s [-v] [-h] [-V] [-k nkeys] [-f hash_function] [-g [-c value][-s seed] ] [-a algorithm] [-M memory_in_MB] [-d tmp_dir] [-m file.mph] keysfile\n", prg);
|
||||
fprintf(stderr, "Minimum perfect hashing tool\n\n");
|
||||
fprintf(stderr, " -h\t print this help message\n");
|
||||
fprintf(stderr, " -c\t c value that determines the number of vertices in the graph\n");
|
||||
|
@ -41,6 +41,7 @@ void usage_long(const char *prg)
|
|||
fprintf(stderr, " -g\t generation mode\n");
|
||||
fprintf(stderr, " -s\t random seed\n");
|
||||
fprintf(stderr, " -m\t minimum perfect hash function file \n");
|
||||
fprintf(stderr, " -M\t main memory availability (in MB)\n");
|
||||
fprintf(stderr, " -d\t temporary directory used in brz algorithm \n");
|
||||
fprintf(stderr, " keysfile\t line separated file with keys\n");
|
||||
}
|
||||
|
@ -65,10 +66,10 @@ int main(int argc, char **argv)
|
|||
cmph_t *mphf = NULL;
|
||||
cmph_uint8 * tmp_dir = NULL;
|
||||
cmph_io_adapter_t *source;
|
||||
|
||||
cmph_uint32 memory_availability = 0;
|
||||
while (1)
|
||||
{
|
||||
char ch = getopt(argc, argv, "hVvgc:k:a:f:m:d:s:");
|
||||
char ch = getopt(argc, argv, "hVvgc:k:a:M:f:m:d:s:");
|
||||
if (ch == -1) break;
|
||||
switch (ch)
|
||||
{
|
||||
|
@ -111,6 +112,16 @@ int main(int argc, char **argv)
|
|||
case 'd':
|
||||
tmp_dir = strdup(optarg);
|
||||
break;
|
||||
case 'M':
|
||||
{
|
||||
char *cptr;
|
||||
memory_availability = strtoul(optarg, &cptr, 10);
|
||||
if(*cptr != 0) {
|
||||
fprintf(stderr, "Invalid memory availability %s\n", optarg);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'v':
|
||||
++verbosity;
|
||||
break;
|
||||
|
@ -202,6 +213,7 @@ int main(int argc, char **argv)
|
|||
if (nhashes) cmph_config_set_hashfuncs(config, hashes);
|
||||
cmph_config_set_verbosity(config, verbosity);
|
||||
cmph_config_set_tmp_dir(config, tmp_dir);
|
||||
cmph_config_set_memory_availability(config, memory_availability);
|
||||
if(mph_algo == CMPH_BMZ && c >= 2.0) c=1.15;
|
||||
if (c != 0) cmph_config_set_graphsize(config, c);
|
||||
mphf = cmph_new(config);
|
||||
|
|
Loading…
Reference in New Issue