This module introduces concepts and industry-standard methodologies common to the implementation of three threading strategies: domain decomposition, task decomposition, pipeline decomposition.
Students learn to construct a dependency graph to analyze which of the three threading strategies might best be applied. They also learn how to identify race conditions.
Students learn basic principles of parallel programming on shared-memory systems, including how to recognize key areas of code that are good candidates for parallelism.
- Recognizing opportunities for parallelism
- Preventing potential synchronization issues
- Domain decomposition
- Task decomposition
- Analyzing and improving performance
- Choosing the appropriate threading model