This repository is a small benchmark to compare how much dependence between iterations degrade thread parallelism. For details, please visit this blog post.
- CMake and a C++ compiler
- MKL is needed for dense and sparse kernels.
- Sympiler (resolved by cmake)
- Python for data generation and plotting (Numpy, Matplotlib, Pandas)
First you should clone the repository recursively :
git clone --recursive https://github.com/cheshmi/loop-dependence.git
To build and run, run the provided script:
bash run_niagara.sh
The script works on the Niagara server. You may need to change modules and paths for a different machines. You will also need to download sparse matrices that you want to test.
Once the script is finished, you may use the python script to plot the data:
python logs/dense.csv logs/sparse_lbc.csv logs/sparse_mkl.csv
The output will be a PNG file in the current directory.