Wait free parallel hashmap implemented in C++.
Reference tests for usage examples.
Use CamelCase for all names. Start types (such as classes, structs, and typedefs) with a capital letter, other names (functions, variables) with a lowercase letter. You may use an all-lowercase name with underscores if your class closely resembles an external construct (e.g., a standard library construct) named that way.
When adding new code, please supply tests in the tests
directory in a file called Test<feature>.cpp
, utilizing assertions for invariants. Run your tests with make test
.
Testing description and requirements:
- All tests must fully test all behavior and functionality of the structure being tested.
- Examples can be found in the
tests
directory.
When adding new code, please supply sequential vs threaded benchmarks in the benches
directory in a file called Bench<feature>.cpp
, utilizing the chrono
namepsace for timing utilities and reporting time in ms
. Run your benchmarks with make bench
.
Benchmarking description and requirements:
- All benchmarks must must benchmark reasonable scenarios using wall-clock time, and output their results to a
csv
file in theanalysis/data
directory. - After completing a benchmark, please provide graphs that correctly describe your benchmarks in the analysis directory.
- Benchmarks will be run and updated by a consistent machine before each official paper update for consistency.
To spin up our benchmark visualizations, you will need a Conda installation. If you are unfamiliar with Conda, I recommend installing miniconda
. Once installed, create a new virtual environment with conda create -n <name>
. Then, you can install the visualization dependencies with conda install --file analysis/conda_req.txt
. Finally, spin up a Jupyter Labs sessions with jupyter-lab
, and open and run the analysis/notebook.ipynb
to view visualizations.
For more information on our research, take a look at our research paper or our class presentation!