With the potential for significant performance improvements, multicore processors present software developers with the challenge of determining how best to validate and optimize code. Some of these challenges became apparent to us when we converted Amide, an open-source Linux application, from single- to multithreaded code. In this article, I discuss this project, focusing on threading code, code inspection, decomposition, and evaluation.
Amide (amide.sourceforge.net) is designed for viewing, analyzing, and registering volumetric medical imaging datasets. Written by Philippe Lacroute, Amide supports features for rotating images, selecting layers to view, and fusing multiple images; see Figure 1. VolPack (graphics.stanford.edu/software/VolPack) is a portable library for volume rendering that's called by Amide.