git clone git@github.com:mars-research/kmer-counting-hash-table.git --recursive
cd kmer-counting-hash-table
If Nix is not installed, install Nix.
curl -L https://nixos.org/nix/install | sh
Use nix shell.
nix-shell
All the dependencies should be available in the nix shell now.
sudo apt install libnuma-dev libboost-program-options-dev cmake
- Apply constant frequency, enable hugepages, and disable hardware prefetching.
./scripts/setup.sh
- Set all cpus to run at a constant frequency
./scripts/constant_freq.sh
- Enable hugepages (both 2MiB and 1GiB)
./scripts/enable_hugepages.sh
- Disable hardware prefetching
./scripts/prefetch_control.sh off
- (Optional)Enable/disable hyperthreading
./scripts/toggle_hyperthreading.sh
- Setup build directory
cmake -S . -B build
- Build
cmake --build build/
./build/kmercounter
Run all tests.
ctest --test-dir=build
Run individual test binary. For example, the hashmap test:
./build/unittests/hashmap_test