Christopher J. Cameron, Steve Lantz
Cornell Center for Advanced Computing

Revisions: 3/2022, 9/2014 (original)

This topic explains how to design programs that can effectively use many cores. It introduces the concepts and considerations necessary for designing, writing, and optimizing parallel programs, without delving into the specifics of particular programs.

Objectives

After you complete this topic, you should be able to:

  • Describe characteristics of problems involving data parallelism
  • Describe characteristics of problems involving functional parallelism
  • Identify three strategies you might use to produce a parallel program
Prerequisites

This topic assumes a basic understanding of serial (single-threaded) programming and familiarity with computer terminology.

You don't need to know how to write code to understand this topic, but you will get more out of this topic if you have a specific computation in mind. If you have coded a serial example of your problem, you can use the techniques described in the CVW Profiling and Debugging topic to gather profiling information. Profiling will reveal the time-consuming parts of your program that should be the target of your parallelization efforts.

 
©  |   Cornell University    |   Center for Advanced Computing    |   Copyright Statement    |   Inclusivity Statement