Report can be found under https://mkleinegger.github.io/concurrent-skip-list/report.pdf
This project implements and benchmarks different skiplist variants for concurrent multiprocessor systems. The results of the benchmarks are visualized through plots and compiled into a report.
.
├── Makefile # Automates tasks like compiling, running benchmarks, and generating plots
├── README.md # Documentation for the project
├── benchmark.py # Main benchmarking script
├── benchmark_small.py # Benchmark script for smaller test cases
├── benchmark_small_plots.py # Generates plots for small benchmarks
├── data/* # Contains benchmark results in organized directories
├── notebooks/ # Jupyter notebooks for visualizations
│ └── plots.ipynb # Interactive analysis and plot generation
├── plots/* # Generated plots from the benchmark scripts
├── report/ # Contains the LaTeX source for the generated report
│ └── report.tex # Main LaTeX file
├── requirements.txt # Python dependencies for the project
├── run_nebula.sh # Script to run benchmarks on Nebula
├── run_setup_python.sh # Script to set up a python environment
└── src/* # Source code for the skiplist and utilities
To generate benchmark data, use the provided scripts included in the Makefile:
make bench-seq
make bench-global
make bench-fine
make bench-lockfree
Using those commands in combination with slurm on nebula should produce all results
If you want to generate a small sample using our small benchmark, you need to do the following:
- Set $USERNAME in
run_nebula.sh
to your username on the nebula system - Run
make zip
- Run
bash run_nebula.sh project.zip small-bench
- Run
make small-plot
- Run
make report
This should allow to generate the necessary report. If your python environment does not have all necessary requierements, we either provide those within ./requirements.txt
to install into your environment or create and use a new environment with run_setup_python.sh
. However for later approach you need to activate it first!
To generate all Plots possibly found in the Report, simply use this created environment as a Jupyter kernel to run the notebook ./notebook/plots.ipynb
, which generates all plots.
To reproduce the graphs we inkluded the gathered data from our runs under the ./data
, such that it can be looked at and used for reproduction purposes.