May 07, 2013
As you think about your application in the context of new multicore systems you may wonder: What does it mean to transition my application to multicore? What is the essence of a multicore application? What are the tradeoffs involved? What are the changes you need to make?
This paper, part one of two, answers these questions, showing you how to transition an application to run on a multicore system smoothly and correctly.
Moving a serial application into the multicore age means you will need to make the application parallel. You want to look for places in the code where two or more things can be done at once. As you transition your application from serial to multithreaded, one of the major challenges will be dealing with several new types of errors. Multithreaded applications introduce complexities like race conditions, synchronization issues, deadlocks, troubleshooting strategies, and other challenges associated with parallelization efforts. As these challenges are likely to become more serious over time, addressing them successfully requires a thoughtful approach and adherence to a process like the one outlined in this paper.
The next paper in this series, Part 2: Optimizing Parallel Software, will focus on gaining performance from your application's execution once you have it operating correctly.