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.
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
| 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 |
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/ -vPre-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, andDATADIRare only required for Scenario 3 (Full Workflow). If not set, common defaults will be used.
Choose the scenario that matches your needs:
Use existing PaHiS models on a supported system without running benchmarks. Best for external users who want to try PaHiS immediately.
Run microbenchmarks to characterize your own hardware and generate new hw_params_{system}.hpp model headers from scratch.
Go to Hardware Characterization Guide
Complete pipeline including hardware characterization, ALP integration, and application benchmark validation with Conjugate Gradient and BiCGstab solvers.
For detailed documentation on runner parameters, output structure, environment variables, and topology file format, see the Reference Guide.