  We introduce a software package, Pigeons.jl, that provides a way to leverage
distributed computation to obtain samples from complicated probability
distributions, such as multimodal posteriors arising in Bayesian inference and
high-dimensional distributions in statistical mechanics. Pigeons.jl provides
simple APIs to perform such computations single-threaded, multi-threaded,
and/or distributed over thousands of MPI-communicating machines. In addition,
Pigeons.jl guarantees a property that we call strong parallelism invariance:
the output for a given seed is identical irrespective of the number of threads
and processes, which is crucial for scientific reproducibility and software
validation. We describe the key features of Pigeons.jl and the approach taken
to implement a distributed and randomized algorithm that satisfies strong
parallelism invariance.
