Massively parallel Fourier transforms are widely used in computational sciences, and specifically in computational fluid dynamics, which involves unbounded Poisson problems. In practice, the latter is usually the most time-consuming operation due to its inescapable all-to-all communication pattern. The original flups library tackles that issue with an implementation of the distributed Fourier transform tailor-made for successive resolutions of unbounded Poisson problems. However the proposed implementation lacks of flexibility as it only supports cell-centered data layout and features a plain communication strategy. This work extends the library along two directions. First, flups’ implementation is generalized to support a node-centered data layout. Second, three distinct approaches are provided to handle the communications: one all-to-all, and two non-blocking implementations relying on manual packing and MPI_Datatype to communicate over the network. The proposed software is validated against analytical solutions for unbounded, semi-unbounded, and periodic domains. The performance of the approaches is then compared against accFFT, another distributed FFT implementation, using a periodic case. Finally the performance metrics of each implementation are analyzed and detailed on various top-tier European facilities up to 49,152 cores. This work brings flups up to a fully production ready and performant distributed FFT library, featuring all the possible types of FFTs and with flexibility in the data-layout.
Balty, P., Chatelain, P., & Gillis, T. (2023). FLUPS - A Flexible and Performant Massively Parallel Fourier Transform Library. IEEE Transactions on Parallel and Distributed Systems, 34(7), 2011-2024. https://doi.org/10.1109/TPDS.2023.3254302 (Original work published 2023)