Philosophy#

This is a curated collection of reference C implementations covering key HPC application domains and the fundamental building blocks of scientific computing. Every code is implemented from scratch, follows a uniform structure, and treats clarity and consistency as first-class concerns. The goal is to provide high-quality implementations that are portable across platforms and architectures, free of external dependencies, and easy to understand, modify, and extend — all while reflecting the state of the art in algorithmic design and parallel optimization.

Features#

  • Flexible GNU Make-based build system — works out of the box on virtually any platform, with support for multiple toolchains and easy customization through plain text configuration files
  • Modular C software design — clean separation of concerns makes it easy to study individual components, swap implementations, or adapt code to new use cases
  • Uniform structure across all implementations — every code follows the same conventions for layout, configuration, and interfaces, minimizing the learning curve when moving between application domains
  • Sequential, threaded, and distributed memory parallel versions — all codes support a range of execution models, from single-core to large-scale multi-node deployments
  • Extensive built-in profiling capabilities — fine-grained timing and performance instrumentation is integrated directly into every implementation, requiring no external tools
  • State-of-the-art OpenMP and MPI support — parallelization reflects current best practices for shared-memory and distributed-memory programming
  • GPU support for NVIDIA and AMD hardware — accelerator implementations are provided for relevant codes, targeting both CUDA and HIP programming models

Usage scenarios#

  • Benchmarking — consistent, transparent, and well-understood codes make it straightforward to characterize hardware, compare architectures, and produce reproducible results
  • Performance-oriented research — clean baselines and modular designs enable systematic experimentation with optimization strategies, parallelization approaches, and algorithmic variants
  • Teaching — the uniform structure, explicit coding style, and comprehensive documentation make these codes an effective resource for courses and self-study in HPC, parallel programming, and scientific computing