Table
of Contents (without page numbers)
To view the actual Table of Contents page and much more, download this PDF.
Preface
Who
Should
Read This
Booklet?
Why
the
Message Passing Interface,
MPI?
How to Use This
Booklet
Computer
Science
Terminology
Not
Computer Science
Terminology
Software and Hardware
Requirements
Legal
Information
Chapter
1
Compiling and
Executing an MPI-based
Program
A.
Activating the Message Passing
Daemon
B.
Executing a Compiled C/MPI
Program
C.
Compiling a C/MPI
Program
D. Using
a C/MPI Template for
Programming
E.
Running Multiple Processes on a Single
CPU
F. The
Four MPI Commands of Chapter 1 (optional
reading)
G. Using
Process
Rank
Code
Appendix : ch1.1.cpp - The
MPI
Template
Code
Appendix : ch1.2.cpp - Template with Three printf( )'s
Code
Appendix : ch1.3 .cpp - Generate Process Specific Array
Values
Code
Appendix : New Function -
printf_oneP_nobarrier( )
Chapter
2
Using MPI_Barrier( ) To Enforce Parallel
Execution
A.
Introduction
B.
Collective Commands, Barriers, and Parallel
Computation
C.
MPI_Barrier() is the Simplest Collective
Command
D. How to
Achieve Approximate Synchronization Across
Processes
E.
Installing MPI_Barrier() into the source
code
F.
Summing
up
Code
Appendix : ch2.1.cpp - Chapter 2
Template
Code
Appendix : ch2.2.cpp - One Barrier Improves Output
Code
Appendix : ch2.3.cpp - Two Barriers Pause the Program for
Input
Code
Appendix : New Function -
keyb_entry_nonneg_int( )
Chapter
3
Transmitting
Data Between Processes with MPI_Bcast(
)
A.
Sending the Keyboard Entry to All
Processes
B.
Parsing the Arguments of MPI_Bcast(
)
C.
Sending a Data Array with MPI_Bcast(
)
D. A
Function To Order Your Output, ourmpi_printf(
)
E.
Summary
F.
Answers for Chapter
3
Code
Appendix : ch3.1.cpp - ch2.4.cpp
Revised
Code
Appendix : ch3.2.cpp - Broadcast Keyboard
Entry
Code
Appendix : ch3.3.cpp - Broadcasting a Data
Array
Code
Appendix : ch3.4.cpp - Fully Ordered Printing of
ch3.2.cpp
Code
Appendix : ch3.5.cpp - Fully Ordered Printing of
ch3.3.cpp
Code
Appendix : New Function - ourmpi_print(
)
Chapter
4
Transmitting
Data Between Processes with MPI_Scatterv(
)
A.
Comparing MPI_Scatterv() to
MPI_Bcast()
B.
Sending a Partitioned Data
Array
C. A
Better Program for
Partitioning
D.
Summary
E.
Answers for Chapter
4
Code
Appendix : ch4.1.cpp - Replacing the MPI_Bcast from ch3.3.cpp w/
MPI_Scatterv( )
Code
Appendix : ch4.2.cpp - Partitioning and Transmitting an Array w/
MPI_Scatterv( )
Code
Appendix : ch4.3.cpp - Generalized Partitioning and
Scattering
Code
Appendix : New Function -
scv_partition()
Chapter
5
MPI_Gatherv(
) Complements
MPI_Scatterv( )
A.
Reconstituting a Partitioned Array with
MPI_Gatherv( )
B. The
Nine Arguments of
MPI_Gatherv( )
C.
Normalizing the length of a vector and some more linear
algebra
Code
Appendix : ch5.1.cpp - Generalized Partitioning and Sccattering
Template
Code
Appendix : ch5.2.cpp - Reconstructing Partitioned & Scattered
Data w/ MPI_Gatherv( )
Code
Appendix : ch5.3.cpp - Generalization of Concatenation Technique
w/ MPI_Gatherv( )
Code
Appendix : ch5.4.cpp - Parallel
Vector Normalization with
MPI
Things We Almost Forgot to
Mention
The
Underestimated Importance of the Collective
Commands
More MPI
and MPICH
Commands
Bug
Reminders
Hints
Why We
Expect to be Using MPI More in the
Future
Appendix I :
Troubleshooting
Compiler
Problems
Apple/Mac
OS X
Issues
mpiexec
Warning
What to
do if an MPI Program
Crashes
Other
Errors
Appendix II – The
Complete Header
File
supercomputing_simplified.hpp
Appendix III – The
Provided
Functions
ScS_functions.cpp
Appendix IV : Some MPI Data
Types
Appendix V : Handy Linux
Commands
Quick
Reference
A.
Introduction & Formatting
Notes
B. The
File
System
C.
Essential Commands (Elementary
Navigation)
D.
Options
E. The
Manual
F.
Directory Navigation & File
Management
G.
Reading Files & Creating
Output
H.
Managing Executing
Programs
I.
Complex
Commands
J. File
Permissions
K. Secure
Communication with Other Linux
Computers
Appendix VI: References & Suggested Further Reading