Parallel Programming with Co-Arrays describes the basic techniques used to design parallel algorithms for high-performance, scientific computing. It is intended for upper-level undergraduate students and graduate students who need to develop parallel codes with little or no previous introduction to parallel computing. It is also intended as a reference manual for researchers active in the field of scientific computing. All the algorithms in the book are based on partition operators. These operators provide a unifying principle that fits seemingly disparate techniques into an overall framework for algorithm design. The book uses the co-array programming model to illustrate how to write code for concrete examples, but it emphasizes that the important concepts for algorithm design are independent of the programming model. With these concepts in mind, the reader can write algorithms in different programming models based on personal taste and comfort.

chapter 1|2 pages


chapter 2|6 pages

The Co-array Programming Model

chapter 3|10 pages

Partition Operators

chapter 4|8 pages

Reverse Partition Operators

chapter 5|12 pages

Collective Operations

chapter 6|18 pages

Performance Modeling

chapter 7|10 pages

Partitioned Matrix Classes

chapter 8|12 pages

Iterative Solvers for Sparse Matrices

chapter 9|20 pages

Blocked Matrices

chapter 10|12 pages

The Matrix Transpose Operation

chapter 11|8 pages

The Halo Exchange Operation

chapter 12|8 pages

Subpartition Operators

chapter 13|14 pages

Blocked Linear Algebra

chapter 14|18 pages

The Finite Element Method

chapter 15|12 pages

Graph Algorithms

chapter 16|2 pages