If the assembly crew runs ahead of the foundry, it will block, waiting for girders to arrive. Hence, it simply suspends its operations until more girders are available. Similarly, if the foundry produces girders faster than the assembly crew can use them, these girders simply accumulate until they are needed.
However, this model is certainly not the only approach that can be taken to representing parallel computation. Many other models have been proposed, differing in their flexibility, task interaction mechanisms, task granularities, and support for locality, scalability, and modularity.
Next, we review several alternatives. Message Passing Model Message passing Model: Message passing is probably the most widely used parallel programming model today.
Each task is identified by a unique name, and tasks interact by sending and receiving messages to and from named tasks. Message Passing Model Cont… The message-passing model does not preclude the dynamic creation of tasks, the execution of multiple tasks per processor, or the execution of different programs by different tasks.
However, in practice most message-passing systems create a fixed number of identical tasks at program startup and do not allow tasks to be created or destroyed during program execution. These systems are said to implement a single program multiple data SPMD programming model because each task executes the same program but operates on different data.
Data Parallelism Model Data Parallelism: Another commonly used parallel programming model, data parallelism, calls for exploitation of the concurrency that derives from the application of the same operation to multiple elements of a data structure. Hence, data-parallel compilers often require the programmer to provide information about how data are to be distributed over processors, in other words, how data are to be partitioned into tasks.
The compiler can then translate the data-parallel program into an SPMD formulation, thereby generating communication code automatically. Shared Memory Model Shared Memory: In the shared-memory programming model, tasks share a common address space, which they read and write asynchronously. Various mechanisms such as locks and semaphores may be used to control access to the shared memory.
This model can simplify program development. However, understanding and managing locality becomes more difficult, an important consideration on most shared-memory architectures. Parallel Algorithm Examples Finite Differences The goal of this example is simply to introduce parallel algorithms and their description in terms of tasks and channels.
We consider a 1 D finite difference problem, in which we have a vector X 0 of size N and must compute X T , where. Designing Parallel Algorithms Cont… 1 Partitioning. The computation that is to be performed and the data operated on by this computation are decomposed into small tasks. Practical issues such as the number of processors in the target computer are ignored, and attention is focused on recognizing opportunities for parallel execution.
The communication required to coordinate task execution is determined, and appropriate communication structures and algorithms are defined. The task and communication structures defined in the first two stages of a design are evaluated with respect to performance requirements and implementation costs. If necessary, tasks are combined into larger tasks to improve performance or to reduce development costs. Each task is assigned to a processor in a manner that attempts to satisfy the competing goals of maximizing processor utilization and minimizing communication costs.
Mapping can be specified statically or determined at runtime by load-balancing algorithms. Partitioning The partitioning stage of a design is intended to expose opportunities for parallel execution. Hence, the focus is on defining a large number of small tasks in order to yield what is termed a fine-grained decomposition of a problem. A good partition divides into small pieces both the computation associated with a problem and the data on which this computation operates.
When designing a partition, programmers most commonly first focus on the data associated with a problem, then determine an appropriate partition for the data, and finally work out how to associate computation with data.
This partitioning technique is termed domain decomposition. In the domain decomposition approach to problem partitioning, we seek first to decompose the data associated with a problem.
If possible, we divide these data into small pieces of approximately equal size. Next, we partition the computation that is to be performed, typically by associating each operation with the data on which it operates. This partitioning yields a number of tasks, each comprising some data and a set of operations on that data. An operation may require data from several tasks. In this case, communication is required to move data between tasks.
Partitioning Cont… The alternative approachfirst decomposing the computation to be performed and then dealing with the datais termed functional decomposition. Functional decomposition represents a different and complementary way of thinking about problems.
In this approach, the initial focus is on the computation that is to be performed rather than on the data manipulated by the computation. If we are successful in dividing this computation into disjoint tasks, we proceed to examine the data requirements of these tasks. These data requirements may be disjoint, in which case the partition is complete. Highly efficient quantum spin dynamics simulation algorithms. Spin dynamics simulations are used to gain insight into important magnetic resonance experiments in the fields of chemistry, biochemistry, and physics.
Presented in this thesis are investigations … Expand. View 9 excerpts, cites background and methods. View 5 excerpts, cites background. The aim is to type-check programs against session-type based protocol specifications, enforcing properties such … Expand. View 6 excerpts, cites background and methods. Video coding on multicore graphics processors GPUs. View 8 excerpts, cites methods and background. Introduction to algorithms. Computer Science, Mathematics.
Parallel algorithms for regular architectures - meshes and pyramids. Mathematics, Computer Science. Toward high-performance computational chemistry: I. Scalable Fock matrix construction algorithms. Parallel Distributed Comput. SIAM Rev. Want to Read Currently Reading Read. Other editions. Enlarge cover.
Error rating book. Refresh and try again. Open Preview See a Problem? Details if other :. Thanks for telling us about the problem. Return to Book Page. This book introduces the parallel paradigm, and shows how parallel programming is carried out using a variety of programming languages.
Foster details actual applications examples from engineering, science, and finance while keeping the focus throughout on parallel programming as opposed to algorithm development. Get A Copy. Paperback , pages. Published May 24th by Pearson first published February 10th More Details Original Title. Friend Reviews. To see what your friends thought of this book, please sign up.
To ask other readers questions about Designing and Building Parallel Programs , please sign up. Be the first to ask a question about Designing and Building Parallel Programs.
Lists with This Book.
0コメント