e-Book covers:

  • Background on the emergence of mainstream multicore processors

  • The key challenges facing software developers

  • An introduction to multithreading concepts

  • 20 questions to ask when going multicore

  • Overview of available concurrency layers

Table of Contents

Emergence of Multicore Processors

  • The free lunch is over
  • The multicore software triad
What Is Parallelism, Anyhow?
  • Amdahl's Law
  • A model for multithreaded execution
  • Work
  • Span
  • Parallelism

Race Conditions: A New Type of Bug (for Most People)

  • The lure of nonlocal variables
  • Race conditions
  • A simple example
  • Using the dag model
  • Atomicity
  • Validating determinacy
  • Coping with race bugs

The Folly of Do-It-Yourself Multithreading

  • Three desirable properties
  • A tiny example
  • A version using native threads
  • The impact on development time

Concurrency Platforms

  • Thread pools
  • Message passing
  • Data-parallel languages
  • Intel's Threading Building Blocks
  • OpenMP
  • Cilk++
20 Questions to Ask When Going Multicore