Section: New Results
Multithreaded Communication Engine
Participants : Alexandre Denis, Raymond Namyst, François Trahay.
The increase of the number of cores per node in clusters requires changes in the exploitation of high performance networks. The classical MPI approach that consists in running one MPI process per core do not scale because of memory limitations. The use of an hybrid approach mixing MPI and threads seems to be an efficient way to exploit nowadays clusters. Thus, communication libraries have to take into account that applications may be multithreaded.
We designed an efficient thread-safe communication library that allows threads to communicate concurrently. The use of PIOMan as well as fine-grain locking permits to achieve good performance even on multithreaded environment. We analyzed  the impact of various way of ensuring thread-safety on performance.
We showed  that, by using a centralized I/O event manager, a high level of “reactivity” can be guaranteed in a portable way even during heavy computation phases. We have designed a scalable architecture for this I/O server named PIOMan . By interacting with the thread scheduler, PIOMan detects the completion of the communication queries (either by polling the network or waiting for interrupts) and triggers the appropriate callback as soon as possible. Communication processing can thus be parallelized and the progression of asynchronous communications in the background can be performed efficiently, allowing a full overlap of communication and computation  .
PadicoTM, Madeleine and NewMadeleine are already using PIOMan , making them reactive even when many computing threads are running. We are currently developing an enhanced version of NewMadeleine that optimizes the communications more efficiently thanks to the multithreading support provided by PIOMan . By delegating message submission to idle cores, NewMadeleine is able to send messages in parallel over several (potentially different) networks interfaces, reducing the transmission duration  .