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.
Table of Contents
1. The co-array programming model 2. Partition operators 3. Reverse partition operators 4. Collective operations 5. Performance modeling 6. Partitioned matrix classes 7. Iterative solvers for sparse matrices 8. Blocked matrices 9. The matrix-transpose operation 10. The halo-exchange operation 11. Sub-partition operators 12. Blocked linear algebra 13. The finite element method 14. Graph algorithms A. A brief reference manual for the co-array model
Robert Numrich's professional career has been a study of computational methods for high-performance, scientific computing, starting with his PhD. thesis in theoretical chemistry at the University of Minnesota, continuing at Control Data Corporation designing vector algorithms for the Cyber-205, then at Cray Research developing performance models for the Cray-2 and Cray-3 computers. As a member of the core design team for the Cray-T3D and Cray-T3E, he developed the co-array parallel programming model. After Cray, he held a senior research position at the Minnesota Supercomputing Institute, where he continued work on parallel algorithms and developed performance models using the methods of dimensional analysis. He continued this work as Senior Scientist at the High-Performance Computing Center, City University of New York, and currently holds a position as Adjunct Professor of Computer Science at the CUNY Graduate Center. This book is a summary of the important ideas he has learned, developed, and used throughout his career.