This is from Chapter 8 of Parallel and High Performance Computing book, Robey and Zamora Manning Publications, available at http://manning.com
The book may be obtained at http://www.manning.com/?a_aid=ParallelComputingRobey
Copyright 2019-2020 Robert Robey, Yuliana Zamora, and Manning Publications Emails: brobey@earthlink.net, yzamora215@gmail.com
See License.txt for licensing information.
MPI requires either OpenMPI or MPICH
  Demonstrates both a simple makefile and cmake
  Build with either make or cmake
  Run with ./MinWorkExampleMPI
  Has both a simple makefile and cmake
  Build with either make or cmake
  Run ./Send_Recv1 -- always hangs
  Run ./Send_Recv2 -- sometimes fails
  Run ./Send_Recv3 through ./Send_Recv6
  Has both a simple makefile and cmake
  Build with either make or cmake
  Run ./SynchronizedTimer1
  Run ./SynchronizedTimer2
  Has both a simple makefile and cmake
  Build with either make or cmake
  Run ./FileRead
  Has both a simple makefile and cmake
  Build with either make or cmake
  Run ./globalsums
  Has both a simple makefile and cmake
  Build with either make or cmake
  Run ./DebugPrintout
  Has both a simple makefile and cmake
  Build with either make or cmake
  Run ./ScatterGather
  Has both a simple makefile and cmake
  Build with either make or cmake
  Run ./StreamTriad and ./StreamTriadVec
  Run the ghost/cart exchange problems with 
  Edit the batch.sh file and change the mpirun commands to your liking
  ./batch.sh |& tee results.txt
  ./get_stats.sh | tee stats.out
  Has both a simple makefile and cmake
  Build with either make or cmake
  Run ./CartExchange