Programming Models for Parallel Computing


Book Description

An overview of the most prominent contemporary parallel processing programming models, written in a unique tutorial style. With the coming of the parallel computing era, computer scientists have turned their attention to designing programming models that are suited for high-performance parallel computing and supercomputing systems. Programming parallel systems is complicated by the fact that multiple processing units are simultaneously computing and moving data. This book offers an overview of some of the most prominent parallel programming models used in high-performance computing and supercomputing systems today. The chapters describe the programming models in a unique tutorial style rather than using the formal approach taken in the research literature. The aim is to cover a wide range of parallel programming models, enabling the reader to understand what each has to offer. The book begins with a description of the Message Passing Interface (MPI), the most common parallel programming model for distributed memory computing. It goes on to cover one-sided communication models, ranging from low-level runtime libraries (GASNet, OpenSHMEM) to high-level programming models (UPC, GA, Chapel); task-oriented programming models (Charm++, ADLB, Scioto, Swift, CnC) that allow users to describe their computation and data units as tasks so that the runtime system can manage computation and data movement as necessary; and parallel programming models intended for on-node parallelism in the context of multicore architecture or attached accelerators (OpenMP, Cilk Plus, TBB, CUDA, OpenCL). The book will be a valuable resource for graduate students, researchers, and any scientist who works with data sets and large computations. Contributors Timothy Armstrong, Michael G. Burke, Ralph Butler, Bradford L. Chamberlain, Sunita Chandrasekaran, Barbara Chapman, Jeff Daily, James Dinan, Deepak Eachempati, Ian T. Foster, William D. Gropp, Paul Hargrove, Wen-mei Hwu, Nikhil Jain, Laxmikant Kale, David Kirk, Kath Knobe, Ariram Krishnamoorthy, Jeffery A. Kuehn, Alexey Kukanov, Charles E. Leiserson, Jonathan Lifflander, Ewing Lusk, Tim Mattson, Bruce Palmer, Steven C. Pieper, Stephen W. Poole, Arch D. Robison, Frank Schlimbach, Rajeev Thakur, Abhinav Vishnu, Justin M. Wozniak, Michael Wilde, Kathy Yelick, Yili Zheng




Scientific Parallel Computing


Book Description

What does Google's management of billions of Web pages have in common with analysis of a genome with billions of nucleotides? Both apply methods that coordinate many processors to accomplish a single task. From mining genomes to the World Wide Web, from modeling financial markets to global weather patterns, parallel computing enables computations that would otherwise be impractical if not impossible with sequential approaches alone. Its fundamental role as an enabler of simulations and data analysis continues an advance in a wide range of application areas. Scientific Parallel Computing is the first textbook to integrate all the fundamentals of parallel computing in a single volume while also providing a basis for a deeper understanding of the subject. Designed for graduate and advanced undergraduate courses in the sciences and in engineering, computer science, and mathematics, it focuses on the three key areas of algorithms, architecture, languages, and their crucial synthesis in performance. The book's computational examples, whose math prerequisites are not beyond the level of advanced calculus, derive from a breadth of topics in scientific and engineering simulation and data analysis. The programming exercises presented early in the book are designed to bring students up to speed quickly, while the book later develops projects challenging enough to guide students toward research questions in the field. The new paradigm of cluster computing is fully addressed. A supporting web site provides access to all the codes and software mentioned in the book, and offers topical information on popular parallel computing systems. Integrates all the fundamentals of parallel computing essential for today's high-performance requirements Ideal for graduate and advanced undergraduate students in the sciences and in engineering, computer science, and mathematics Extensive programming and theoretical exercises enable students to write parallel codes quickly More challenging projects later in the book introduce research questions New paradigm of cluster computing fully addressed Supporting web site provides access to all the codes and software mentioned in the book




Parallel Science and Engineering Applications


Book Description

Developed in the context of science and engineering applications, with each abstraction motivated by and further honed by specific application needs, Charm++ is a production-quality system that runs on almost all parallel computers available. Parallel Science and Engineering Applications: The Charm++ Approach surveys a diverse and scalable collecti




Applied Parallel Computing


Book Description

This book constitutes the refereed proceedings of the 7th International Conference on Applied Parallel Computing, PARA 2004, held in June 2004. The 118 revised full papers presented together with five invited lectures and 15 contributed talks were carefully reviewed and selected for inclusion in the proceedings. The papers are organized in topical sections.




Parallel Algorithms in Computational Science and Engineering


Book Description

This contributed volume highlights two areas of fundamental interest in high-performance computing: core algorithms for important kernels and computationally demanding applications. The first few chapters explore algorithms, numerical techniques, and their parallel formulations for a variety of kernels that arise in applications. The rest of the volume focuses on state-of-the-art applications from diverse domains. By structuring the volume around these two areas, it presents a comprehensive view of the application landscape for high-performance computing, while also enabling readers to develop new applications using the kernels. Readers will learn how to choose the most suitable parallel algorithms for any given application, ensuring that theory and practicality are clearly connected. Applications using these techniques are illustrated in detail, including: Computational materials science and engineering Computational cardiovascular analysis Multiscale analysis of wind turbines and turbomachinery Weather forecasting Machine learning techniques Parallel Algorithms in Computational Science and Engineering will be an ideal reference for applied mathematicians, engineers, computer scientists, and other researchers who utilize high-performance computing in their work.




Parallel Computing: Accelerating Computational Science and Engineering (CSE)


Book Description

Parallel computing has been the enabling technology of high-end machines for many years. Now, it has finally become the ubiquitous key to the efficient use of any kind of multi-processor computer architecture, from smart phones, tablets, embedded systems and cloud computing up to exascale computers. _x000D_ This book presents the proceedings of ParCo2013 – the latest edition of the biennial International Conference on Parallel Computing – held from 10 to 13 September 2013, in Garching, Germany. The conference focused on several key parallel computing areas. Themes included parallel programming models for multi- and manycore CPUs, GPUs, FPGAs and heterogeneous platforms, the performance engineering processes that must be adapted to efficiently use these new and innovative platforms, novel numerical algorithms and approaches to large-scale simulations of problems in science and engineering._x000D_ The conference programme also included twelve mini-symposia (including an industry session and a special PhD Symposium), which comprehensively represented and intensified the discussion of current hot topics in high performance and parallel computing. These special sessions covered large-scale supercomputing, novel challenges arising from parallel architectures (multi-/manycore, heterogeneous platforms, FPGAs), multi-level algorithms as well as multi-scale, multi-physics and multi-dimensional problems._x000D_ It is clear that parallel computing – including the processing of large data sets (“Big Data”) – will remain a persistent driver of research in all fields of innovative computing, which makes this book relevant to all those with an interest in this field.




Parallel Processing for Scientific Computing


Book Description

Parallel processing has been an enabling technology in scientific computing for more than 20 years. This book is the first in-depth discussion of parallel computing in 10 years; it reflects the mix of topics that mathematicians, computer scientists, and computational scientists focus on to make parallel processing effective for scientific problems. Presently, the impact of parallel processing on scientific computing varies greatly across disciplines, but it plays a vital role in most problem domains and is absolutely essential in many of them. Parallel Processing for Scientific Computing is divided into four parts: The first concerns performance modeling, analysis, and optimization; the second focuses on parallel algorithms and software for an array of problems common to many modeling and simulation applications; the third emphasizes tools and environments that can ease and enhance the process of application development; and the fourth provides a sampling of applications that require parallel computing for scaling to solve larger and realistic models that can advance science and engineering.




Neural Network Parallel Computing


Book Description

Neural Network Parallel Computing is the first book available to the professional market on neural network computing for optimization problems. This introductory book is not only for the novice reader, but for experts in a variety of areas including parallel computing, neural network computing, computer science, communications, graph theory, computer aided design for VLSI circuits, molecular biology, management science, and operations research. The goal of the book is to facilitate an understanding as to the uses of neural network models in real-world applications. Neural Network Parallel Computing presents a major breakthrough in science and a variety of engineering fields. The computational power of neural network computing is demonstrated by solving numerous problems such as N-queen, crossbar switch scheduling, four-coloring and k-colorability, graph planarization and channel routing, RNA secondary structure prediction, knight's tour, spare allocation, sorting and searching, and tiling. Neural Network Parallel Computing is an excellent reference for researchers in all areas covered by the book. Furthermore, the text may be used in a senior or graduate level course on the topic.




Highly Parallel Computing


Book Description

This second edition includes new exercises for each chapter, a quantitative treatment of speedup, seismic migration, using a workstation network as a parallel computer, recent changes in technology, more languages, fat trees, wormhole switching, new SIMD hardware, an expanded section on CM-2, new MIMD hardware, using workstation clusters as a MIMD system, and directory based caches. Annotation copyright by Book News, Inc., Portland, OR




Practical Parallel Programming


Book Description

Parallel computers have become widely available in recent years. Many scientists are now using them to investigate the grand challenges of science, such as modeling global climate change, determining the masses of elementary particles from first principles, or sequencing the human genome. However, software for parallel computers has developed far more slowly than the hardware. Many incompatible programming systems exist, and many useful programming techniques are not widely known. Practical Parallel Programming provides scientists and engineers with a detailed, informative, and often critical introduction to parallel programming techniques. Following a review of the fundamentals of parallel computer theory and architecture, it describes four of the most popular parallel programming models in use today—data parallelism, shared variables, message passing, and Linda—and shows how each can be used to solve various scientific and numerical problems. Examples, coded in various dialects of Fortran, are drawn from such domains as the solution of partial differential equations, solution of linear equations, the simulation of cellular automata, studies of rock fracturing, and image processing. Practical Parallel Programming will be particularly helpful for scientists and engineers who use high-performance computers to solve numerical problems and do physical simulations but who have little experience of networking or concurrency. The book can also be used by advanced undergraduate and graduate students in computer science in conjunction with material covering parallel architectures and algorithms in more detail. Computer science students will gain a critical appraisal of the current state of the art in parallel programming. Scientific and Engineering Computation series