Intensive Course on Multi-threaded Programming, Tuning and Optimization on Multi-core MPP Platforms

CSCS announces a 2 and half-day intensive course focused on multi-threaded programming, tuning and optimization and multi-threaded libraries on massively parallel processing (MPP) systems that are composed of multi-core processors.

Intensive Course on Multi-threaded Programming, Tuning and Optimization on Multi-core MPP Platforms — February 15-17

The workshop will start with a half day introduction into OpenMP, and forms the basis for a GPU programming workshop to be held from 29-31 Mar 2011.

The course syllabus will be published soon and it will be delivered by senior personnel from Cray, Roberto Ansaloni (Cray Italy) and Adrian Tate (Technical Lead of Math Software, Cray), and CSCS, Matthew Cordery, Sadaf Alam and Neil Stringfellow.

Registration deadline: February 7, 2011.


Day One (12.00 to 17.00 hrs)

12:00 – 13:30

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 Two (9.00 to 17.30 hrs)

1.      Historical perspective

  • Evolution of multi-core processors
  • Parallel computing
  • Programming and parallel programming
  • OpenMP and MPI standardization

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

3.      Parallel programming with MPI and OpenMP

  • MPI programming fundamentals
  • OpenMP programming fundamentals
  • OpenMP parallel constructs
  • Hybrid (MPI + OpenMP) programming considerations, opportunities and challenges

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

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 Three (9.00 to 17.30 hrs)

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

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

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)