Издательство Morgan Kaufmann, 2001, -163 pp.
For a number of years, I have believed that advances in software, rather than hardware, held the key to making parallel computing more commonplace. In particular, the lack of a broadly supported standard for programming shared-memory multiprocessors has been a chasm both for users and for software vendors interested in porting their software to these multiprocessors. OpenMP represents the first vendor-independent, commercial "bridge" across this chasm.
Such a bridge is critical to achieve portability across different shared-memory multiprocessors. In the parallel programming world, the challenge is to obtain both this functional portability as well as performance portability. By performance portability, I mean the ability to have reasonable expectations about how parallel applications will perform on different multiprocessor architectures. OpenMP makes important strides in enhancing performance portability among shared-memory architectures.
Parallel computing is attractive because it offers users the potential of higher performance. The central problem in parallel computing for nearly 20 years has been to improve the "gain to pain ratio." Improving this ratio, with either hardware or software, means making the gains in performance come at less pain to the programmer! Shared-memory multiprocessing was developed with this goal in mind. It provides a familiar programming model, allows parallel applications to be developed incrementally, and supports fine-grain communication in a very cost effective manner. All of these factors make it easier to achieve high performance on parallel machines. More recently, the development of cache-coherent distributed shared memory has provided a method for scaling shared-memory architectures to larger numbers of processors. In many ways, this development removed the hardware barrier to scalable, shared-memory multiprocessing.
OpenMP represents the important step of providing a software standard for these shared-memory multiprocessors. Our goal now must be to lea how to program these machines effectively (i.e., with a high value for gain/pain). This book will help users accomplish this important goal. By focusing its attention on how to use OpenMP, rather than on defining the standard, the authors have made a significant contribution to the important task of mastering the programming of multiprocessors.
Introduction
Getting Started with OpenMP
Exploiting Loop-Level Parallelism
Beyond Loop-Level Parallelism—Parallel Regions
Syncronization
Performance
A: A Quick Reference to OpenMP
For a number of years, I have believed that advances in software, rather than hardware, held the key to making parallel computing more commonplace. In particular, the lack of a broadly supported standard for programming shared-memory multiprocessors has been a chasm both for users and for software vendors interested in porting their software to these multiprocessors. OpenMP represents the first vendor-independent, commercial "bridge" across this chasm.
Such a bridge is critical to achieve portability across different shared-memory multiprocessors. In the parallel programming world, the challenge is to obtain both this functional portability as well as performance portability. By performance portability, I mean the ability to have reasonable expectations about how parallel applications will perform on different multiprocessor architectures. OpenMP makes important strides in enhancing performance portability among shared-memory architectures.
Parallel computing is attractive because it offers users the potential of higher performance. The central problem in parallel computing for nearly 20 years has been to improve the "gain to pain ratio." Improving this ratio, with either hardware or software, means making the gains in performance come at less pain to the programmer! Shared-memory multiprocessing was developed with this goal in mind. It provides a familiar programming model, allows parallel applications to be developed incrementally, and supports fine-grain communication in a very cost effective manner. All of these factors make it easier to achieve high performance on parallel machines. More recently, the development of cache-coherent distributed shared memory has provided a method for scaling shared-memory architectures to larger numbers of processors. In many ways, this development removed the hardware barrier to scalable, shared-memory multiprocessing.
OpenMP represents the important step of providing a software standard for these shared-memory multiprocessors. Our goal now must be to lea how to program these machines effectively (i.e., with a high value for gain/pain). This book will help users accomplish this important goal. By focusing its attention on how to use OpenMP, rather than on defining the standard, the authors have made a significant contribution to the important task of mastering the programming of multiprocessors.
Introduction
Getting Started with OpenMP
Exploiting Loop-Level Parallelism
Beyond Loop-Level Parallelism—Parallel Regions
Syncronization
Performance
A: A Quick Reference to OpenMP