-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Q] could you add some 64 bit examples too #5
Comments
The problem is that it's not practical to measure the entire 64-bit space,
and the Monte Carlo method estimates have too much variance to reveal any
differences between 64-bit permutations. You really end up measuring the
PRNG as much as the hash. So effectively any 64-bit permutation with
reasonable parameters is the same as any other. (This issue makes me
skeptical about other people making measurement-based claims about 64-bit
permutations.)
Though now that I think about it, maybe a more reasonable estimate could
be made using a quasirandom sequence rather than a straight PRNG…
|
thanks for your reply. for the moment i ended up using the 64bit method from this stackoverflow post that links here: https://stackoverflow.com/questions/664014/what-integer-hash-function-are-good-that-accepts-an-integer-hash-key (second answer with 157 upvotes), though i'd certainly appreciate if you find a way to improve the 64bit algorithm and post some results. btw, is there an explanation somewhere how the hash functions using the values of your recent README additions can be reversed ? i've not seen an obvious relationship between the values used in the hash and reversal functions. |
At line 410 in hillclimb.c there's a little routine for computing the hash
inversions. I forget how I learned this, but when I did I put it in such
precise terms so that I'd never have to figure it out again! It only does
32-bit inversions, so if you want to invert a 64-bit hash you'll have to
work out the 64-bit xorshifts from the 32-bit xorshift inversion. I only
supplied a 32-bit multiplicative inverse (modinv32()), but you can upgrade
to a 64-bit multiplicative inverse with just one more iteration.
|
I found Marc B. Reynolds' explanations to be extremely helpful. |
since the README lacks anything 64bit, i compiled a GCC with openmp support to run prospector myself. interestingly, only one thread is used. is the omp parallel pragma only used for a section of code that's rarely run ?
i'm running ./prospector -8, ftr. how long will i have to wait in average until a usable hash func is printed on a modern ryzen core ?
The text was updated successfully, but these errors were encountered: