  The Friends-of-Friends (FoF) algorithm is a standard technique used in
cosmological $N$-body simulations to identify structures. Its goal is to find
clusters of particles (called groups) that are separated by at most a cut-off
radius. $N$-body simulations typically use most of the memory present on a
node, leaving very little free for a FoF algorithm to run on-the-fly. We
propose a new method that utilises the common Union-Find data structure and a
hybrid MPI+threads approach. The algorithm can also be expressed elegantly in a
task-based formalism if such a framework is used in the rest of the
application. We have implemented our algorithm in the open-source cosmological
code, SWIFT. Our implementation displays excellent strong- and weak-scaling
behaviour on realistic problems and compares favourably (speed-up of 18x) over
other methods commonly used in the $N$-body community.
