ho22joshua's picture
rewriting codebase (#7)
916755e
|
Raw
History Blame Contribute Delete
2.31 kB
# Performance benchmarks
These scripts use fixed synthetic inputs, explicit seeds, warmup iterations,
and JSON-lines output. GPU timings synchronize after every measured operation;
warmup and one-time setup costs are excluded from steady-state numbers.
```bash
uv run python benchmarks/benchmark_preprocessing.py
uv run python benchmarks/benchmark_dataloader.py
uv run python benchmarks/benchmark_training.py --device cpu
uv run python benchmarks/benchmark_inference.py --device cpu
uv run python benchmarks/benchmark_training.py --device cuda --profile
```
DGL-dependent scripts report a structured `skipped` result when the optional
`root-gnn` extra is absent. Profiler traces go under `profiles/` and are not
committed.
## Baseline measurements
The portable baseline in this checkout uses Python 3.12.13, PyTorch 2.2.2+cu121,
DGL 2.4.0+cu121, CPU, `nodes=32`, `iterations=10`, and `warmup=3`. Exact timings are machine
dependent; the JSON output from a local run is authoritative.
| Measurement | Mean | Median |
| --- | ---: | ---: |
| feature construction | 0.47 ms/event | 0.46 ms/event |
| edge features | 0.11 ms/graph | 0.11 ms/graph |
| graph-sample loader | 1.65 ms/iteration | 1.65 ms/iteration |
| ROOT-GNN training step | 21.19 ms/step | 5.32 ms/step |
| ROOT-GNN inference | 1.48 ms/graph | 1.49 ms/graph |
On the available NVIDIA A100-PCIE-40GB with CUDA 12.1 runtime, the same small
synthetic ROOT-GNN benchmark measured 6.41 ms/step (17.3 MiB peak allocated)
and 2.00 ms/graph. These are microbenchmarks, not production-workload claims.
DGL is available in this environment. The training mean is skewed by one CPU
warmup-adjacent outlier; median is the more useful steady-state indicator. DDP
measurements require a multi-process run and are not inferred from CPU numbers.
The topology cache is bounded to 32 node-count/device/policy entries and only
stores reusable index tensors, never event-specific edge features.
On the same CPU, a direct topology microbenchmark for 64 nodes measured
201.6 microseconds per cold construction versus 10.5 microseconds for a warm
cache lookup (about 19x for this isolated operation). This is a targeted
index-construction result, not an end-to-end training speedup; graph feature
construction and DGL message passing remain separate costs.