GPU and CPU

Every stage (classical periodograms, folding, binning, the network) runs on the device you choose:

nnp.periodogram(t, m, e, device="cuda")   # all on the GPU
nnp.periodogram(t, m, e, device="cpu")    # all on the CPU
nnp.periodogram(t, m, e, device="mps")    # Apple silicon (phases in float64 on the CPU)

The default is CUDA if available, then MPS, then CPU. Phases are always computed in double precision (time x frequency over long baselines needs it); Apple’s MPS has no float64, so there they are computed on the CPU. Memory is bounded at any light-curve length: work is chunked so that roughly 2^23 phases are in flight at once.