Exploring how concurrent programming can be assisted by language-level techniques, Introduction to Concurrency in Programming Languages presents high-level language techniques for dealing with concurrency in a general context. It provides an understanding of programming languages that offer concurrency features as part of the language definition. The book supplies a conceptual framework for different aspects of parallel algorithm design and implementation. It first addresses the limitations of traditional programming techniques and models when dealing with concurrency. The book then explores the current state of the art in concurrent programming and describes high-level language constructs for concurrency. It also discusses the historical evolution of hardware, corresponding high-level techniques that were developed, and the connection to modern systems, such as multicore and manycore processors. The remainder of the text focuses on common high-level programming techniques and their application to a range of algorithms. The authors offer case studies on genetic algorithms, fractal generation, cellular automata, game logic for solving Sudoku puzzles, pipelined algorithms, and more.
Illustrating the effect of concurrency on programs written in familiar languages, this text focuses on novel language abstractions that truly bring concurrency into the language and aid analysis and compilation tools in generating efficient, correct programs. It also explains the complexity involved in taking advantage of concurrency with regard to program correctness and performance.
Matthew J. Sottile is a research associate and adjunct assistant professor in the Department of Computer and Information Sciences at the University of Oregon. He has a significant publication record in both high performance computing and scientific programming. Dr. Sottile is currently working on research in concurrent programming languages and parallel algorithms for signal and image processing in neuroscience and medical applications. Timothy G. Mattson is a principal engineer at Intel Corporation. Dr. Mattson's noteworthy projects include the world's first TFLOP computer, OpenMP, the first generally programmable TFLOP chip (Intel's 80 core research chip), OpenCL, and pioneering work on design patterns for parallel programming. Craig E Rasmussen is a staff member in the Advanced Computing Laboratory at Los Alamos National Laboratory (LANL). Along with extensive publications in computer science, space plasma, and medical physics, Dr. Rasmussen is the principal developer of PetaVision, a massively parallel, spiking neuron model of visual cortex that ran at 1.14 Petaflops on LANL's Roadrunner computer in 2008.
Introduction Motivation Where does concurrency appear? Why is concurrency considered hard? Timeliness Approach Concepts in Concurrency Terminology Concepts Concurrency Control Correctness Techniques The State of the Art Limitations of libraries Explicit techniques Higher-level techniques The limits of explicit control Concluding remarks High-Level Language Constructs Common high-level constructs Using and evaluating language constructs Implications of concurrency Interpreted languages Historical Context and Evolution of Languages Evolution of machines Evolution of programming languages Limits to automatic parallelization Modern Languages and Concurrency Constructs Array abstractions Message passing Control flow Functional languages Functional operators Performance Considerations and Modern Systems Memory Amdahl's law, speedup, and efficiency Locking Thread overhead Introduction to Parallel Algorithms Designing parallel algorithms Finding concurrency Strategies for exploiting concurrency Algorithm patterns Patterns supporting parallel source code Demonstrating parallel algorithm patterns Pattern: Task Parallelism Supporting algorithm structures Case study: Genetic algorithms Case study: Mandelbrot set computation Pattern: Data Parallelism Case study: Matrix multiplication Case study: Cellular automaton Limitations of SIMD data parallel programming Beyond SIMD Geometric decomposition Pattern: Recursive Algorithms Recursion concepts Case study: Sorting Case study: Sudoku Pattern: Pipelined Algorithms Pipelining as a software design pattern Language support for pipelining Case study: Pipelining in Erlang Case study: Visual cortex Appendix A: OpenMP Quick Reference Appendix B: Erlang Quick Reference Appendix C: Cilk Quick Reference References
Number Of Pages:
- ID: 9781420072136
- Saver Delivery: Yes
- 1st Class Delivery: Yes
- Courier Delivery: Yes
- Store Delivery: Yes
Prices are for internet purchases only. Prices and availability in WHSmith Stores may vary significantly
© Copyright 2013 - 2017 WHSmith and its suppliers.
WHSmith High Street Limited Greenbridge Road, Swindon, Wiltshire, United Kingdom, SN3 3LD, VAT GB238 5548 36