-
Notifications
You must be signed in to change notification settings - Fork 2
Benchmark Suite
The GraphBrew Benchmark Suite provides automated tools for running comprehensive experiments across multiple graphs, algorithms, and benchmarks.
scripts/
├── graphbrew_experiment.py # ⭐ MAIN: One-click unified pipeline
│ # Downloads, builds, benchmarks, analyzes
├── requirements.txt # Python dependencies
├── lib/ # 📦 Core modules (all functionality)
│ ├── download.py # Graph downloading
│ ├── benchmark.py # Benchmark execution
│ ├── cache.py # Cache simulation
│ ├── weights.py # Weight management
│ ├── training.py # ML training
│ ├── features.py # Graph feature extraction
│ └── ... # Other modules
└── weights/ # Auto-clustered type weights
├── active/ # C++ reads from here
├── merged/ # Accumulated weights
└── runs/ # Historical snapshots
python3 scripts/graphbrew_experiment.py --full --size small # Full pipeline
python3 scripts/graphbrew_experiment.py --train --size small # Training pipeline
python3 scripts/graphbrew_experiment.py --size small --quick # Quick test
python3 scripts/graphbrew_experiment.py --brute-force # ValidationSizes: small (16 graphs, 62MB) · medium (28, 1.1GB) · large (37, 25GB) · xlarge (6, 63GB) · all (87, 89GB). Categories include mesh, web, social, road, citation, P2P, and synthetic graphs.
Results saved to ./results/ (reorder_*.json, benchmark_*.json, cache_*.json) and weights to ./scripts/weights/active/ (type_registry.json, type_N.json).
python3 scripts/graphbrew_experiment.py --phase reorder --size small
python3 scripts/graphbrew_experiment.py --phase benchmark --size small --skip-cache
python3 scripts/graphbrew_experiment.py --phase cache --size small
python3 scripts/graphbrew_experiment.py --phase weightsSee Command-Line-Reference for all options including --min-mb, --max-graphs, --trials, --quick.
Results are JSON arrays. See Configuration-Files for the complete schema of benchmark_*.json, cache_*.json, reorder_*.json, and type_N.json weight files.
Analyze how reordering affects PageRank convergence.
Run PageRank directly via the binary with verbose output:
# Run PR with verbose convergence output
./bench/bin/pr -f graph.mtx -s -o 7 -n 5Or include in the experiment pipeline:
# Run benchmarks (includes convergence data in results)
python3 scripts/graphbrew_experiment.py --phase benchmark --size smallPageRank convergence varies by reordering algorithm:
Graph: facebook.el
┌────────────────────┬────────────┬──────────────┐
│ Algorithm │ Iterations │ Final Error │
├────────────────────┼────────────┼──────────────┤
│ ORIGINAL (0) │ 18 │ 9.2e-7 │
│ HUBCLUSTERDBG (7) │ 16 │ 8.8e-7 │
│ LeidenOrder (15) │ 15 │ 9.1e-7 │
│ LeidenCSR (17) │ 14 │ 8.5e-7 │
└────────────────────┴────────────┴──────────────┘
# One-click full experiment
python3 scripts/graphbrew_experiment.py --full --size mediumFor step-by-step control, see Running-Benchmarks for manual execution and Command-Line-Reference for all options.
See Troubleshooting for common issues. Quick fixes:
- Missing graphs:
--download-only --force-download - Memory issues:
--size smallor--max-mb 500 - Timeouts:
--skip-slow --skip-expensive
- Correlation-Analysis - Analyze benchmark results
- AdaptiveOrder-ML - Train the perceptron
- Running-Benchmarks - Manual benchmark commands
- Python-Scripts - Full script documentation