Collective MPI communications have to be executed in the same order by all processes in their communicator and the same number of times, otherwise a deadlock occurs. As soon as the controlflow involving these collective operations becomes more complex, in particular including conditionals on process ranks, ensuring the correction of such code is error-prone. We propose in this paper a static analysis to detect when such situation occurs, combined with a code transformation that prevents from deadlocking. We show on several benchmarks the small impact on performance and the ease of integration of our techniques in the development process. Verification
We proposed in REF a combining method to detect misuse of MPI collective operations in MPI programs.
Combining static and dynamic validation of MPI collective communications
EuroMPI
Computer Science