README.md 1.52 KB
Newer Older
1
# tMPI: A team based PMPI wrapper for MPI #
2
3
4

### What is this repository for? ###

5
This wrapper adds functionality to MPI enabling replication and team based execution using the PMPI features of MPI.  
6

7
The library re-defines the weak symbols declared by MPI. This means the replication is transparent to the application.  
Ben Hazelwood's avatar
Ben Hazelwood committed
8

9
Replication is achieved by splitting MPI_COMM_WORLD into a fixed number of "team" communicators. Each team then sends messages completely independent of other teams.   
10

11
12
Unlike other similar libraries, the replicas are free to proceed completely asynchronously from other replicas. They communicate progress and error information via a "heartbeat". A heartbeat is inserted into user code via an MPI_Sendrecv(...,MPI_COMM_SELF) call. At each heartbeat, the replicas mark this point on a timeline and compare there progress against the other replicas. If a buffer is provided to the heartbeat then the hashcode is also compared with the other replicas. 

13
14
15
16
### How do I get set up? ##   
To build the library:  
1. Run make in the lib directory  
2. set the number of teams with the "TEAMS" environment variable (default: 2)  
17

18
19
20
To use some example provided miniapps:  
1. run make in the applications folder  
2. run each application in the bin folder with the required command line parameters (documented in each application folder)  
21

22
23
24
To use with an existing application:  
1. Link with -ltmpi -L"path to tmpi"   
2. Add "path to tmpi" to LD_LIBRARY_PATH   
25
26

### Who do I talk to? ###
Ben Hazelwood's avatar
Ben Hazelwood committed
27
Ben Hazelwood (benjamin.hazelwood@durham.ac.uk)