1-4 October 2012
CET timezone
The purpose of this training is to provide a pedagogical presentation of C-C++ shared memory multicore application programming. These programming languages provide access to a substantial number of multithreading programming environments and libraries, like the native threads libraries (Pthreads in Linux-Unix, Windows threads), OpenMP, the Intel Parallel Suite (Threading Building Blocks, Cilk++, ArBB), several high level libraries and, last but not least, the new C++ norm adopted in 2011 (C++11) that integrate multithreading in the language specification.

The pedagogical objective of this training is to provide a unified presentation of the basic concepts of multithreading and shared memory programming, underlining the universality of these concepts and discussing the way in which they are declined in the different programming environments. This training assesses the focus, the strengths and the eventual weaknesses of the different programming environment, insisting on their complementarily as well as on their interoperability. Numerous examples are given on the usage of TBB or Pthreads based tools in an OpenMP environment, in order to cope with parallel contexts that are not easily handled in OpenMP.

  • Introduction to multithreading, overview of present hardware and software technologies
  • Creating and managing threads
  • Thread safe programming
  • Concurrent access to shared data: the need of mutual exclusion
  • Event synchronization of threads
  • Memory coherence and memory consistency issues. The role of memory consistency models.
  • Pthreads based library of high level synchronization tools.
  • Thread pools as high level thread management utilities. Task centric programming versus thread centric programming.
  • Operation of the OpenMP thread pool. In depth discussion of task centric programming in OpenMP.
  • OpenMP examples in SPMD programming : three real, relevant applications.
  • OpenMP examples in pipelining threads, using interoperability with Pthreads tools: two real relevant applications
  • Comments on hybrid MPI-Multicore programming.
  • The Threading Building Blocks (TBB) library. Complementarily with OpenMP and Pthreads.
  • Overview of Cilk++
  • Overview of ArBB (Array Building Blocks)
Learning outcomes
Enhanced programmer’s capabilities in application code design. Enhanced programmer's insights on threads, not multithreading languages, by focusing on parallel and concurrent patterns that occur in real applications, and by discussing useful tricks, potential pitfalls and best practices that are largely independent of the underlying programming environment

  • Experience in C programming and some very limited knowledge of C++.
  • C++ programming is not required.
Campus universitaire d'Orsay rue John Von Neumann Bâtiment 506 F-91403 Orsay cedex
Your browser is out of date!

Update your browser to view this website correctly. Update my browser now