The parallelism course dives into a wide range of parallel programming techniques, whether data- or task-parallel. The training course will start with an overview of patterns, look at trade-offs, pitfalls and available parallel programming environments – with a particular focus on OpenMP4, Threading Building Blocks and Cilk. The last day is an advanced class devoted to fine-tuning and balancing parallel programs using modern frameworks, runtimes and APIs. Hands-on labs are included. Topics tackled are:
- Software technologies and constructs for advanced parallelization
- Parallel programming patterns
- Evaluating tradeoffs
- Lockless algorithms, avoiding parallelism pitfalls and traps
- Advanced technologies: getting most out of OpenMP4, Cilk, TBB.
- Special control options, finetuning, balancing.
- Choosing the appropriate technology out of a portfiolio of over 20.