You are here: Home » Table of Contents

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