Structured Parallel Programming Book

This book fills a need for learning and teaching parallel programming, using an approach based on structured patterns which should make the subject accessible to every software developer. It is appropriate for classroom usage as well as individual study.

We took an approach of teaching parallel programming as programming first, but without requiring a deep prior knowledge of computer architecture. In other words, we approached the problem of teaching parallel programming as we would approach teaching programming traditionally: We start with basic concepts and show common usage modes (also known as patterns). Every parallel programmer should know what a stencil operation is, just as every programmer should know what a stack or a queue is. Knowing what common programming structures have widespread usage affects our thinking for algorithms and coding. These programming patterns are what should be foremost in our minds. Computer architecture is very important, and we dearly love to talk about it, but we believe that these universal patterns are the key to teaching. We do not shy away from computer architecture as a key concern for optimization. We do avoid teaching the architecture as a prerequisite to teaching the programming.

This text offers a method to learn parallel programming for any C or C++ programmer, in a manner that will be highly effective because it uses the most important and successful parallel programming strategies as the teaching mechanism.