User Guide#
The user guide explains the runtime choices that define a PM++ experiment. Start with configuration and initial conditions, then add evolution, analysis, gradients, or multiple devices as needed.
The examples run on multiple GPUs and exercise PM++’s distributed ownership, communication, and FFT paths.
Configuration: geometry, units, precision, schedules, compilation, and static capacities.
Precision, reproducibility, and gradients: float32 atomic variation, float64 guidance, deterministic execution, and adjoint validation.
Initial conditions: Gaussian, phase-only, and nested noise; transfer functions; and LPT.
Evolution and analysis: N-body runs, observers, density projections, and spectra.
Differentiation: supported gradient targets and validation strategy.
Multi-GPU execution: device meshes,
mesh_halo, ownership, distributed FFTs, and capacity planning.Optimizations: measured forward and AD settings and portable fallbacks.
Pallas CIC kernels: the paired particle-mesh kernels, qualification, and reference fallback.
CUDA routing: optional FFI setup for accelerated local mesh-halo particle routing.
Troubleshooting: overflows, decompositions, compilation, and memory failures.
The notebook gallery pairs these explanations with pre-executed examples.