# ECG Slurm Final Runs This page describes the reproducible UVA Slurm workflow for ECG final-paper runs. The goal is to split slow gem5 or Sniper simulations into independent shards, run each shard on a separate machine, and aggregate all CSVs later. The key rule: one GraphBrew gem5 process per node unless you have explicitly isolated the runtime sideband files. The gem5 path uses shared sideband files under `/tmp`, so Slurm jobs should request exclusive nodes or otherwise ensure only one GraphBrew gem5 shard runs per node. For autonomous execution, follow [the ECG autonomous final-paper completion task](../plans/ecg-autonomous-final-paper-completion.md). It keeps build checks, dry-runs, tiny smokes, and shard generation local, while large file-backed gem5/Sniper/final profiles are saved as Slurm shards instead of being launched on the workstation. ## Overview The workflow has four phases: 1. Prepare a shared checkout, Python environment, gem5 build, benchmark binaries, and graph data. 2. Generate one shard per graph / benchmark / policy. 3. Submit Slurm array jobs, where each task runs exactly one shard. 4. Aggregate completed shard directories with `paper_pipeline.py --skip-run`. The final-run wrapper supports these sharding filters: ```bash --graph # exact normalized manifest graph name --benchmark # pr, bfs, or sssp --policy