Day 1

Matthew Cordery, CSCS

Introduction to OpenMP:

1. Introductory Course on OpenMP Programming
- OpenMP programming model
- OpenMP directives for work sharing and syncronization
2. LAB (hands-on)
- Writing, compiling and executing simple OpenMP programs
- Identifying and resolving common issues
3. Advanced Topics
- Data scoping constructs
- Constructs introduced in OpenMP 3.0
4. LAB (hands-on)
- Experiments using data scoping constructs
- Examples with OpenMP 3.0 directives

Day 2

Neil Stringfellow, CSCS

1.Historical perspective
- Evolution of multi-core processors
- Parallel computing
- Programming and parallel programming
- OpenMP and MPI standardization

Roberto Ansaloni, CRAY
2. MPP systems with multi-core processors
- Building blocks of an MPP system
- Characteristic features of multi-core based MPP systems
- Introduction to Cray XE6 system

Neil Stringfellow, CSCS
3. Parallel programming with MPI and OpenMP
- MPI programming fundamentals
- OpenMP programming fundamentals
- OpenMP parallel constructs
- Hybrid (MPI + OpenMP) programming considerations, opportunities and challenges

Roberto Ansaloni, CRAY
4.Exploiting Cray Programming Environment for hybrid applications
- Details on code development environment
- Availability and usage of program execution environment
- Task and thread mapping strategy and supporting tools
5. LAB (hands-on)
- Experiments with threaded codes
-Executing a hybrid code
- Experimenting with compiler and run-time options on XE6 platform

Sadaf Alam and Jean-Guillaume Piccinali, CSCS
6. Debugging multithreaded and hybrid applications
- Common errors in multi-threaded codes
- Introduction to debugging tools for multi-threaded applications
7. LAB (hands-on)
- Debugging multi-threaded codes

Day 3

Roberto Ansaloni, CRAY

1.Performance measurement and tuning using Cray perftools
- Performance tools for threaded and hybrid applications
- Measurement and analysis considerations
- Identification of performance issues and bottlenecks
- Tunable parameters
2. LAB(hand-on)
- Experiments using libraries on the Cray XE6 platform

Neil Stringfellow, CSCS
3. Discussion on hybrid programming best practices and misconceptions
- Identifying load balance and overhead in mutli-threaded applications
- Results and analysis of hybrid test cases
- Introduction to hyperthreading

Adrian Tate, CRAY

Cray Math Software:
4. Introduction to multi-threaded libraries
- Historical perspective
- Auto-tuning approach on Cray MPP systems
- Examples: performance benefits of auto-tuned libraries
- Evolution of threaded libraries
5. LAB (hands-on)
- Experiments using libraries on the Cray XE6 platform
6. Advanced libraries concepts
- Runtime options
- Hybrid mode libraries
- Discussion on programming and execution parameters
7. LAB (hands-on)
- Hybrid mode library usage experiments
8. OpenMP and libraries evolution for future systems
- Next generation multi-core processors
- MPP systems with accelerators (GPGPU)