2 Planning for parallelization

 

This chapter covers

  • Planning steps for a parallel project
  • Version control and team development workflows
  • Understanding performance capabilities and limitations
  • Developing a plan to parallelize a routine

Developing a parallel application or making an existing application run in parallel can feel challenging at first. Often, developers new to parallelism are unsure of where to begin and what pitfalls they might encounter. This chapter focuses on a workflow model for developing parallel applications as illustrated in figure 2.1. This model provides the context for where to get started and how to maintain progress in developing your parallel application. Generally, it is best to implement parallelism in small increments so that if problems are encountered, the last few commits can be reversed. This kind of pattern is suited to agile project management techniques.

Figure 2.1 Our suggested parallel development workflow begins with preparing the application and then repeating four steps to incrementally parallelize an application. This workflow is particularly suited to an agile project management technique.
02_01

2.1 Approaching a new project: The preparation

2.1.1 Version control: Creating a safety vault for your parallel code

2.1.2 Test suites: The first step to creating a robust, reliable application

2.1.3 Finding and fixing memory issues

2.1.4 Improving code portability

2.2 Profiling: Probing the gap between system capabilities and application performance

2.3 Planning: A foundation for success

2.3.1 Exploring with benchmarks and mini-apps

2.3.2 Design of the core data structures and code modularity

2.3.3 Algorithms: Redesign for parallel

2.4 Implementation: Where it all happens

2.5 Commit: Wrapping it up with quality

2.6 Further explorations

2.6.1 Additional reading

2.6.2 Exercises

Summary

sitemap