text-based alphabetical index Skip to content
StaffDirectory Search
Home
AboutNAS
NASProfile
InformationPwrGrid
WorkingWithUs
GridpointsMagazine
MediaResources
EducationalResource
ResearchNTechnology
CurrentResearch
PapersNReports
AvailableSoftware
SampleDatasets
UserServices
NewUserOrientation
HelpDesk
Online account request form
Policies and Procedures
SystemsDocs
TrainingNEvents
ContactUs
Feedback
Sitemap
Help
Raising the Parallel Bar

Steps to Parallelization

Thumbnail of flow chart showing CAPO prcess
CAPO process flow chart. (Click to enlarge)

CAPO goes through several steps to parallelize a serial code (see figure at right). First, the tool analyzes data dependencies to determine how different variables depend on one another. Then, a loop level analysis (looking for repeated sequences of instructions in the code) is done. Users are then taken through a series of graphical user interfaces that illustrate the parallelization process. "The tool takes away the tedious and error-prone work of parallelizing code, allowing the user to focus on optimization of critical parts of the code, all through a single interface," explains Jost.

Dependency analysis, the core element of the CAPO software, determines the relationships between variables within a serial code. This process is usually time consuming because of the complex structure of large codes containing many subroutines.

Following the dependence analysis, the loops within the code are examined. "CAPO examines the loops for potential data dependencies that might prohibit parallelization. If you have a loop which iterates over some repeated sections of the code, you can actually break this loop into individual pieces, such that you can run them concurrently on the processors," explains Jin. "That’s how you get the speed-up in code performance."

Thumbnail diagram of loop iteration timelines, using CAPO
CAPO improves the level of parallelization. (Click to enlarge)

Once the loop level analysis is complete, users are guided through a series of built-in graphical user interfaces. These interfaces enable users to view all instances where the code did not parallelize. The more obstacles a user is able to remove, the higher level of parallelization that can be achieved (see figure at left)."The user guides the tool, but the tool also guides the user—it’s an interaction," explains Jost.

Proof is in the Numbers, page 3

page 1 page 3

Curator: Jill Dunbar
Last Update: March 4, 2003
NASA Official: Walt Brooks