Skip to content

Tools supporting the PaHIS model: the Hierarchical Synchronous Parallel model for Irregular workloads

License

Notifications You must be signed in to change notification settings

Algebraic-Programming/PaHIS

Repository files navigation

PaHiS - Model Microbenchmarking, ALP layer & Validation

A comprehensive toolkit for extracting, modeling, and validating PaHiS performance parameters for GraphBLAS operations. This tool automatically characterizes memory hierarchy performance through OpenMP microbenchmarks, generates cost models, and validates predictions through end-to-end application benchmarks.

Overview

This toolkit provides the complete cost modeling workflow:

  • Extracting topology information from system memory hierarchies
  • Running microbenchmarks to measure bandwidth and latency at each memory level
  • Generating PaHiS models for performance prediction
  • Creating C++ headers for integration with GraphBLAS libraries
  • Validating predictions through application benchmarks
  • Exporting models to the ALP GraphBLAS library

Installation

Prerequisites

Requirement Version Description
Python 3.8+ Core runtime environment
CMake 3.10+ Build system for C++ benchmarks
C++ Compiler Any OpenMP-capable(?) gcc, clang tested
numactl Latest NUMA control utilities (Linux)
ALP (optional) branch 376-enable-cost-model-eigen-eval For end-to-end benchmark validation and model compilation

Common Setup

All use case scenarios below require this shared setup. Complete these steps first:

# 1. Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# 2. Install Python dependencies
pip install -r requirements.txt

# 3. Set your system name
export HW_MODEL=your_system_name

# 4. Build C++ benchmarks (generates config_${HW_MODEL}.sh)
mkdir -p build && cd build && cmake ../hw_characterization/microbenchmarks && make -j && cd ..

# 5. Source your system configuration (or add it to ~/.bashrc for ease of use)
source config_${HW_MODEL}.sh

# 6. Run unit tests to validate system configuration & compilation
python -m pytest tests/ -v

Pre-generated headers available for: Intel6238Full, ARM920, AMDEPYC9634. If your system is in this list, you can use Scenario 1 immediately without running microbenchmarks.

Environment Variables Note: ALP_PATH, MATRIX_DIR, and DATADIR are only required for Scenario 3 (Full Workflow). If not set, common defaults will be used.

Use Case Scenarios

Choose the scenario that matches your needs:

Scenario 1: Quick Start with Pre-generated Headers

Use existing PaHiS models on a supported system without running benchmarks. Best for external users who want to try PaHiS immediately.

Go to Quick Start Guide

Scenario 2: Hardware Characterization (Microbenchmarks Only)

Run microbenchmarks to characterize your own hardware and generate new hw_params_{system}.hpp model headers from scratch.

Go to Hardware Characterization Guide

Scenario 3: Full Workflow (Characterization + ALP + Validation)

Complete pipeline including hardware characterization, ALP integration, and application benchmark validation with Conjugate Gradient and BiCGstab solvers.

Go to Full Workflow Guide

Reference

For detailed documentation on runner parameters, output structure, environment variables, and topology file format, see the Reference Guide.

About

Tools supporting the PaHIS model: the Hierarchical Synchronous Parallel model for Irregular workloads

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •