Categories Corporate
Free Textbook

Using Concurrency and Parallelism Effectively – II

235
Language:  English
In the second part of Using Concurrency and Parallelism Effectively we look at how parallelism can be exploited in a variety of modern computing system environments.
Download free PDF textbooks or read online. Less than 15% adverts
Yritystilaus ilmainen ensimmäisen 30 päivän ajan, ja sen jälkeen $5.99/kk.
Description
Preface
Content

In the second part of Using Concurrency and Parallelism Effectively we look at how parallelism can be exploited in a variety of modern computing system environments. These include networked and distributed systems, clusters of workstations and, of course multi-core processors.

Additional supplement files for the books:

Java7-Groovy2.1-Parallel-Library

Java8-Groovy2.3-Parallel-Library

Java8-Groovy2.4-Parallel-Library

In the second part of Using Concurrency and Parallelism Effectively we look at how parallelism can be exploited in a variety of modern computing system environments. These include networked and distributed systems, clusters of workstations and, of course multi-core processors. Multi-core processors have now become ubiquitous and it is nigh on impossible to buy any form of off-the-shelf computing system that does not contain a multi-core processor. One key advantage of using a system based upon the Java Virtual Machine is that we can make use of multi-core processors without any additional effort because the parallel constructs used in this book are able to make immediate and effective use of multi-core processors without any additional effort on the part of the programmer other than ensuring that their code contains sufficient parallel components to utilise the cores. The crucial advantage of the underlying JCSP package is that the definition of the processes does not change as we move from an interleaved concurrent implementation to truly parallel system in which processes are run of different cores or processors over a network. All that changes is the manner in which the processes are invoked.

This capability is more fully exploited as we introduce the capability of using distributed systems that execute on Ethernet based networks and workstation clusters. One of the more challenging aspects of using such clusters and networks is the ability to load the process network over the network from a single ‘host’ workstation. This challenge is addressed in Chapters 22 and 23 by means of a generic architecture that enables process and class loading over a network in a transparent manner. The only requirement of the programmer is the need to describe the channel connections that connect the processes. This is achieved using a knowledge of the architecture of the network in terms of its IP addresses.

  1. Communication over Networks: Process Parallelism
    1. Network Nodes and Channel Numbers
    2. Multiple Writers to One Reader
    3. A Single Writer Connected to Multiple Readers
    4. Networked Dining Philosophers
    5. Running the CREW Database in a Network
    6. Summary
  2. Dynamic Process Networks: A Print Server
    1. Print Spooler Data Objects
    2. The PrintUser Process
    3. The PrintSpooler Process
    4. Invoking The PrintSpooler Node
    5. Invoking A PrintUser Node
    6. Summary
  3. More Testing: Non-terminating Processes
    1. The Test-Network
    2. The Process Network Under Test
    3. Running The Test
    4. Summary
  4. Mobile Agents: Going for a Trip
    1. Mobile Agent Interface
    2. A First Parallel Agent System
    3. Running the Agent on a Network of Nodes
    4. Result Returning Agent
    5. An Agent with Forward and Back Channels
    6. Let’s Go On A trip
    7. Summary
  5. Mobile Processes: Ubiquitous Access
    1. The Travellers’ Meeting System
    2. The Service Architecture
    3. Universal Client
    4. The Access Server
    5. Group Location Service
    6. Running the System
    7. Commentary
  6. Redirecting Channels: A Self-Monitoring Process Ring
    1. Architectural Overview
    2. The Receiver process
    3. The Prompter Process
    4. The Queue Process
    5. The State Manager Process
    6. The Stop Agent
    7. The Restart Agent
    8. The Ring Agent Element Process
    9. Running A Node
    10. Observing The System’s Operation
    11. Summary
    12. Challenges
  7. Mobility: Process Discovery
    1. The Adaptive Agent
    2. The Node Process
    3. The Data Generator Process
    4. The Gatherer Process
    5. Definition of the Data Processing Processes
    6. Running the System
    7. Typical Output From the Gatherer Process
    8. Summary
    9. Challenge
  8. Automatic Class Loading – Process Farms
    1. Data Parallel Architectures
    2. Task Parallel Architectures
    3. Generic Architectures
    4. Architectural Implementation
    5. Summary
  9. Programming High Performance Clusters
    1. Architectural Overview
    2. The Host and Node Scripts
    3. An Application – Montecarlo Pi
    4. Summary
  10. Big Data – Solution Scaling
    1. Concordance – A Typical Problem
    2. Concordance Data Structures
    3. The Algorithm
    4. Analysis of Total Time Results
    5. Analysis of Algorithm Phases
    6. Dealing with Larger Data Sets
    7. Implementation of the Scalable Architecture
    8. Performance Analysis of the Distributed System
    9. Summary
  11. Concluding Remarks
    1. The Initial Challenge – A Review
    2. Final Thoughts
  12. References
About the Author

Jon Kerridge