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 programming methods

Download our FREE e-Book!

"How to Survive the Multicore Revolution (or at Least Survive the Hype)"

An irreversible shift towards multicore x86 processors is underway. Building multicore processors delivers on the promise of Moore's Law, but it creates an enormous problem for developers. Multicore processors are parallel computers, and parallel computers are notoriously difficult to program.

Therefore, to deliver competitive application performance on these new processors, many applications must be written - or rewritten - as parallel or multithreaded applications. This multithreaded development is difficult, expensive, time-consuming, and error-prone; and it requires new programming skill sets. Organizations need a solution to this multicore software challenge.

In this e-Book, we have tried to provide some background and context around the emergence of mainstream multicore processors; identify the key challenges facing software developers; provide an introduction to multithreading; and review several programming tools and techniques available today.

 
Download the e-Book

 

Download e-Book and add me to your list:

Got feedback on the e-Book?

We would love to hear from you:

  • Any suggestions on how we can improve the e-Book?

  • What other content might be of interest to you?

(You can post any and all feedback and suggestions on the e-Book blog post.)

 

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