This book studies parallel processing methodologies and parallel architectures for High Performance Computing (HPC) according to a structured and integrated approach. All issues in parallel programming and parallel architecture are dealt with in terms of structural models, static and dynamic support to computation and programming models, performance evaluation, capability for building complex and heterogeneous applications and/or enabling platforms. Models and methodologies precede the description of technologies and products (multi-/many-core technology, high-performance networks and interconnect technologies, parallel programming tools). Through this approach the reader will be able to understand and to critically analyze existing/future products and/or to properly adapt/combine them, and to conceive new solutions.
The book is organized into three Parts:
Parallel Processing Models and Methodology: structured parallel computations, interprocess communication, cost models, stream-parallel paradigms, data-parallel paradigms, computation graph structuring and optimization;
Single Instruction Stream Architectures: parallel systems at the firmware level, parallelism in cache memory hierarchies, Instruction Level Parallelism CPUs, Multithreading, SIMD and SIMT/GPU parallelism;
Multiple Instruction Stream Architectures: MIMD parallel architectures, Chip Multiprocessors, memory organization and process mapping, interconnection networks, processor synchronization, memory ordering, cache coherence, cost models, communication run-time support, shared memory vs message passing support, distributed architectures and interconnect technologies.
For reader’s convenience and for the sake of completeness, an ample Appendix in structured computer architecture is included, which renders the book self-contained.
The book can be used by researchers, Computer Science and Engineering professionals and designers working in the field of parallel processing models, parallel programming and HPC application developments, parallel architectures and run-time supports. The book material can be exploited for one or more courses in Master Degree, or PhD, programs of Computer Science and Engineering curricula.The book contains a large number of examples, exercises and small project proposals.