-
Notifications
You must be signed in to change notification settings - Fork 34
Feature: JW map Rayon Multithreading #497
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
Feature: JW map Rayon Multithreading #497
Conversation
|
Just to be sure, this is more performant than your original Python multiprocessing implementation, right? |
Yes, even the non-parallelized Rust implementation was faster than the original Python multiprocessing implementation. |
Hmm so we only get a ~4x speedup with 48 threads. Do we get the same performance with just 4 threads? Does the performance improvement level off after 4 or so threads? |
I tried with different threads: I assume this is due to memory bandwidth and serial work that every thread must do, so throwing more threads at it dont help since it anyways just plateus. It actually seems to agree well with Amdahl's law. There is room for tiny improvements (maybe like 20%) with faster hashers, but we are pretty much at the limit here 😄 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
Enjoy! 😄 |
Description
Multithreading in Rayon for faster JW map by parallelizing processes in Rust.
Results
On N2 in cc-pvdz:
1 thread: 14.098538247868419 s
4 threads: 5.772801402956247 s
16 threads: 3.734854843467474 s
48 threads: 3.3065379448235035 s
64 threads: 3.1618218813091516 s
Closes issue #496