What you need
- SSH-key access to a Slurm cluster with at least one ≥ 24 GB-VRAM GPU node.
- Python 3.10+.
- CUDA-capable hardware (PYRO-NN’s projection kernels are CUDA-only).
- (Optional) Mayo LDCT or another public CT dataset — synthetic phantoms also work for testing.
Local sanity check (without a GPU)
The package imports cleanly without CUDA — you can iterate on geometry, simulation, and U-Net code on a laptop. The PYRO-NN backend is only loaded when a projector is constructed.
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python -c "from ddssl_ldct.geometry import FanBeamGeometry; print(FanBeamGeometry())"
Cluster bring-up
Copy the cluster operating-guide template:
cp config/cluster_agent_guide.template.md config/<your-site>_cluster_agent_guide.md
# fill in your site's hostnames, GPU inventory, etc. (this file is gitignored)
Then on the cluster (inside a GPU Slurm allocation):
sbatch cluster/slurm/ddssl_smoke.sbatch
# or interactively:
srun --gres=gpu:1 --time=01:00:00 --mem=24G --pty bash
bash cluster/setup.sh
cluster/setup.sh is idempotent: it clones csyben/PYRO-NN, builds the CUDA extensions against the locally-available toolkit (it provisions CUDA 11.8 to a user-writable path if the node only has older), and verifies the torch-backend fan-beam projector imports cleanly.
Smoke test
sbatch cluster/slurm/ddssl_smoke.sbatch
Watches: nvidia-smi -L, torch version + CUDA availability, a Shepp-Logan forward + FBP at the Wagner geometry (512 × 512 / 1152 views / 736 dets), then a 5-epoch run on 8 synthetic phantoms. The output PNGs land in runs/exp_pyronn/.
Data
Each Pentathlon challenge has its own download instructions in challenges/<name>/README.md. None of them ship inside the repo — pull what you need from the cited source. Storage layout convention:
<cluster_root>/<user>/Agent4CT/data/<challenge>/
raw/ # untouched source files
staged/ # H5 / Zarr containers packed for fast streaming (see docs/performance.md)
See Performance for the staging pattern that keeps the GPU busy on a contended NFS.
Configuration
| File | Purpose |
|---|---|
config/llm_api.example.toml |
Copy to config/llm_api.toml, fill in your LLM endpoint + key. Real file is gitignored. |
config/cluster_agent_guide.template.md |
Copy to config/<site>_cluster_agent_guide.md. Real file is gitignored. |
requirements.txt |
Project dependencies (excluding PYRO-NN, which is built from source). |