1
CPS615 Introduction to Computational Science The Message Passing Interface MPI 2
Abstract of MPI Presentation 3
MPI Overview -- Comparison with HPF -- I 4
MPI Overview -- Comparison with HPF -- II 5
Some Key Features of MPI 6
What is MPI? 7
History of MPI 8
Who Designed MPI? 9
Some Difficulties with MPI 10
Sending/Receiving Messages: Issues 11
What Gets Sent: The Buffer 12
Generalizing the Buffer in MPI 13
Advantages of Datatypes 14
To Whom It Gets Sent: Process Identifiers 15
Generalizing the Process Identifier in MPI 16
Why use Process Groups? 17
How It Is Identified: Message Tags 18
Sample Program using Library 19
Correct Library Execution 20
Incorrect Library Execution 21
What Happened? 22
Solution to the Tag Problem 23
MPI Conventions 24
Standard Constants in MPI 25
The Six Fundamental MPI routines 26
MPI_Init -- Environment Management 27
MPI_Comm_rank -- Environment Inquiry 28
MPI_Comm_size -- Environment Inquiry 29
MPI_Finalize -- Environment Management 30
Hello World in C plus MPI 31
Comments on Parallel Input/Output - I 32
Comments on Parallel Input/Output - II 33
Blocking Send: MPI_Send(C) or MPI_SEND(Fortran) 34
Example MPI_SEND in Fortran 35
Blocking Receive: MPI_RECV(Fortran) 36
Blocking Receive: MPI_Recv(C) 37
Fortran example: Receive 38
Hello World:C Example of Send and Receive 39
HelloWorld, continued 40
Interpretation of Returned Message Status 41
Collective Communication 42
Some Collective Communication Operations 43
Hello World:C Example of Broadcast 44
Collective Computation 45
Examples of Collective Communication/Computation 46
Collective Computation Patterns 47
More Examples of Collective Communication/Computation 48
Data Movement (1) 49
Examples of MPI_ALLTOALL 50
Data Movement (2) 51
List of Collective Routines 52
Example Fortran: Performing a Sum 53
Example C: Computing Pi 54
Pi Example continued 55
Buffering Issues 56
Avoiding Buffering Costs 57
Combining Blocking and Send Modes 58
Cartesian Topologies 59
Defining a Cartesian Topology 60
MPI_Cart_coords or Who am I? 61
Who are my neighbors? 62
Periodic meshes 63
Motivation for Derived Datatypes in MPI 64
Derived Datatype Basics 65
Simple Example of Derived Datatype 66
Derived Datatypes: Vectors 67
Example of Vector type 68
Why is this interesting? 69
Use of Derived Types in Jacobi Iteration 70
Derived Datatypes: Indexed 71
Designing MPI Programs 72
Jacobi Iteration: The Problem 73
Jacobi Iteration: MPI Program Design 74
Jacobi Iteration: MPI Program Design 75
Jacobi Iteration: Fortran MPI Program 76
Jacobi Iteration: create topology 77
Jacobi iteration: data structures 78
Jacobi Iteration: send guard values 79
Jacobi Iteration: update and error 80
The MPI Timer 81
MPI-2 82
I/O included in MPI-2
Click outside pointer rectangle to move pointer
Click on Pointer to Hide
Click on Pointer + ALT to toggle message hiding
Click on Pointer + CNTL to abolish pointer
Click on Pointer + Shift to cycle families
Click outside + Alt is Change Image
Click outside + Control is Double Size
Click outside + Shift is Halve Size
Right Mouse Down on Pointer Toggles Index
Shift Right Mouse aligns top with scrolled Page While With Mouse Down on Current Pointer h hides This Message while m restores i Toggles Index Aligned with Page Top j Toggles Index Aligned with Scrolled View Top a Abolishes Pointer while CNTL-Click restores f cycles through pointer families c cycles through members of a family u increases Size Up and d decreases Down Mouse Up-Down between changes of Pointer to process new option