Intel Threading Building Blocks

Outfitting C++ for Multi-core Processor Parallelism

Specificaties
Paperback, 303 blz. | Engels
O'Reilly | 1e druk, 2007
ISBN13: 9780596514808
Rubricering
Hoofdrubriek : Computer en informatica
O'Reilly 1e druk, 2007 9780596514808
Gratis verzonden | Verwachte levertijd ongeveer 16 werkdagen

Samenvatting

Multi-core chips from Intel and AMD offer a dramatic boost in speed and responsiveness, and plenty of opportunities for multiprocessing on ordinary desktop computers. But they also present a challenge: More than ever, multithreading is a requirement for good performance. This guide explains how to maximize the benefits of these processors through a portable C++ library that works on Windows, Linux, Macintosh, and Unix systems. With it, you'll learn how to use Intel Threading Building Blocks (TBB) effectively for parallel programming - without having to be a threading expert.

Written by James Reinders of Intel Software Products, and based on the experience of Intel's developers and customers, this book explains the key tasks in multithreading and how to accomplish them with TBB in a portable and robust manner. With plenty of examples and full reference material, the book lays out common patterns of uses, reveals the gotchas in TBB, and gives important guidelines for choosing among alternatives in order to get the best performance.

The book covers:
- Easy and effective ways to exploit parallelism of multi-core systems
- The key issues in writing parallel programs
- Common patterns in multithreading
- Thread-safe containers for efficient processing
- Task scheduling
- Memory management in a threaded environment

Any C++ programmer who wants to write an application to run on a multi-core system will benefit from this book. TBB is also very approachable for a C programmer or a C++ programmer without much experience with templates. Best of all, you don't need experience with parallel programming or multi-core processors to use this book.

Specificaties

ISBN13:9780596514808
Taal:Engels
Bindwijze:paperback
Aantal pagina's:303
Uitgever:O'Reilly
Druk:1

Over James Reinders

James Reinders is a senior engineer who joined Intel Corporation in 1989 and has contributed to projects including the world's first TeraFLOP supercomputer (ASCI Red), as well as compilers and architecture work for a number of Intel processors and parallel systems. James has been a driver behind the development of Intel as a major provider of software development products, and serves as their chief software evangelist. James has published numerous articles, contributed to several books and is widely interviewed on parallelism.

Andere boeken door James Reinders

Inhoudsopgave

Foreword
Note from the Lead Developer of Intel Threading Building Blocks
Preface

1. Why Threading Building Blocks?
Overview
Benefits
2. Thinking Parallel
Elements of Thinking Parallel
Decomposition
Scaling and Speedup
What Is a Thread?
Mutual Exclusion and Locks
Correctness
Abstraction
Patterns
Intuition
3. Basic Algorithms
Initializing and Terminating the Library
Loop Parallelization
Recursive Range Specifications
Summary of Loops
4. Advanced Algorithms
Parallel Algorithms for Streams
5. Containers
concurrent_queue
concurrent_vector
concurrent_hash_map
6. Scalable Memory Allocation
Limitations
Problems in Memory Allocation
Memory Allocators
Replacing malloc, new, and delete
7. Mutual Exclusion
When to Use Mutual Exclusion
Mutexes
Mutexes
Atomic Operations
8. Timing
9. Task Scheduler
When Task-Based Programming Is Inappropriate
Much Better Than Raw Native Threads
Initializing the Library Is Your Job
Example Program for Fibonacci Numbers
Task Scheduling Overview
How Task Scheduling Works
Recommended Task Recurrence Patterns
Making Best Use of the Scheduler
Task Scheduler Interfaces
Task Scheduler Summary
10. Keys to Success
Key Steps to Success
Relaxed Sequential Execution
Safe Concurrency for Methods and Libraries
Debug Versus Release
For Efficiency's Sake
Enabling Debugging Features
Mixing with Other Threading Packages
Naming Conventions
11. Examples
The Aha! Factor
A Few Other Key Points
parallel_for Examples
The Game of Life
Parallel_reduce Examples
CountStrings: Using concurrent_hash_map
Quicksort: Visualizing Task Stealing
A Better Matrix Multiply (Strassen)
Advanced Task Programming
Packet Processing Pipeline
Memory Allocation
Game Threading Example
Physics Interaction and Update Code
Open Dynamics Engine
12. History and Related Projects
Libraries
Languages
Pragmas
Generic Programming
Caches
Costs of Time Slicing
Quick Introduction to Lambda Functions
Further Reading

Index

Net verschenen

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Intel Threading Building Blocks