Wiley, 2017. — 528 p. — (Wiley Series on Parallel and Distributed Computing). — ISBN: 9780470936900.
Provides state-of-the-art methods for programming multi-core and many-core systems
The book comprises a selection of twenty two chapters covering: fundamental techniques and algorithms; programming approaches; methodologies and frameworks; scheduling and management; testing and evaluation methodologies; and case studies for programming multi-core and many-core systems.
Program development for multi-core processors, especially for heterogeneous multi-core processors, is significantly more complex than for single-core processors. However, programmers have been traditionally trained for the development of sequential programs, and only a small percentage of them have experience with parallel programming. In the past, only a relatively small group of programmers interested in High Performance Computing (HPC) was concerned with the parallel programming issues, but the situation has changed dramatically with the appearance of multi-core processors on commonly used computing systems. It is expected that with the pervasiveness of multi-core processors, parallel programming will become mainstream.
The pervasiveness of multi-core processors affects a large spectrum of systems, from embedded and general-purpose, to high-end computing systems. This book assists programmers in mastering the efficient programming of multi-core systems, which is of paramount importance for the software-intensive industry towards a more effective product-development cycle.
Key featuresLessons, challenges, and roadmaps ahead.
Contains real world examples and case studies.
Helps programmers in mastering the efficient programming of multi-core and many-core systems.
The book serves as a reference for a larger audience of practitioners, young researchers and graduate level students. A basic level of programming knowledge is required to use this book.
FoundationsMulti- And Many-Cores, Architectural Overview For Programmers
Programming Models For Multicore And Many-Core Computing Systems
Lock-Free Concurrent Data Structures
Software Transactional Memory
Programming ApproachesHybrid/Heterogeneous Programming With Ompss And Its Software/Hardware Implications
Skeleton Programming For Portable Many-Core Computing
Dsl Stream Programming On Multicore Architectures
Programming With Transactional Memory
Object-Oriented Stream Programming
Software-Based Speculative Parallelization
Autonomic Distribution And Adaptation
Programming FrameworksPeppher: Performance Portability And Programmability For Heterogeneous Many-Core Architectures
Fastflow: High-Level And Efficient Streaming On Multicore
Parallel Programming Framework For H.264/Avc Video Encoding In Multicore Systems
Parallelizing Evolutionary Algorithms On Gpgpu Cards With The Easea Platform
Testine, Evaluation An OptimizationSmart Interleavings For Testing Parallel Programs
Parallel Performance Evaluation And Optimization
A Methodology For Optimizing Multithreaded System Scalability On Multicores
Improving Multicore System Performance Through Data Compression
Scheduling And ManagementProgramming And Managing Resources On Accelerator-Enabled Clusters
An Approach For Efficient Execution Of Spmd Applications On Multicore Clusters
Operating System And Scheduling For Future Multicore And Many-Core Platforms