Simple Parallel Data Structures
Getting started with "Hello World"
Sharing Data
Using MPI datatypes to share data
Using MPI_Pack to share data
Sending in a ring (broadcast by ring)
Using topologies to find neighbors
Finding PI using MPI collective operations
Fairness in message passing
Implementing Fairness using Waitsome
A Parallel Data Structure
Using nonblocking operations
Shifting data around
Exchanging data with MPI_Sendrecv
A simple Jacobi iteration
Collecting Data
Collecting Data (with varying amounts from each process)
Putting it all together: A complete application
Master/slave
Master/slave programs in MPI
A simple output server
Performance tuning MPI
Results
of running all of the exercises in this section are available.
Determining delivered memory performance
Determining delivered memory performance with unaligned data
Benchmarking point to point performance
Benchmarking point to point performance with MPI_Ssend
Benchmarking point to point performance with nonblocking operations
Benchmarking point to point performance with nonblocking operations, head-to-head
Benchmarking point to point performance with unaligned data
Benchmarking point to point performance with contention
Benchmarking point to point performance with contention with MPI_Ssend
Determining the amount of MPI buffering
Benchmarking collective barrier
Benchmarking collective Allreduce
Comparing the performance of MPI vector datatypes
Exploring the cost of synchronization delays
Pipelining pitfalls
Demonstration of poor performance caused by unnecessary synchronization
Demonstation of improved performance by defering synchronization
Jacobi Iteration - Example Parallel Mesh
Jacobi Iteration - Shift up and down
Jacobi Iteration - Exchange head-to-head
Jacobi Iteration - Nonblocking send/recv
Jacobi Iteration - Nonblocking send/recv for receiver pull
Jacobi Iteration - Synchronous send
Jacobi Iteration - Ready send
Jacobi Iteration - Nonblocking Ready send
Jacobi Iteration - Overlapping communication
Jacobi Iteration - Overlapping communication (sends first)
Jacobi Iteration - Persistent send/recv
Miscellaneous Advanced MPI
Using Datatypes to Scatter Matrices Among Processors