RPB is a benchmark suite of regular and irregular parallelism in Rust, introduced at SPAA'24. We invested substantial effort into developing this codebase, and we kindly request that you acknowledge our work by citing our paper when using this code for your own research:
When Is Parallelism Fearless and Zero-Cost with Rust?
Javad Abdi, Gilead Posluns, Guozheng Zhang, Boxuan Wang, Mark C. Jeffrey
ACM Symposium on Parallelism in Algorithms and Architectures (SPAA), 2024
Brief Announcement: Is the Problem-Based Benchmark Suite Fearless with Rust?
Javad Abdi, Guowei Zhang, Mark C. Jeffrey
ACM Symposium on Parallelism in Algorithms and Architectures (SPAA), 2023
# download and install the version management tool: Rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# confiqure the current shell
source "$HOME/.cargo/env"
The default
features are enough for benchmarking.
If you want to do more hacking, the complete
profile could help.
git clone https://github.com/mcj-group/rpb.git
cd rpb/
cargo build --release # compile all benchmarks
cargo build --release --bin="dedup" # compile an specific benchmark (dedup)
Cargo can run an individual benchmark (e.g. dedup):
cargo run --release --bin=dedup -- <input_file>
or the binary can be run itself:
/path/to/build/directory/pbbs/release/dedup <input_file>
To get the full list of flags and arguments use --help
:
/path/to/build/directory/pbbs/release/dedup --help
All the benchmarks expect their data to be in the same format that PBBS uses. Please check PBBS's website for instruction on how to generate input data.
Run parallel dedup for 3 rounds on an input.
$ /.../dedup -o outfile -a parhash -r 3 /path/to/input
dedup: 2.560179
dedup: 2.608721
dedup: 2.492258
OutLoopTime:total: 7.966530
2.578050534s
This project was inspired by the algorithms from the following sources:
- The problem-based benchmark suite: github repo and a relevant paper (License: MIT)
- ParlayLib: github repo (License: MIT)