This project require C++ 17 due to the usage of structured bindings
Required
- C++ Compiler gnu g++ or LLVM clang++
- micromamba
mamba env create -f environment.yml
conda activate bench-env
export C_INCLUDE_PATH=${CONDA_PREFIX}/include
export CPLUS_INCLUDE_PATH=${CONDA_PREFIX}/include
# Sometime this is required for the compiler to find include and the libraries
# export C_INCLUDE_PATH=${C_INCLUDE_PATH}:${PWD}/libs/clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04/include
# export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}:${PWD}/libs/clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04/include
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${PWD}/libs/clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04/lib
# export LIBRARY_PATH=$LIBRARY_PATH:${PWD}/libs/clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04/lib
-
Download and install the required dependencies
./dl_lib.sh
-
Build every binary
./build.sh
-
Run every binary in ./binaries directory with likwid monitoring and write csv result in ./results/csv/
./run.sh
-
Read csv to convert in eps, png, svg image performance chart
./read_results.sh
- Please use the
./run.sh
# https://rrze-hpc.github.io/likwid/Doxygen/likwid-perfctr.html
likwid-perfctr -O -m -C S0:0 -g MEM_DP ./binaries/stencil_EIGEN_1D 10 1000 > EIGEN_1D.csv
likwid-perfctr -O -m -C S0:0 -g MEM_DP ./binaries/map_STD-3RK\=int64_t-MAP_VALUE\=k1 10 > map_STD\=int64_t-MAP_VALUE\=k1.csv
Bench between most popular Key Value library
See some result result
- std::map
- LLVM::map
- LLVM::map_vector
- boost::container::map
- parallel-hashmap (incoming)
- sparsepp (incoming)