tudasc / CommPart

Automatic Partitioning of MPI operations in MPI+OpenMP applications

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MPI Communication Partitioning

This clang Pass partitions MPI sending operations among different chunks of an OpenMP for loop. (see Chapter 4 of the upcoming MPI standard [MPI20])

Building

Building the Pass with Cmake is quite straightforward:

mkdir build; cd build; cmake ..; make -j 4 You need LLVM/clang version 11.1.

Running

For running the pass, you need an MPI Implementation built with clang (Tested with mpich 3.3.2). For convenience, you can use the 'run.sh' script in order to run the transformation. The code to transform has to include the correctness-checking-partitioned-impl.h header file, which provides a naive implementation of the Partitioned operations with built in correctness checking. demo-codes contains some examples.

References

[CommPart21] Jammer, Tim and and Bischof, Christian: Automatic Partitioning of MPI operations in MPI+OpenMP applications 2021.
[MPI20] Message Passing Interface Forum: MPI: A Message-Passing Interface Standard - Version 4.0 Draft, 2020

About

Automatic Partitioning of MPI operations in MPI+OpenMP applications

License:Apache License 2.0


Languages

Language:C++ 70.6%Language:C 23.7%Language:Python 2.7%Language:Shell 1.5%Language:CMake 1.4%