[WIP] Robin Hood Hashing - #818
Conversation
|
/ok to test 1f3d64e |
|
@aterenin Just wanted to let you know we haven't forgotten about this work! @sleeepyjack and I are discussing the new design and will align on a concrete proposal before moving forward to minimize unnecessary iterations. We'll keep you posted. |
|
Sounds good! The current WIP implements everything needed, along with tests. I've carefully gone over all the core logic, and I think is reasonably close to ready-to-review. The main remaining item I was planning to think about more is whether there is a more maintenance-friendly way to organize and structure the code, which is what the "big question" in the PR centers on. I also have a list of a bunch of subtleties worth mentioning, but these should wait until a review. If discussion would help, I'd be happy to jump on a Zoom call - just let me know! |
|
We've had a chance to evaluate the proposal and would be interested in discussing it further over a video call. @aterenin Could you send your availability and preferred contact details to yunsongw@nvidia.com? Wednesday through Friday next week would work well on our end. Once we have a few time slots, we can coordinate and send out a meeting invite. |
|
Email headed your way! |
|
@PointKernel / @sleeepyjack Would you mind giving an OK to test on 628889a? (Additional note: this is not quite ready for review yet - stay tuned for that) |
|
/ok to test 628889a |
|
@PointKernel And can we try again with another OK to test? (Sorry for long delay - just got back from conference travel.) |
|
/ok to test 40187dd |
|
I finally have access to my GPU box again, and have ran some initial benchmarks. The goal here was to successfully reproduce the results from the GPURHH repo in a manner fully contained inside cuCollections, and I believe this has been successful. Setup:
Note that the resulting MatchingRate is set relatively small. This needs some explanation: the GPURHH benchmark does independent uniform insertion and retrieval. In cuCo, a different setup is used: first, the system first generates a list of The exact numbers are This makes me think I should benchmark some more instances to get a broader view - I'd be curious what other benchmarking scenarios you'd potentially like to see? (@PointKernel / @sleeepyjack) Otherwise, I think now would be a good time to speak again on Zoom. The current implementation should mostly match what was discussed, with the main caveat that the hard-wire required quite a bit of stuff to be commented out, because either they don't make sense for RHH (different atomic pattern, etc.) or for related reasons. A diff against the non-Robin-Hood |
This PR implements Robin Hood hashing, through introducing a new probing scheme, as per #817. An initial-pass implementation for get and insert, and tests, are done.
The implementation works by adding
if constexprlogic throughout to handle Robin Hood specifics as they come up:insertmethods for Robin Hood vs. others, and dispatch according to table type.Some more details about this question, with an example, are given at the very end of #817.