Skip to content

Latest commit

 

History

History
71 lines (53 loc) · 3.97 KB

File metadata and controls

71 lines (53 loc) · 3.97 KB

MC Logo LightMC Logo Dark

version Checks Deploy codecov Codacy Badge license

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.

Requirements

  • 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)
  • For the Java/Kotlin bindings:

    • JDK 17 (configured via Gradle toolchains)
    • Gradle 7.6+ (or an IDE with Gradle integration such as IntelliJ IDEA)

Project Scripts

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 a GFLOPs vs. n plot 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 the bench_plot target.
  • cov.sh: Cleans previous coverage artifacts, reformats the C++ sources, and rebuilds the project with Clang in coverage mode before invoking the cov/ 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.

Documentation and Contributing

For detailed documentation, see the Documentation and for the latest coverage report, see Coverage and Java-Report.

Security Policy

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.

License

This project is open-source and available under the MIT License.