Making MPI Collective Operations Visible: Understanding Internal Algorithms and Performance Implications
Invited talk at the Institute for Parallel and Distributed Systems (IPVS) at the University of Stuttgart
Presenter: Anna-Lena Roth
Location: Stuttgart, Germany
Applications invoke collective communication through high-level calls such as MPI_Bcast, MPI_Reduce, or MPI_Alltoall. Internally, MPI libraries commonly implement these operations as algorithms composed of point-to-point communication. The selected algorithm, its data movement, and its suitability for a given process placement and underlying hardware remain hidden. Even established performance-analysis tools offer little support in understanding this behavior: they typically represent a collective operation as a single event, without revealing the internal communication or the algorithm selected by the MPI library. EduMPI Suite makes the internal execution of collective MPI operations visible in near-real-time. Originally developed as an educational tool, it visualizes message transfers between MPI ranks, the placement of the corresponding processes on physical compute nodes, and the associated data volumes. The visualization is updated once per second and presents the evolving communication pattern through 2D and 3D views as well as a communication matrix. The visualization makes algorithmic differences between executions directly observable and shows how message size, process count, process placement, and system topology affect collective communication. This enables the communication behavior of collective communications to be assessed in context: communication hotspots, synchronization effects, waiting states, and inter-node traffic become visible, while efficient combinations of collective algorithm, process placement, and execution configuration can be identified. Beyond conventional MPI applications, the visualization approach could be extended to asynchronous many-task systems (AMT) that use MPI as a communication backend, such as HPX and MPI-based Dagger.jl. In these systems, communication is generated by the runtime rather than explicitly expressed by the developer in the application code. Associating MPI operations with the tasks that initiated them could expose communication patterns hidden beneath the runtime abstraction and reveal recurring fine-grained transfers that could be replaced by suitable collective operations.