An Introduction to Parallel Programming


Product Description
Author Peter Pacheco uses a tutorial approach to show students how to develop effective parallel programs with MPI, Pthreads, and OpenMP. The first undergraduate text to directly address compiling and running parallel programs on the new multi-core and cluster architecture, An Introduction to Parallel Programming explains how to design, debug, and evaluate the performance of distributed and shared-memory programs. User-friendly exercises teach students how to compile, run and modify example programs.
Key features:
An Introduction to Parallel Programming Review
This book is a good start for anyone that had done quite a bit of programming and is confident in their abilities to program traditional non-parallel programs and wants to learn parallel programming.Good intro and review of material you will have learned in any computer architecture course in first chapters and reasons why you should learn parallel programming.
In later chapters you learn about task-parallelism vs data-parallelism in learning to rewrite serial program for parallel. The two main types of parallel systems, shared-memory, and distributed-memory are covered and explained.
MPI is used for the distributed-memory programming. Pthreads and OpenMP is used for the Shared-Memory programming examples. Examples like the Trapezoid Rule and sorting algorithms that lend themselves to parallel programming are demonstrated using MPI, Pthreads and OpenMP. There is also the pi approximation example using alternating series that I remember coding in my first programming course and wondering why it was so slow. It's used in the book to warn of the dangers of improperly scoping variables in parallel blocks. MPI does seem to be favored over the other two for some reason that I didn't get though. OpenMP seems to be the easiest to use and works out of the box on Windows, Linux, and Mac OS X with little to no extra work too so I don't know why the author didn't start off with OpenMP first. You'll need to be running Linux to be able to easily follow along with all the examples in the book if you are a hands on person like myself and want to actually compile and run all the example yourself. On Windows,to build MPI programs,you need the Windows HPC Server 2008 SDK installed. You can run the Pthreads examples on the Mac too but on Windows you'll need to install the Unix for Windows. I did get the sample code to work pretty easily using OpenMP. All the examples were text based it was also easy to time them and verify that the parallel version of the programs were faster. It would've been nice to see some graphical examples but I'm guessing OpenCL, CUDA or some other API is better suited for that since I've seen graphical examples using those API's. The final chapters does provide some guidance to which API to choose and their strengths and weaknesses though.
Since the book is intended for self-study it sure doesn't provide much help on setting up your development environment for parallel programming and seems to assume you'll figure it out on your own. Also, no answers were provided for any of the end of chapter problems which would really be helpful for self-study. The book website does provide some excellent slides to go with the book though.
Finally, parallel programming with GPU's seems to be gaining quite a bit of popularity lately but this book seems to totally ignore the topic except to refer you to other books on the subject.
Most of the consumer Reviews tell that the "An Introduction to Parallel Programming" are high quality item. You can read each testimony from consumers to find out cons and pros from An Introduction to Parallel Programming ...

No comments:
Post a Comment