Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism (Paperback)
James Reinders
- 出版商: O'Reilly Media
- 出版日期: 2007-07-22
- 售價: $1,360
- 貴賓價: 9.5 折 $1,292
- 語言: 英文
- 頁數: 336
- 裝訂: Paperback
- ISBN: 0596514808
- ISBN-13: 9780596514808
-
相關分類:
C++ 程式語言
立即出貨 (庫存=1)
買這商品的人也買了...
-
$860$688C++ 標準程式庫 (The C++ Standard Library: A Tutorial and Reference)
-
$720$576重構─改善既有程式的設計
-
$1,817$1,726Multithreading Applications in Win32: The Complete Guide to Threads
-
$780$702專案管理策略精論:專案管理的策略規劃與實施 (Project Management: Strategic Design and Implementation, 4/e)
-
$350$280AutoCAD 2006 實力養成暨評量
-
$880$695深入淺出設計模式 (Head First Design Patterns)
-
$650$520Java 認證 SCJP 5.0 猛虎出閘
-
$1,775$1,686Ivor Horton's Beginning Visual C++ 2005 (Paperback)
-
$550$468SQL 語法範例辭典
-
$980$882Linux 驅動程式, 3/e (Linux Device Drivers, 3/e)
-
$500$450Effective C++, 3/e (中文版) (Effective C++: 55 Specific Ways to Improve Your Programs and Designs, 3/e)
-
$480$408Linux 作業系統之奧義
-
$1,200$948Linux 核心詳解, 3/e (Understanding the Linux Kernel, 3/e)
-
$580$493PHP 5 & MySQL 程式設計, 2/e
-
$880$695深入淺出物件導向分析與設計 (Head First Object-Oriented Analysis and Design)
-
$360$342Windows CE.net 內核定制及應用開發
-
$990$891C++ Primer, 4/e (中文版)
-
$350$298Windows 加密解碼防毒防駭─Vista、XP 全適用
-
$600$468電腦鑑識與數位證據-資安技術、科技犯罪的預防、鑑定與現場重建
-
$600$480現代嵌入式系統開發專案實務-菜鳥成長日誌與專案經理的私房菜
-
$720$612Embedded Linux 開發實務徹底研究 (Embedded Linux Primer: A Practical Real-World Approach)
-
$1,200$1,020軟體建構之道 (Code Complete, 2/e)
-
$1,800$1,710Using OpenMP: Portable Shared Memory Parallel Programming (Paperback)
-
$199$169防止網路駭客、保密大作戰
-
$650$507精通嵌入式 Linux 程式設計 (Mastering Embedded Linux Programming)
商品描述
Description
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, Chief Evangelist 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.
You'll learn how Intel Threading Building Blocks: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.
- Enables you to specify tasks instead of threads for better portability, easier programming, more understandable source code, and better performance and scalability in general
- Focuses on the goal of parallelizing computationally intensive work to deliver high-level solutions
- Is compatible with other threading packages, and doesn't force you to pick one package for your entire program
- Emphasizes scalable, data-parallel programming, which allows program performance to increase as you add processors
- Relies on generic programming, which enables you to write the best possible algorithms with the fewest constraints
Table of Contents
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