This book focuses on the theoretical and practical aspects of parallel
programming systems for today's high performance multi-core processors
and discusses the efficient implementation of key algorithms needed to
implement parallel programming models. Such implementations need to take
into account the specific architectural aspects of the underlying
computer architecture and the features offered by the execution
environment.
This book briefly reviews key concepts of modern computer architecture,
focusing particularly on the performance of parallel codes as well as
the relevant concepts in parallel programming models. The book then
turns towards the fundamental algorithms used to implement the parallel
programming models and discusses how they interact with modern
processors.
While the book will focus on the general mechanisms, we will mostly use
the Intel processor architecture to exemplify the implementation
concepts discussed but will present other processor architectures where
appropriate. All algorithms and concepts are discussed in an easy to
understand way with many illustrative examples, figures, and source code
fragments.
The target audience of the book is students in Computer Science who are
studying compiler construction, parallel programming, or programming
systems. Software developers who have an interest in the core algorithms
used to implement a parallel runtime system, or who need to educate
themselves for projects that require the algorithms and concepts
discussed in this book will also benefit from reading it.
You can find the source code for this book at https:
//github.com/parallel-runtimes/lomp.