Introduction to Parallel Computing 2nd Edition Ananth Grama - Download the full ebook version right now
Introduction to Parallel Computing 2nd Edition Ananth Grama - Download the full ebook version right now
https://ebookultra.com/download/introduction-to-parallel-
computing-2nd-edition-ananth-grama-2/
https://ebookultra.com/download/an-introduction-to-parallel-and-
vector-scientific-computing-1st-edition-ronald-w-shonkwiler/
https://ebookultra.com/download/elements-of-parallel-computing-1st-
edition-eric-aubanel/
https://ebookultra.com/download/introduction-to-grid-computing-with-
globus-2nd-ed-edition-luis-ferreira/
Parallel Computing in Quantum Chemistry 1st Edition Curtis
L. Janssen
https://ebookultra.com/download/parallel-computing-in-quantum-
chemistry-1st-edition-curtis-l-janssen/
https://ebookultra.com/download/an-introduction-to-quantum-
computing-1st-edition-phillip-kaye/
https://ebookultra.com/download/the-druby-book-distributed-and-
parallel-computing-with-ruby-1st-edition-masatoshi-seki/
https://ebookultra.com/download/mobile-intelligence-wiley-series-on-
parallel-and-distributed-computing-1st-edition-laurence-t-yang/
Introduction to Parallel Computing 2nd Edition Ananth
Grama Digital Instant Download
Author(s): Ananth Grama
ISBN(s): 9780849344961, 0849344964
Edition: 2
File Details: PDF, 12.32 MB
Year: 2003
Language: english
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
• Table of Contents
Introduction to Parallel Computing, Second Edition
ISBN: 0-201-64865-2
Pages: 856
Increasingly, parallel processing is being seen as the only cost-effective method for the fast solution of computationally large and
data-intensive problems. The emergence of inexpensive parallel computers such as commodity desktop multiprocessors and clusters of
workstations or PCs has made such parallel methods generally applicable, as have software standards for portable parallel
programming. This sets the stage for substantial growth in parallel software.
Data-intensive applications such as transaction processing and information retrieval, data mining and analysis and multimedia services
have provided a new challenge for the modern generation of parallel platforms. Emerging areas such as computational biology and
nanotechnology have implications for algorithms and systems development, while changes in architectures, programming models and
applications have implications for how parallel platforms are made available to users in the form of grid-based services.
This book takes into account these new developments as well as covering the more traditional problems addressed by parallel
computers.Where possible it employs an architecture-independent view of the underlying platforms and designs algorithms for an
abstract model. Message Passing Interface (MPI), POSIX threads and OpenMP have been selected as programming models and the
evolving application mix of parallel computing is reflected in various examples throughout the book.
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks.
[ Team LiB ]
• Table of Contents
Introduction to Parallel Computing, Second Edition
Copyright
Pearson Education
Preface
Acknowledgments
Chapter 1. Introduction to Parallel Computing
Section 1.1. Motivating Parallelism
Section 1.2. Scope of Parallel Computing
Section 1.3. Organization and Contents of the Text
Section 1.4. Bibliographic Remarks
Problems
Chapter 2. Parallel Programming Platforms
Section 2.1. Implicit Parallelism: Trends in Microprocessor Architectures*
Section 2.2. Limitations of Memory System Performance*
Section 2.3. Dichotomy of Parallel Computing Platforms
Section 2.4. Physical Organization of Parallel Platforms
Section 2.5. Communication Costs in Parallel Machines
Section 2.6. Routing Mechanisms for Interconnection Networks
Section 2.7. Impact of Process-Processor Mapping and Mapping Techniques
Section 2.8. Bibliographic Remarks
Problems
Chapter 3. Principles of Parallel Algorithm Design
Section 3.1. Preliminaries
Section 3.2. Decomposition Techniques
Section 3.3. Characteristics of Tasks and Interactions
Section 3.4. Mapping Techniques for Load Balancing
Section 3.5. Methods for Containing Interaction Overheads
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks.
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks
Copyright
Pearson Education Limited
Edinburgh Gate
Harlow
England
The rights of Ananth Grama, Anshul Gupta, George Karypis and Vipin Kumar to be identified as authors of this work have been asserted
by them in accordance with the Copyright, Designs and Patents Act 1988.
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any
means, electronic, mechanical, photocopying, recording or otherwise, without either the prior written permission of the publisher or a
licence permitting restricted copying in the United Kingdom issued by the Copyright Licensing Agency Ltd, 90 Tottenham Court Road,
London W1T 4LP.
The programs in this book have been included for their instructional value. They have been tested with care but are not guaranteed for
any particular purpose. The publisher does not offer any warranties or representations nor does it accept any liabilities with respect to
the programs.
All trademarks used herein are the property of their respective owners. The use of any trademark in this text does not vest in the author
or publisher any trademark ownership rights in such trademarks, nor does the use of such trademarks imply any affiliation with or
endorsement of this book by such owners.
A catalogue record for this book is available from the British Library
A catalog record for this book is available from the Library of Congress
10 9 8 7 6 5 4 3 2 1
07 06 05 04 03
Dedication
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
Pearson Education
We work with leading authors to develop the strongest educational materials in computing, bringing cutting-edge thinking and best
learning practice to a global market.
Under a range of well-known imprints, including Addison-Wesley, we craft high-quality print and electronic publications which help
readers to understand and apply their content, whether studying or at work.
To find out more about the complete range of our publishing, please visit us on the World Wide Web at:
www.pearsoneduc.com
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
Preface
Since the 1994 release of the text "Introduction to Parallel Computing: Design and Analysis of Algorithms" by the same authors, the field
of parallel computing has undergone significant changes. Whereas tightly coupled scalable message-passing platforms were the norm a
decade ago, a significant portion of the current generation of platforms consists of inexpensive clusters of workstations, and
multiprocessor workstations and servers. Programming models for these platforms have also evolved over this time. Whereas most
machines a decade back relied on custom APIs for messaging and loop-based parallelism, current models standardize these APIs
across platforms. Message passing libraries such as PVM and MPI, thread libraries such as POSIX threads, and directive based models
such as OpenMP are widely accepted as standards, and have been ported to a variety of platforms.
With respect to applications, fluid dynamics, structural mechanics, and signal processing formed dominant applications a decade back.
These applications continue to challenge the current generation of parallel platforms. However, a variety of new applications have also
become important. These include data-intensive applications such as transaction processing and information retrieval, data mining and
analysis, and multimedia services. Applications in emerging areas of computational biology and nanotechnology pose tremendous
challenges for algorithms and systems development. Changes in architectures, programming models, and applications are also being
accompanied by changes in how parallel platforms are made available to the users in the form of grid-based services.
This evolution has a profound impact on the process of design, analysis, and implementation of parallel algorithms. Whereas the
emphasis of parallel algorithm design a decade back was on precise mapping of tasks to specific topologies such as meshes and
hypercubes, current emphasis is on programmability and portability, both from points of view of algorithm design and implementation. To
this effect, where possible, this book employs an architecture independent view of the underlying platforms and designs algorithms for an
abstract model. With respect to programming models, Message Passing Interface (MPI), POSIX threads, and OpenMP have been
selected. The evolving application mix for parallel computing is also reflected in various examples in the book.
This book forms the basis for a single concentrated course on parallel computing or a two-part sequence. Some suggestions for such a
two-part sequence are:
1. Introduction to Parallel Computing: Chapters 1–6. This course would provide the basics of algorithm design and parallel
programming.
2. Design and Analysis of Parallel Algorithms: Chapters 2 and 3 followed by Chapters8–12. This course would provide an
in-depth coverage of design and analysis of various parallel algorithms.
The material in this book has been tested in Parallel Algorithms and Parallel Computing courses at the University of Minnesota and
Purdue University. These courses are taken primarily by graduate students and senior-level undergraduate students in Computer
Science. In addition, related courses in Scientific Computation, for which this material has also been tested, are taken by graduate
students in science and engineering, who are interested in solving computationally intensive problems.
Most chapters of the book include (i) examples and illustrations; (ii) problems that supplement the text and test students' understanding
of the material; and (iii) bibliographic remarks to aid researchers and students interested in learning more about related and advanced
topics. The comprehensive subject index helps the reader locate terms they might be interested in. The page number on which a term is
defined is highlighted in boldface in the index. Furthermore, the term itself appears in bold italics where it is defined. The sections that
deal with relatively complex material are preceded by a '*'. An instructors' manual containing slides of the figures and solutions to
selected problems is also available from the publisher (http://www.booksites.net/kumar).
As with our previous book, we view this book as a continually evolving resource. We thank all the readers who have kindly shared
critiques, opinions, problems, code, and other information relating to our first book. It is our sincere hope that we can continue this
interaction centered around this new book. We encourage readers to address communication relating to this book to
book-vk@cs.umn.edu. All relevant reader input will be added to the information archived at the sitehttp://www.cs.umn.edu/~parbook with
due credit to (and permission of) the sender(s). An on-line errata of the book will also be maintained at the site. We believe that in a
highly dynamic field such as ours, a lot is to be gained from a healthy exchange of ideas and material in this manner.
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
Acknowledgments
We would like to begin by acknowledging our spouses, Joanna, Rinku, Krista, and Renu to whom this book is dedicated. Without their
sacrifices this project would not have been seen completion. We also thank our parents, and family members, Akash, Avi, Chethan,
Eleni, Larry, Mary-Jo, Naina, Petros, Samir, Subhasish, Varun, Vibhav, and Vipasha for their affectionate support and encouragement
throughout this project.
Our respective institutions, Computer Sciences and Computing Research Institute (CRI) at Purdue University, Department of Computer
Science & Engineering, the Army High Performance Computing Research Center (AHPCRC), and the Digital Technology Center (DTC)
at the University of Minnesota, and the IBM T. J. Watson Research Center at Yorktown Heights, provided computing resources and
active and nurturing environments for the completion of this project.
This project evolved from our first book. We would therefore like to acknowledge all of the people who helped us with both editions. Many
people contributed to this project in different ways. We would like to thank Ahmed Sameh for his constant encouragement and support,
and Dan Challou, Michael Heath, Dinesh Mehta, Tom Nurkkala, Paul Saylor, and Shang-Hua Teng for the valuable input they provided
to the various versions of the book. We thank the students of the introduction to parallel computing classes at the University of
Minnesota and Purdue university for identifying and working through the errors in the early drafts of the book. In particular, we
acknowledge the patience and help of Jim Diehl and Rasit Eskicioglu, who worked through several early drafts of the manuscript to
identify numerous errors. Ramesh Agarwal, David Bailey, Rupak Biswas, Jim Bottum, Thomas Downar, Rudolf Eigenmann, Sonia
Fahmy, Greg Frederickson, John Gunnels, Fred Gustavson, Susanne Hambrusch, Bruce Hendrickson, Christoph Hoffmann, Kai Hwang,
Ioannis Ioannidis, Chandrika Kamath, David Keyes, Mehmet Koyuturk, Piyush Mehrotra, Zhiyuan Li, Jens Palsberg, Voicu Popescu, Alex
Pothen, Viktor Prasanna, Sanjay Ranka, Naren Ramakrishnan, Elisha Sacks, Vineet Singh, Sartaj Sahni, Vivek Sarin, Wojciech
Szpankowski, Srikanth Thirumalai, Jan Vitek, and David Yau have been great technical resources. It was a pleasure working with the
cooperative and helpful staff at Pearson Education. In particular, we would like to thank Keith Mansfield and Mary Lince for their
professional handling of the project.
The Army Research Laboratory, ARO, DOE, NASA, and NSF provided parallel computing research support for Ananth Grama, George
Karypis, and Vipin Kumar. In particular, Kamal Abdali, Michael Coyle, Jagdish Chandra, Frederica Darema, Stephen Davis, Wm
Randolph Franklin, Richard Hirsch, Charles Koelbel, Raju Namburu, N. Radhakrishnan, John Van Rosendale, Subhash Saini, and
Xiaodong Zhang have been supportive of our research programs in the area of parallel computing. Andrew Conn, Brenda Dietrich, John
Forrest, David Jensen, and Bill Pulleyblank at IBM supported the work of Anshul Gupta over the years.
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
The role of concurrency in accelerating computing elements has been recognized for several decades. However, their role in providing
multiplicity of datapaths, increased access to storage elements (both memory and disk), scalable performance, and lower costs is
reflected in the wide variety of applications of parallel computing. Desktop machines, engineering workstations, and compute servers
with two, four, or even eight processors connected together are becoming common platforms for design applications. Large scale
applications in science and engineering rely on larger configurations of parallel computers, often comprising hundreds of processors.
Data intensive platforms such as database or web servers and applications such as transaction processing and data mining often use
clusters of workstations that provide high aggregate disk bandwidth. Applications in graphics and visualization use multiple rendering
pipes and processing elements to compute and render realistic environments with millions of polygons in real time. Applications requiring
high availability rely on parallel and distributed platforms for redundancy. It is therefore extremely important, from the point of view of
cost, performance, and application requirements, to understand the principles, tools, and techniques for programming the wide variety of
parallel platforms currently available.
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks
[ Team LiB ]
Development of parallel software has traditionally been thought of as time and effort intensive. This can be largely attributed to the
inherent complexity of specifying and coordinating concurrent tasks, a lack of portable algorithms, standardized environments, and
software development toolkits. When viewed in the context of the brisk rate of development of microprocessors, one is tempted to
question the need for devoting significant effort towards exploiting parallelism as a means of accelerating applications. After all, if it takes
two years to develop a parallel application, during which time the underlying hardware and/or software platform has become obsolete,
the development effort is clearly wasted. However, there are some unmistakable trends in hardware design, which indicate that
uniprocessor (or implicitly parallel) architectures may not be able to sustain the rate of realizable performance increments in the future.
This is a result of lack of implicit parallelism as well as other bottlenecks such as the datapath and the memory. At the same time,
standardized hardware interfaces have reduced the turnaround time from the development of a microprocessor to a parallel machine
based on the microprocessor. Furthermore, considerable progress has been made in standardization of programming environments to
ensure a longer life-cycle for parallel applications. All of these present compelling arguments in favor of parallel computing platforms.
"The complexity for minimum component costs has increased at a rate of roughly a factor of two per year.
Certainly over the short term this rate can be expected to continue, if not to increase. Over the longer term, the
rate of increase is a bit more uncertain, although there is no reason to believe it will not remain nearly constant for
at least 10 years. That means by 1975, the number of components per integrated circuit for minimum cost will be
65,000."
His reasoning was based on an empirical log-linear relationship between device complexity and time, observed over three data points.
He used this to justify that by 1975, devices with as many as 65,000 components would become feasible on a single silicon chip
occupying an area of only about one-fourth of a square inch. This projection turned out to be accurate with the fabrication of a 16K CCD
memory with about 65,000 components in 1975. In a subsequent paper in 1975, Moore attributed the log-linear relationship to
exponential behavior of die sizes, finer minimum dimensions, and "circuit and device cleverness". He went on to state that:
"There is no room left to squeeze anything out by being clever. Going forward from here we have to depend on
the two size factors - bigger dies and finer dimensions."
He revised his rate of circuit complexity doubling to 18 months and projected from 1975 onwards at this reduced rate. This curve came to
be known as "Moore's Law". Formally, Moore's Law states that circuit complexity doubles every eighteen months. This empirical
relationship has been amazingly resilient over the years both for microprocessors as well as for DRAMs. By relating component density
and increases in die-size to the computing power of a device, Moore's law has been extrapolated to state that the amount of computing
power available at a given cost doubles approximately every 18 months.
The limits of Moore's law have been the subject of extensive debate in the past few years. Staying clear of this debate, the issue of
translating transistors into useful OPS (operations per second) is the critical one. It is possible to fabricate devices with very large
transistor counts. How we use these transistors to achieve increasing rates of computation is the key architectural challenge. A logical
recourse to this is to rely on parallelism – both implicit and explicit. We will briefly discuss implicit parallelism in Section 2.1 and devote
the rest of this book to exploiting explicit parallelism.
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
The overall speed of computation is determined not just by the speed of the processor, but also by the ability of the memory system to
feed data to it. While clock rates of high-end processors have increased at roughly 40% per year over the past decade, DRAM access
times have only improved at the rate of roughly 10% per year over this interval. Coupled with increases in instructions executed per clock
cycle, this gap between processor speed and memory presents a tremendous performance bottleneck. This growing mismatch between
processor speed and DRAM latency is typically bridged by a hierarchy of successively faster memory devices called caches that rely on
locality of data reference to deliver higher memory system performance. In addition to the latency, the net effective bandwidth between
DRAM and the processor poses other problems for sustained computation rates.
The overall performance of the memory system is determined by the fraction of the total memory requests that can be satisfied from the
cache. Memory system performance is addressed in greater detail in Section 2.2. Parallel platforms typically yield better memory system
performance because they provide (i) larger aggregate caches, and (ii) higher aggregate bandwidth to the memory system (both typically
linear in the number of processors). Furthermore, the principles that are at the heart of parallel algorithms, namely locality of data
reference, also lend themselves to cache-friendly serial algorithms. This argument can be extended to disks where parallel platforms can
be used to achieve high aggregate bandwidth to secondary storage. Here, parallel algorithms yield insights into the development of
out-of-core computations. Indeed, some of the fastest growing application areas of parallel computing in data servers (database servers,
web servers) rely not so much on their high aggregate computation rates but rather on the ability to pump data out at a faster rate.
As the networking infrastructure evolves, the vision of using the Internet as one large heterogeneous parallel/distributed computing
environment has begun to take shape. Many applications lend themselves naturally to such computing paradigms. Some of the most
impressive applications of massively parallel computing have been in the context of wide-area distributed platforms. The SETI (Search
for Extra Terrestrial Intelligence) project utilizes the power of a large number of home computers to analyze electromagnetic signals from
outer space. Other such efforts have attempted to factor extremely large integers and to solve large discrete optimization problems.
In many applications there are constraints on the location of data and/or resources across the Internet. An example of such an
application is mining of large commercial datasets distributed over a relatively low bandwidth network. In such applications, even if the
computing power is available to accomplish the required task without resorting to parallel computing, it is infeasible to collect the data at
a central location. In these cases, the motivation for parallelism comes not just from the need for computing resources but also from the
infeasibility or undesirability of alternate (centralized) approaches.
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks
Parallel computing has made a tremendous impact on a variety of areas ranging from computational simulations for scientific and
engineering applications to commercial applications in data mining and transaction processing. The cost benefits of parallelism coupled
with the performance requirements of applications present compelling arguments in favor of parallel computing. We present a small
sample of the diverse applications of parallel computing.
Parallel computing has traditionally been employed with great success in the design of airfoils (optimizing lift, drag, stability), internal
combustion engines (optimizing charge distribution, burn), high-speed circuits (layouts for delays and capacitive and inductive effects),
and structures (optimizing structural integrity, design parameters, cost, etc.), among others. More recently, design of
microelectromechanical and nanoelectromechanical systems (MEMS and NEMS) has attracted significant attention. While most
applications in engineering and design pose problems of multiple spatial and temporal scales and coupled physical phenomena, in the
case of MEMS/NEMS design these problems are particularly acute. Here, we often deal with a mix of quantum phenomena, molecular
dynamics, and stochastic and continuum models with physical processes such as conduction, convection, radiation, and structural
mechanics, all in a single system. This presents formidable challenges for geometric modeling, mathematical modeling, and algorithm
development, all in the context of parallel computers.
Other applications in engineering and design focus on optimization of a variety of processes. Parallel computers have been used to
solve a variety of discrete and continuous optimization problems. Algorithms such as Simplex, Interior Point Method for linear
optimization and Branch-and-bound, and Genetic programming for discrete optimization have been efficiently parallelized and are
frequently used.
The past few years have seen a revolution in high performance scientific computing applications. The sequencing of the human genome
by the International Human Genome Sequencing Consortium and Celera, Inc. has opened exciting new frontiers in bioinformatics.
Functional and structural characterization of genes and proteins hold the promise of understanding and fundamentally influencing
biological processes. Analyzing biological sequences with a view to developing new drugs and cures for diseases and medical
conditions requires innovative algorithms as well as large-scale computational power. Indeed, some of the newest parallel computing
technologies are targeted specifically towards applications in bioinformatics.
Advances in computational physics and chemistry have focused on understanding processes ranging in scale from quantum phenomena
to macromolecular structures. These have resulted in design of new materials, understanding of chemical pathways, and more efficient
processes. Applications in astrophysics have explored the evolution of galaxies, thermonuclear processes, and the analysis of extremely
large datasets from telescopes. Weather modeling, mineral prospecting, flood prediction, etc., rely heavily on parallel computers and
have very significant impact on day-to-day life.
Bioinformatics and astrophysics also present some of the most challenging problems with respect to analyzing extremely large datasets.
Protein and gene databases (such as PDB, SwissProt, and ENTREZ and NDB) along with Sky Survey datasets (such as the Sloan
Digital Sky Surveys) represent some of the largest scientific datasets. Effectively analyzing these datasets requires tremendous
computational power and holds the key to significant scientific discoveries.
With the widespread use of the web and associated static and dynamic content, there is increasing emphasis on cost-effective servers
capable of providing scalable performance. Parallel platforms ranging from multiprocessors to linux clusters are frequently used as web
and database servers. For instance, on heavy volume days, large brokerage houses on Wall Street handle hundreds of thousands of
simultaneous user sessions and millions of orders. Platforms such as IBMs SP supercomputers and Sun Ultra HPC servers power these
business-critical sites. While not highly visible, some of the largest supercomputing networks are housed on Wall Street.
The availability of large-scale transaction data has also sparked considerable interest in data mining and analysis for optimizing business
and marketing decisions. The sheer volume and geographically distributed nature of this data require the use of effective parallel
algorithms for such problems as association rule mining, clustering, classification, and time-series analysis.
As computer systems become more pervasive and computation spreads over the network, parallel processing issues become engrained
into a variety of applications. In computer security, intrusion detection is an outstanding challenge. In the case of network intrusion
detection, data is collected at distributed sites and must be analyzed rapidly for signaling intrusion. The infeasibility of collecting this data
at a central location for analysis requires effective parallel and distributed algorithms. In the area of cryptography, some of the most
spectacular applications of Internet-based parallel computing have focused on factoring extremely large integers.
Embedded systems increasingly rely on distributed control algorithms for accomplishing a variety of tasks. A modern automobile consists
of tens of processors communicating to perform complex tasks for optimizing handling and performance. In such systems, traditional
parallel and distributed algorithms for leader selection, maximal independent set, etc., are frequently used.
While parallel computing has traditionally confined itself to platforms with well behaved compute and network elements in which faults
and errors do not play a significant role, there are valuable lessons that extend to computations on ad-hoc, mobile, or faulty
environments.
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks
[ Team LiB ]
This book provides a comprehensive and self-contained exposition of problem solving using parallel computers. Algorithms and metrics
focus on practical and portable models of parallel machines. Principles of algorithm design focus on desirable attributes of parallel
algorithms and techniques for achieving these in the contest of a large class of applications and architectures. Programming techniques
cover standard paradigms such as MPI and POSIX threads that are available across a range of parallel platforms.
Chapters in this book can be grouped into four main parts as illustrated in Figure 1.1. These parts are as follows:
Fundamentals This section spans Chapters2 through 4 of the book. Chapter 2, Parallel Programming Platforms, discusses the physical
organization of parallel platforms. It establishes cost metrics that can be used for algorithm design. The objective of this chapter is not to
provide an exhaustive treatment of parallel architectures; rather, it aims to provide sufficient detail required to use these machines
efficiently. Chapter 3, Principles of Parallel Algorithm Design, addresses key factors that contribute to efficient parallel algorithms and
presents a suite of techniques that can be applied across a wide range of applications. Chapter 4, Basic Communication Operations,
presents a core set of operations that are used throughout the book for facilitating efficient data transfer in parallel algorithms. Finally,
Chapter 5, Analytical Modeling of Parallel Programs, deals with metrics for quantifying the performance of a parallel algorithm.
Parallel Programming This section includes Chapters6 and 7 of the book. Chapter 6, Programming Using the Message-Passing
Paradigm, focuses on the Message Passing Interface (MPI) for programming message passing platforms, including clusters. Chapter 7,
Programming Shared Address Space Platforms, deals with programming paradigms such as threads and directive based approaches.
Using paradigms such as POSIX threads and OpenMP, it describes various features necessary for programming shared-address-space
parallel machines. Both of these chapters illustrate various programming concepts using a variety of examples of parallel programs.
Non-numerical Algorithms Chapters 9–12 present parallel non-numerical algorithms. Chapter 9 addresses sorting algorithms such as
bitonic sort, bubble sort and its variants, quicksort, sample sort, and shellsort. Chapter 10 describes algorithms for various graph theory
problems such as minimum spanning tree, shortest paths, and connected components. Algorithms for sparse graphs are also discussed.
Chapter 11 addresses search-based methods such as branch-and-bound and heuristic search for combinatorial problems.Chapter 12
classifies and presents parallel formulations for a variety of dynamic programming algorithms.
Numerical Algorithms Chapters 8 and 13 present parallel numerical algorithms. Chapter 8 covers basic operations on dense matrices
such as matrix multiplication, matrix-vector multiplication, and Gaussian elimination. This chapter is included before non-numerical
algorithms, as the techniques for partitioning and assigning matrices to processors are common to many non-numerical algorithms.
Furthermore, matrix-vector and matrix-matrix multiplication algorithms form the kernels of many graph algorithms. Chapter 13 describes
algorithms for computing Fast Fourier Transforms.
[ Team LiB ]
This document was created by an unregistered ChmMagic, please go to http://www.bisenter.com to register it. Thanks .
[ Team LiB ]
Many books discuss aspects of parallel processing at varying levels of detail. Hardware aspects of parallel computers have been
discussed extensively in several textbooks and monographs [CSG98, LW95, HX98, AG94, Fly95, AG94, Sto93, DeC89, HB84, RF89,
Sie85, Tab90, Tab91, WF84, Woo86]. A number of texts discuss paradigms and languages for programming parallel computersLB98, [
+
Pac98, GLS99, GSNL98, CDK 00, WA98, And91, BA82, Bab88, Ble90, Con89, CT92, Les93, Per87, Wal91]. Akl [Akl97], Cole [Col89],
Gibbons and Rytter [GR90], Foster [Fos95], Leighton [Lei92], Miller and Stout [MS96], and Quinn [Qui94] discuss various aspects of
parallel algorithm design and analysis. Buyya (Editor) [Buy99] and Pfister [Pfi98] discuss various aspects of parallel computing using
clusters. Jaja [Jaj92] covers parallel algorithms for the PRAM model of computation. Hillis H
[ il85, HS86] and Hatcher and Quinn H[ Q91]
discuss data-parallel programming. Agha [Agh86] discusses a model of concurrent computation based onactors. Sharp [Sha85]
addresses data-flow computing. Some books provide a general overview of topics in parallel computing [CL93, Fou94, Zom96, JGD87,
LER92, Mol93, Qui94]. Many books address parallel processing applications in numerical analysis and scientific computingDDSV99,
[
+
FJDS96, GO93, Car89]. Fox et al. [FJL 88] and Angus et al. [AFKW90] provide an application-oriented view of algorithm design for
problems in scientific computing. Bertsekas and Tsitsiklis [BT97] discuss parallel algorithms, with emphasis on numerical applications.
Akl and Lyons [AL93] discuss parallel algorithms in computational geometry. Ranka and Sahni RS90b] [ and Dew, Earnshaw, and
Heywood [DEH89] address parallel algorithms for use in computer vision. Green Gre91] [ covers parallel algorithms for graphics
applications. Many books address the use of parallel processing in artificial intelligence applications [Gup87, HD89b, KGK90, KKKS94,
Kow88, RZ89].
A useful collection of reviews, bibliographies and indexes has been put together by the Association for Computing Machinery [ACM91].
Messina and Murli [MM91] present a collection of papers on various aspects of the application and potential of parallel computing. The
scope of parallel processing and various aspects of US government support have also been discussed in National Science Foundation
reports [NSF91, GOV99].
A number of conferences address various aspects of parallel computing. A few important ones are the Supercomputing Conference,
ACM Symposium on Parallel Algorithms and Architectures, the International Conference on Parallel Processing, the International
Parallel and Distributed Processing Symposium, Parallel Computing, and the SIAM Conference on Parallel Processing. Important
journals in parallel processing include IEEE Transactions on Parallel and Distributed Systems, International Journal of Parallel
Programming, Journal of Parallel and Distributed Computing, Parallel Computing, IEEE Concurrency, and Parallel Processing Letters.
These proceedings and journals provide a rich source of information on the state of the art in parallel processing.
[ Team LiB ]
Other documents randomly have
different content
Power then, though joined with reason, and under its direction,
cannot be expected to prevail over opposite power, though merely
brutal, unless the one bears some proportion to the other. Again: put
the imaginary case, that rational and irrational creatures were of like
external shape and manner: it is certain, before there were
opportunities for the first to distinguish each other, to separate from
their adversaries, and to form a union among themselves, they
might be upon a level, or in several respects upon great
disadvantage; though united they might be vastly superior: since
union is of such efficacy, that ten men united, might be able to
accomplish, what ten thousand of the same natural strength and
understanding wholly ununited, could not. In this case, brute force
might more than maintain its ground against reason, for want of
union among the rational creatures. Or suppose a number of men to
land upon an island inhabited only by wild beasts; men who, by the
regulations of civil government, the inventions of art, and the
experience of some years, could they be preserved so long, would
be really sufficient to subdue the wild beasts, and to preserve
themselves in security from them: yet a conjuncture of accidents
might give such advantage to the irrational animals as they might at
once overpower, and even extirpate, the rational ones. Length of
time then, proper scope, and opportunities for reason to exert itself,
may be absolutely necessary to its prevailing over brute force.
Further: there are many instances of brutes succeeding in
attempts, which they could not have undertaken, had not their
irrational nature rendered them incapable of foreseeing the danger
of such attempt, or the fury of passion hindered their attending to it:
and there are instances of reason and real prudence preventing
men’s undertaking what, it has appeared afterwards, they might
have succeeded in by a lucky rashness. In certain conjunctures,
ignorance and folly, weakness and discord, may have their
advantages. So that rational animals have not necessarily the
superiority over irrational ones; but, how improbable soever it may
be, it is evidently possible, that in some globes the latter may be
superior. And were the former wholly at variance and disunited, by
false self-interest and envy, by treachery and injustice, and
consequent rage and malice against each other, whilst the latter
were firmly united among themselves by instinct, this might greatly
contribute to the introducing such an inverted order of things. For
every one would consider it as inverted: since reason has, in the
nature of it, a tendency to prevail over brute force; notwithstanding
the possibility it may not prevail, and the necessity, which there is, of
many concurring circumstances to render it prevalent.
Now I say, virtue in a society has a like tendency to procure
superiority and additional power: whether this power be considered
as the means of security from opposite power, or of obtaining other
advantages. It has this tendency, by rendering public good, an
object and end, to every member of the society; by putting every
one upon consideration and diligence, recollection and self-
government, both in order to see what is the most effectual method,
and also in order to perform their proper part, for obtaining and
preserving it; by uniting a society within itself, and so increasing its
strength; and, which is particularly to be mentioned, uniting it by
means of veracity and justice. For as these last are principal bonds
of union, so benevolence or public spirit, undirected, unrestrained by
them, is, nobody knows what.
And suppose the invisible world, and the invisible dispensations of
Providence, to be, in any sort, analogous to what appears: or that
both together make up one uniform scheme, the two parts of which,
the part which we see, and that which is beyond our observation,
are analogous to each other: then, there must be a like natural
tendency in the derived power, throughout the universe, under the
direction of virtue, to prevail in general over that which is not under
its direction; as there is in reason, derived reason in the universe, to
prevail over brute force.
But then, in order to the prevalence of virtue, or that it may
actually produce, what it has a tendency to produce; the like
concurrences are necessary, as are, to the prevalence of reason.
There must be some proportion, between the natural power or force
which is, and that which is not, under the direction of virtue: there
must be sufficient length of time; for the complete success of virtue,
as of reason, cannot, from the nature of the thing, be otherwise
than gradual: there must be, as one may speak, a fair field of trial, a
stage large and extensive enough, proper occasions and
opportunities, for the virtuous to join together, to exert themselves
against lawless force, and to reap the fruit of their united labors.
Now indeed it is to be hoped, that the disproportion between the
good and bad, even here on earth, is not so great, but that the
former have natural power sufficient to their prevailing to a
considerable degree, if circumstances would permit this power to be
united. For, much less, very much less, power under the direction of
virtue, would prevail over much greater not under the direction of it.
[77] However, good men over the face of the earth cannot unite;
because, (among other reasons,) they cannot be sufficiently
ascertained of each other’s characters. And the known course of
human things, the scene we are now passing through, particularly
the shortness of life, denies to virtue its full scope in several other
respects.
The natural tendency which we have been considering, though
real, is hindered from being carried into effect in the present state:
but these hinderances may be removed in a future one. Virtue, to
borrow the Christian allusion, is militant here; and various untoward
accidents contribute to its being often overborne: but it may combat
with greater advantage hereafter, and prevail completely, and enjoy
its consequent rewards, in some future states. Neglected as it is,
perhaps unknown, perhaps despised and oppressed here; there
maybe scenes in eternity, lasting enough, and in every other way
adapted, to afford it a sufficient sphere of action; and a sufficient
sphere for the natural consequences of it to follow in fact. If the soul
be naturally immortal, and this state be a progress towards a future
one, as childhood is towards mature age, good men may naturally
unite, not only among themselves, but also with other orders of
virtuous creatures, in that future state. For virtue, from the very
nature of it, is a principle and bond of union, in some degree, among
all who are endued with it, and known to each other; so as that by
it, a good man cannot but recommend himself to the favor and
protection of all virtuous beings, throughout the whole universe,
who can be acquainted with his character, and can any way
interpose in his behalf in any part of his duration.
One might add, that suppose all this advantageous tendency of
virtue to become effect, among one or more orders of creatures, in
any distant scenes and periods, and to be seen by any orders of
vicious creatures, throughout the universal kingdom of God; this
happy effect of virtue would have a tendency, by way of example,
and possibly in other ways, to amend those of them who are capable
of amendment, and of being recovered to a just sense of virtue. If
our notions of the plan of Providence were enlarged in any sort
proportionable to what late discoveries have enlarged our views with
respect to the material world, representations of this kind would not
appear absurd or extravagant. They are not to be taken as intended
for a literal delineation of what is in fact the particular scheme of the
universe, which cannot be known without revelation: for
suppositions are not to be looked on as true, because not incredible:
but they are mentioned to show, that our finding virtue to be
hindered from procuring to itself such superiority and advantages, is
no objection against its having, in the essential nature of the thing, a
tendency to procure them. And the suppositions now mentioned do
plainly show this: for they show, that these hinderances are so far
from being necessary, that we ourselves can easily conceive, how
they may be removed in future states, and full scope be granted to
virtue. And all these advantageous tendencies of it are to be
considered as declarations of God in its favor. This however is taking
a pretty large compass: though it is certain, that, as the material
world appears to be, in a manner, boundless and immense, there
must be some scheme of Providence vast in proportion to it.
But let us return to the earth our habitation; and we shall see this
happy tendency of virtue, by imagining an instance not so vast and
remote: by supposing a kingdom or society of men upon it, perfectly
virtuous, for a succession of many ages; to which, if you please, may
be given a situation advantageous for universal monarchy. In such a
state, there would be no such thing as faction: but men of the
greatest capacity would of course, all along, have the chief direction
of affairs willingly yielded to them; and they would share it among
themselves without envy. Each of these would have the part
assigned him, to which his genius was peculiarly adapted; and
others, who had not any distinguished genius, would be safe, and
think themselves very happy, by being under the protection and
guidance of those who had. Public determinations would really be
the result of the united wisdom of the community: and they would
faithfully be executed, by the united strength of it. Some would
contribute in a higher way, but all in some way, to the public
prosperity: and in it, each would enjoy the fruits of his own virtue.
And as injustice, whether by fraud or force, would be unknown
among themselves, so they would be sufficiently secured from it in
their neighbors. For cunning and false self-interest, confederacies in
injustice, ever slight, and accompanied with faction and intestine
treachery; these on one hand would be found mere childish folly and
weakness, when set in opposition against wisdom, public spirit,
union inviolable, and fidelity on the other: allowing both a sufficient
length of years to try their force. Add the general influence, which
such a kingdom would have over the face of the earth, by way of
example particularly, and the reverence which would be paid it. It
would plainly be superior to all others, and the world must gradually
come under its empire; not by means of lawless violence; but partly
by what must be allowed to be just conquest; and partly by other
kingdoms submitting themselves voluntarily to it, throughout a
course of ages, and claiming its protection, one after another, in
successive exigencies. The head of it would be a universal monarch,
in another sense than any mortal has yet been; and the Eastern
style would be literally applicable to him, that all people, nations,
and languages should serve him. And though indeed our knowledge
of human nature, and the whole history of mankind, show the
impossibility, without some miraculous interposition, that a number
of men, here on earth, should unite in one society or government, in
the fear of God and universal practice of virtue; and that such a
government should continue so united for a succession of ages: yet
admitting or supposing this, the effect would be as now drawn out.
Thus for instance, the wonderful power and prosperity promised to
the Jewish nation in the Scripture, would be, in a great measure, the
consequence of what is predicted of them; that the people should be
all righteous, and inherit the land forever;[78] were we to understand
the latter phrase of a long continuance only, sufficient to give things
time to work. The predictions of this kind, for there are many of
them, cannot come to pass, in the present known course of nature;
but suppose them come to pass, and then, the dominion and
preëminence promised must naturally follow, to a very considerable
degree.
Consider now the general system of religion; that the government
of the world is uniform, and one, and moral; that virtue and right
shall finally have the advantage, and prevail over fraud and lawless
force, over the deceits as well as the violence of wickedness, under
the conduct of one supreme governor: and from the observations
above made, it will appear that God has, by our reason, given us to
see a peculiar connection in the several parts of this scheme, and a
tendency towards the completion of it, arising out of the very nature
of virtue: which tendency is to be considered as something moral in
the essential constitution of things. If any one should think all this to
be of little importance, I desire him to consider, what he would think,
if vice had, essentially and in its nature, these advantageous
tendencies; or if virtue had essentially the contrary ones.
It may be objected, that notwithstanding all these natural effects
and natural tendencies of virtue, yet things may be now going on
throughout the universe, and may go on hereafter, in the same
mixed way as here at present upon earth: virtue sometimes
prosperous, sometimes depressed; vice sometimes punished,
sometimes successful.
The answer to which is, that it is not the purpose of this chapter,
nor of this treatise, properly to prove God’s perfect moral
government over the world, or the truth of religion; but to observe
what there is in the constitution and course of nature, to confirm the
proper proof of it, supposed to be known: and that the weight of the
foregoing observations to this purpose may be thus distinctly proved.
Pleasure and pain are, to a certain degree, say to a very high
degree, distributed among us without any apparent regard to the
merit or demerit of characters. And were there nothing else
concerning this matter discernible in the constitution and course of
nature, there would be no ground from the constitution and course
of nature, to hope or to fear that men would be rewarded or
punished hereafter according to their deserts: which, however, it is
to be remarked, implies, that even then there would be no ground
from appearances to think, that vice upon the whole would have the
advantage, rather than that virtue would. Thus the proof of a future
state of retribution would rest upon the usual known arguments for
it; which are I think plainly unanswerable; and would be so, though
there were no additional confirmation of them from the things above
insisted on. But these things are a very strong confirmation of them.
For,
First, They show that the Author of nature is not indifferent to
virtue and vice. They amount to a declaration, from him,
determinate and not to be evaded, in favor of one, and against the
other; such a declaration, as there is nothing to be set over against
or answer, on the part of vice. So that were a man, laying aside the
proper proof of religion, to determine from the course of nature only,
whether it were most probable, that the righteous or the wicked
would have the advantage in a future life; there can be no doubt,
but that he would determine the probability to be, that the former
would. The course of nature then, in the view of it now given,
furnishes us with a real practical proof of the obligations of religion.
Secondly, When, conformably to what religion teaches us, God
shall reward and punish virtue and vice as such, so as that every one
shall, upon the whole, have his deserts; this distributive justice will
not be a thing different in kind, but only in degree, from what we
experience in his present government. It will be that in effect,
towards which we now see a tendency. It will be no more than the
completion of that moral government, the principles and beginning
of which have been shown, beyond all dispute, discernible in the
present constitution and course of nature.
Thirdly, As under the natural government of God, our experience
of those kinds and degrees of happiness and misery, which we do
experience at present, gives just ground to hope for, and to fear,
higher degrees and other kinds of both in a future state, supposing a
future state admitted: so under his moral government our
experience, that virtue and vice are, in the manners above
mentioned, actually rewarded and punished at present, in a certain
degree, gives just ground to hope and to fear, that they may be
rewarded and punished in a higher degree hereafter. It is
acknowledged indeed that this alone is not sufficient ground to
think, that they actually will be rewarded and punished in a higher
degree, rather than in a lower: but then,
Lastly, There is sufficient ground to think so, from the good and
bad tendencies of virtue and vice. For these tendencies are essential,
and founded in the nature of things: whereas the hinderances to
their becoming effect are, in numberless cases, not necessary, but
artificial only. Now it may be much more strongly argued, that these
tendencies, as well as the actual rewards and punishments, of virtue
and vice, which arise directly out of the nature of things, will remain
hereafter, than that the accidental hinderances of them will. And if
these hinderances do not remain; those rewards and punishments
cannot but be carried on much farther towards the perfection of
moral government: i.e. the tendencies of virtue and vice will become
effect; but when, or where, or in what particular way, cannot be
known at all, but by revelation.
Upon the whole: there is a kind of moral government implied in
God’s natural government:[79] virtue and vice are naturally rewarded
and punished as beneficial and mischievous to society;[80] and
rewarded and punished directly as virtue and vice.[81] The notion of
a moral scheme of government is not fictitious, but natural; for it is
suggested to our thoughts by the constitution and course of nature:
and the execution of this scheme is actually begun, in the instances
here mentioned. And these things are to be considered as a
declaration of the Author of nature, for virtue, and against vice: they
give a credibility to the supposition of their being rewarded and
punished hereafter; and also ground to hope and to fear, that they
may be rewarded and punished in higher degrees than they are
here. All this is confirmed, and the argument for religion, from the
constitution and course of nature, is carried on farther, by observing,
that there are natural tendencies, and, in innumerable cases, only
artificial hinderances, to this moral scheme’s being carried on much
farther towards perfection, than it is at present.[82]
The notion then of a moral scheme of government, much more
perfect than what is seen, is not a fictitious, but a natural notion; for
it is suggested to our thoughts, by the essential tendencies of virtue
and vice. These tendencies are to be considered as intimations, as
implicit promises and threatenings, from the Author of nature, of
much greater rewards and punishments to follow virtue and vice,
than do at present. Indeed, every natural tendency, which is to
continue, but which is hindered from becoming effect by only
accidental causes, affords a presumption, that such tendency will,
some time or other, become effect: a presumption proportionable in
degree to the length of the duration, through which such tendency
will continue. From these things together, arises a real presumption,
that the moral scheme of government established in nature, shall be
carried on much farther towards perfection hereafter; and, I think, a
presumption that it will be absolutely completed. From these things,
joined with the moral nature which God has given us, considered as
given us by him, arises a practical proof[83] that it will be completed:
a proof from fact; and therefore a distinct one from that which is
deduced from the eternal and unalterable relations, the fitness and
unfitness of actions.
CHAPTER IV.
PROBATION, AS IMPLYING TRIAL, DIFFICULTIES, AND DANGER.[84]
CHAPTER V.
PROBATION, AS INTENDED FOR MORAL DISCIPLINE AND
IMPROVEMENT.
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookultra.com