
2019 / xiv + 453 pages / Softcover / ISBN 9781611975635 / List Price $89.00 / SIAM Member Price $62.30 / Order Code: SE30
Keywords: Parallel computing, OpenMP, MPI, CUDA, OpenCL
Contents
Preface;
Chapter 1: Tools of the Trade;
Part I: Elementary C Programming;
Chapter 2: Structure of a C Program;
Chapter 3: Data Types and Structures;
Chapter 4: Input and Output;
Chapter 5: Flow Control;
Chapter 6: Functions;
Chapter 7: Using Libraries;
Chapter 8: Projects for Serial Programming;
Part II: Parallel Computing Using OpenMP;
Chapter 9: Intro to OpenMP;
Chapter 10: Subdividing for Loops;
Chapter 11: Serial Tasks Inside Parallel Regions;
Chapter 12: Distinct Tasks in Parallel;
Chapter 13: Critical and Atomic Code;
Chapter 14: OpenMP Libraries;
Chapter 15: Projects for OpenMP Programming;
Part III: Distributed Programming and MPI;
Chapter 16: Preliminaries;
Chapter 17: Passing Messages;
Chapter 18: Groups and Communicators;
Chapter 19: Measuring Efficiency and Checkpointing;
Chapter 20: MPI Libraries;
Chapter 21: Projects for Distributed Programming;
Part IV: GPU Programming and CUDA;
Chapter 22: Intro to CUDA;
Chapter 23: Parallel CUDA Using Blocks;
Chapter 24: GPU Memory;
Chapter 25: Streams;
Chapter 26: CUDA Libraries;
Chapter 27: Projects for CUDA Programming;
Part V: GPU Programming and OpenCL;
Chapter 28: Intro to OpenCL;
Chapter 29: Parallel OpenCL Using Workgroups;
Chapter 30: GPU Memory;
Chapter 31: Command Queues;
Chapter 32: OpenCL Libraries;
Chapter 33: Projects for OpenCL Programming;
Part VI: Applications;
Chapter 34: Stochastic Differential Equations;
Chapter 35: Finite Difference Methods;
Chapter 36: Iterative Solution of Elliptic Equations;
Chapter 37: PseudoSpectral Methods;
Bibliography;
Index.
Based on a course developed by the author, Introduction to High Performance Scientific Computing introduces methods for adding parallelism to numerical methods for solving differential equations. It contains exercises and programming projects that facilitate learning as well as examples and discussions based on the C programming language, with additional comments for those already familiar with C++.
The text provides an overview of concepts and algorithmic techniques for modern scientific computing and is divided into six selfcontained parts that can be assembled in any order to create an introductory course using available computer hardware.Part I introduces the C programming language for those not already familiar with programming in a compiled language. Part II describes parallelism on shared memory architectures using OpenMP. Part III details parallelism on computer clusters using MPI for coordinating a computation. Part IV demonstrates the use of graphical programming units (GPUs) to solve problems using the CUDA language for NVIDIA graphics cards. Part V addresses programming on GPUs for nonNVIDIA graphics cards using the OpenCL framework. Finally, Part VI contains a brief discussion of numerical methods and applications, giving the reader an opportunity to test the methods on typical computing problems.
Introduction to High Performance Scientific Computing is intended for advanced undergraduate or beginning graduate students who have limited exposure to programming or parallel programming concepts. Extensive knowledge of numerical methods is not assumed. The material can be adapted to the available computational hardware, from OpenMP on simple laptops or desktops to MPI on computer clusters or CUDA and OpenCL for computers containing NVIDIA or other graphics cards. Experienced programmers unfamiliar with parallel programming will benefit from comparing the various methods to determine the type of parallel programming best suited for their application.
The book can be used for courses on parallel scientific computing, high performance computing, and numerical methods for parallel computing.
About the Author
David L. Chopp is a professor in the Northwestern University Engineering Sciences and Applied Mathematics Department, where he has been teaching since 1996 and has been chair since 2013. He was named a Charles Deering McCormick Professor of Teaching Excellence in 2008. Chopp has developed multiple courses and is the author of nearly 50 refereed publications, including fundamental contributions to the development of the popular level set method for computing moving interfaces. His research interests include numerical methods and mathematical modeling in applications such as microbiology, materials science, fracture mechanics, and neurobiology.
ISBN 9781611975635