Multi-threaded Programming, Tuning and Optimization on Multi-core MPP Platforms, 15-17 February 2011

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)