Skip to content

ninjaro/matrix-centipede

Repository files navigation

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.

About

(New Sequence)

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors