Professional Parallel Programming with C# Master Parallel Extensions With . NET 4

Saved in:
Bibliographic Details
Main Author: Hillar, Gastón C
Format: eBook
Language:English
Published: Newark John Wiley & Sons, Incorporated 2010
Edition:1
Subjects:
ISBN:1118546032, 9781118546031
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Table of Contents:
  • Creating Custom PLINQ Aggregate Functions -- Concurrent PLINQ Tasks -- Cancelling PLINQ -- Specifying the Desired Degree of Parallelism -- Working with ForAll -- Configuring How Results Are Returned by Using WithMergeOptions -- Handling Exceptions Thrown by PLINQ -- Using PLINQ to Execute MapReduce Algorithms -- Designing Serial Stages Using PLINQ -- Summary -- Chapter 7: Visual Studio 2010 Task Debugging Capabilities -- Taking Advantage of Multi-Monitor Support -- Understanding the Parallel Tasks Debugger Window -- Viewing the Parallel Stacks Diagram -- Following the Concurrent Code -- Detecting Deadlocks -- Summary -- Chapter 8: Thread Pools -- Going Downstairs from the Tasks Floor -- Understanding the New CLR 4 Thread Pool Engine -- Summary -- Chapter 9: Asynchronous Programming Model -- Mixing Asynchronous Programming with Tasks -- Summary -- Chapter 10: Parallel Testing and Tuning -- Preparing Parallel Tests -- Solutions to Common Patterns -- Understanding False Sharing -- Summary -- Chapter 11: Vectorization, SIMD Instructions, and Additional Parallel Libraries -- Understanding SIMD and Vectorization -- From MMX to SSE4.x and AVX -- Using the Intel Math Kernel Library -- Using Intel Integrated Performance Primitives -- Summary -- Appendix A: .NET 4 Parallelism Class Diagrams -- Task Parallel Library -- Data Structures for Coordination in Parallel Programming -- PLINQ -- Threading -- Appendix B: Concurrent UML Models -- Structure Diagrams -- Behavior Diagrams -- Interaction Diagrams -- Appendix C: Parallel Extensions Extras -- Inspecting Parallel Extensions Extras -- Coordination Data Structures -- Extensions -- Parallel Algorithms -- Partitioners -- Task Schedulers -- Index
  • Intro -- Title Page -- Copyright -- Dedication -- Credits -- About the Author -- About the Technical Editor -- Acknowledgments -- Foreword -- Introduction -- Who This Book Is For -- What This Book Covers -- How This Book Is Structured -- What You Need to Use This Book -- Conventions -- Source Code -- Errata -- P2P.WROX.COM -- Chapter 1: Task-Based Programming -- Working with Shared-Memory Multicore -- Understanding Hardware Threads and Software Threads -- Understanding Amdahl's Law -- Considering Gustafson's Law -- Working with Lightweight Concurrency -- Creating Successful Task-Based Designs -- Preparing for NUMA and Higher Scalability -- Deciding the Convenience of Going Parallel -- Summary -- Chapter 2: Imperative Data Parallelism -- Launching Parallel Tasks -- Transforming Sequential Code to Parallel Code -- Parallelizing Loops -- Specifying the Desired Degree of Parallelism -- Using Gantt Charts to Detect Critical Sections -- Summary -- Chapter 3: Imperative Task Parallelism -- Creating and Managing Tasks -- Summary -- Chapter 4: Concurrent Collections -- Understanding the Features Offered by Concurrent Collections -- Summary -- Chapter 5: Coordination Data Structures -- Using Cars and Lanes to Understand the Concurrency Nightmares -- Understanding New Synchronization Mechanisms -- Working with Synchronization Primitives -- Working with Mutual-Exclusion Locks -- Using Spin Locks as Mutual-Exclusion Lock Primitives -- Working with Lightweight Manual Reset Events -- Limiting Concurrency to Access a Resource -- Simplifying Dynamic Fork and Join Scenarios with CountdownEvent -- Working with Atomic Operations -- Summary -- Chapter 6: PLINQ: Declarative Data Parallelism -- Transforming LINQ into PLINQ -- Specifying the Execution Mode -- Understanding Partitioning in PLINQ -- Performing Reduction Operations with PLINQ