-
Notifications
You must be signed in to change notification settings - Fork 2
VLDB Experiments
Complete reference for reproducing the GraphBrew multilayered reordering paper experiments.
This document explains how to run all experiments, generate figures, and reproduce
every number in the paper from an empty results/ folder.
- Quick Start
- Prerequisites
- Experiment Overview
- Running Experiments
- Generated Outputs
- Configuration Reference
- Troubleshooting
# One command reproduces all paper figures:
python3 scripts/experiments/vldb_paper_experiments.py \
--all --graph-dir /path/to/graphs
# Preview mode (fast validation, small graphs):
python3 scripts/experiments/vldb_paper_experiments.py \
--all --preview --graph-dir /path/to/graphs
# Dry run (show commands without executing):
python3 scripts/experiments/vldb_paper_experiments.py \
--all --dry-run
# Regenerate figures from existing results:
python3 scripts/experiments/vldb_paper_experiments.py --figures-only# On Linux (native):
make all RABBIT_ENABLE=1
make sim # cache simulation binaries
# On Windows (via WSL):
.\build_wsl.ps1 allDownload the evaluation graphs and convert to .sg format:
python3 scripts/graphbrew_experiment.py --full --size mediumOr manually place .sg files in a directory and pass --graph-dir <path>.
pip install matplotlib numpy # optional: for figure generationThe paper's evaluation consists of 6 subsections, each mapped to specific experiments in the runner:
| § | Paper Subsection | Experiment | What It Measures |
|---|---|---|---|
| 4.2 | Cache Performance | Exp 1 | Cache miss rates across cache sizes (PR, all reorderings) |
| 4.3 | Kernel Speedup | Exp 2 | Algorithm execution time normalized to Original (7 benchmarks) |
| 4.4 | Overhead & E2E | Exp 3+4 | Reorder preprocessing time + amortization analysis |
| 4.5 | Sensitivity & Composability | Exp 5+6+7 | Graph-type sensitivity, layer ablation, chained orderings |
| 4.6 | Scalability | Exp 8 | Thread scaling of reorder step (1–32 threads) |
Baselines (11): Original, Random, SORT, HubSort, HubCluster, DBG, HubSortDBG, HubClusterDBG, RabbitOrder, Gorder, RCM, GoGraph
GraphBrew Variants (7): Leiden, Rabbit, HubCluster, HRAB, TQR, HCache, Streaming
Chained Orderings (5): SORT→RabbitOrder, SORT→GB-Leiden, DBG→GB-Leiden, SORT→GB-HRAB, HubClusterDBG→RabbitOrder
BFS, PR (PageRank), PR-SpMV, SSSP, CC (Afforest), CC-SV, BC
| Graph | Vertices (M) | Edges (M) | Type |
|---|---|---|---|
| cit-Patents | 6.01 | 16.52 | Citation |
| soc-pokec | 1.63 | 30.62 | Social |
| USA-Road | 23.95 | 58.33 | Road |
| soc-LiveJournal1 | 4.85 | 68.99 | Social |
| com-orkut | 3.07 | 117.19 | Social |
| wikipedia_link_en | 12.15 | 378.14 | Content |
| Gong-gplus | 28.94 | 462.99 | Social |
| webbase-2001 | 118.14 | 1,019.90 | Web |
| 61.79 | 1,468.36 | Social |
# Run all 8 experiments + auto-generate figures:
python3 scripts/experiments/vldb_paper_experiments.py \
--all --graph-dir /data/graphs
# Run specific experiments (e.g., cache + speedup only):
python3 scripts/experiments/vldb_paper_experiments.py \
--exp 1 2 --graph-dir /data/graphs
# Skip figure generation:
python3 scripts/experiments/vldb_paper_experiments.py \
--all --graph-dir /data/graphs --no-figuresFor fast validation before the full run:
python3 scripts/experiments/vldb_paper_experiments.py \
--all --preview --graph-dir /data/graphsPreview uses: 2 small graphs, 1 trial, 2 benchmarks (PR, BFS), 300s timeout.
python3 scripts/experiments/vldb_paper_experiments.py \
--all --graphs cit-Patents soc-pokec --graph-dir /data/graphs# From real experiment data:
python3 scripts/experiments/vldb_paper_experiments.py --figures-only
# With sample/placeholder data (for layout preview):
python3 scripts/experiments/vldb_generate_figures.py --sample-dataresults/vldb_paper/
├── MANIFEST.json # Reproducibility metadata (git hash, config, timing)
├── exp1_cache/ # Cache simulation results (JSON)
├── exp2_speedup/ # Kernel speedup results (JSON)
├── exp3_overhead/ # Reorder overhead results (JSON)
├── exp4_e2e/ # End-to-end derived data
├── exp5_ablation/ # Ablation study results (JSON)
├── exp6_sensitivity/ # Graph-type sensitivity metadata
├── exp7_chained/ # Chained ordering results (JSON)
├── exp8_scalability/ # Thread scaling results (JSON)
├── figures/ # Generated PNG figures
│ ├── fig1_cache_performance.png
│ ├── fig2_kernel_speedup.png
│ └── fig3_reorder_overhead.png
└── tables/ # Generated LaTeX table snippets
├── table_variants.tex
├── table_ablation.tex
├── table_sensitivity.tex
└── table_chained.tex
Figures are also copied to the paper's dataCharts/ directory for direct
\includegraphics inclusion.
All experiment parameters are defined in
scripts/experiments/vldb_config.py:
| Parameter | Full | Preview |
|---|---|---|
| Trials | 3 | 1 |
| Benchmarks | 7 (bfs, pr, pr_spmv, sssp, cc, cc_sv, bc) | 2 (pr, bfs) |
| Graphs | 9 | 2 |
| Timeout (per command) | 3600s | 300s |
| Thread counts (scaling) | 1, 2, 4, 8, 16, 32 | 1, 2, 4, 8, 16, 32 |
| Flag | Description |
|---|---|
--all |
Run all 8 experiments |
--exp N [N ...] |
Run specific experiment(s) by number (1-8) |
--preview |
Use small graphs, 1 trial, 2 benchmarks |
--dry-run |
Print commands without executing |
--graph-dir PATH |
Directory containing .sg and .el graph files |
--graphs NAME [...] |
Override graph list by name |
--no-figures |
Skip automatic figure generation |
--figures-only |
Generate figures from existing results (no experiments) |
"Binary not found" — Run make all RABBIT_ENABLE=1 first.
"Graph file not found" — Ensure --graph-dir points to a directory with
.sg files matching the graph names in the config (e.g., cit-Patents.sg).
"matplotlib not available" — Install with pip install matplotlib numpy.
Tables will still be generated without matplotlib.
"Timeout" — Large graphs (twitter, webbase) may need longer timeouts.
Edit TIMEOUT_FULL in vldb_config.py.
To add a new graph or algorithm, edit scripts/experiments/vldb_config.py:
-
EVAL_GRAPHS— add graph metadata -
BASELINE_ALGORITHMS— add algorithm ID and name -
GRAPHBREW_VARIANTS— add variant string -
CHAINED_ORDERINGS— add (name, flags) tuple
See also: GraphBrewOrder, Running-Benchmarks, Command-Line-Reference, Cache-Simulation