October 4th, 2025.
We are unfashioned creatures, but half made up, if one nerdier, fussier, and stricter than ourselves—such a benchmark ought to be—do not lend its aid to perfectionate our weak and faulty natures.
October 5th, 2025.
I agree with you; we are unfashioned creatures, if one younger, JetBrains-born, and island-named than ourselves—such a modern programming language ought to be—do play at baubles befitting its age, appropriate foreign artefacts, and desecrate the limbs of its forefathers.
-
C++20 compiler (GCC or Clang recommended)
-
CMake at least 3.28
-
Optional:
- GTest: for unit tests (
BUILD_TESTS=ON) - Google Benchmark: for benchmarks (
BUILD_BENCHMARKS=ON) - Eigen3: for extra test/bench comparisons if found
- Python 3 + matplotlib: for plotting benchmark results via
scripts/bench_plot.py - llvm-cov + llvm-profdata (Clang) or gcovr (GCC): for coverage reports (
COVERAGE=ON)
- GTest: for unit tests (
-
For the Java/Kotlin bindings:
- JDK 17 (configured via Gradle toolchains)
- Gradle 7.6+ (or an IDE with Gradle integration such as IntelliJ IDEA)
The scripts/ directory contains utility helpers for common project workflows:
bench.slurm: Submits a SLURM job that configures a fresh build tree on the cluster, enables the benchmark targets, and produces the benchmark plot with the Python virtual environment it bootstraps on the node.bench_plot.py: Parses Google Benchmark log files, groups results by algorithm and problem size, and renders aGFLOPsvs.nplot to an image using matplotlib.brench.sh: Convenience wrapper for running the same benchmark build and plot generation locally without SLURM by configuring the project in release mode and invoking thebench_plottarget.cov.sh: Cleans previous coverage artifacts, reformats the C++ sources, and rebuilds the project with Clang in coverage mode before invoking thecov/target to export reports.java_test.sh: Builds the native matrix libraries required by the Java bindings and then runs the Gradle test suite with the correct native library path injected, validating the Java interface end-to-end.
For detailed documentation, see the Documentation and for the latest coverage report, see Coverage and Java-Report.
Please report any security issues using GitHub's private vulnerability reporting or by emailing yaroslav.riabtsev@rwth-aachen.de. See the security policy for full details.
This project is open-source and available under the MIT License.