The 36th main summer school  
19-30 August, Nicosia, Cyprus  

Software Design in the Many-Cores Era




Lecture 1

Physics and Computing Challenges to Experiment Software
Even though the miniaturization of transistors on chips continues like predicted by Moore's law, computer hardware starts to face scaling issues, so-called performance 'walls'. Probably, the best known is the 'power wall', which limits clock frequencies. Amongst others, a way of increasing processor performance remains now to integrate many cores in the same chip. At the same time, the upcoming LHC upgrade will increase the required CPU power drastically. Both problems challenge the current way of software design in high energy physics (HEP). Developers in high energy physics are forced to re-think their ways of software design and need to move to massively parallel applications. This lecture will explain the current HEP software design, the hardware and physics issues that need to be tackled, and possible approaches to achieve the required level of parallelization.


Lecture 2

Concurrent Programming in Action I
This and the following lecture will explain the concepts behind various parallelization methodologies.
First, a theoretical introduction into threads, thread-safety and concurrent data access will be given. As the new C++ standard (C++11) now provides build-in support for parallel programming, the new features of this standard will be shown. Finally, concrete solutions for the theoretical problems will be discussed.


Lecture 3

Concurrent Programming in Action II
The focus of this lecture lies in concurrent programming based on the 'task model', using TBB as implementation library. There will be a deeper look into concurrent data access and lock and lock-free data formats. Using the learned concepts, we will look again at the data challenges from lecture 1 and see, how a future-proof software design might look like.


Exercise 1

Exercise 2

Exercise 1 & 2

The exercises will cover the topics of lectures 1 and 2 at a hands on basis, based on C++11 and TBB. It covers examples for the new C++11 functionality related to threads and thread safety. In addition there will be examples for concurrent access to data, lock and lock-free data structures, and task based programming.






  • C++ Concurrency in Action Practical Multithreading Anthony Williams February, 2012 | 528 pages ISBN: 9781933988771

  • Intel Threading Building Blocks: Outfitting C++ for Multi-Core Processor Parallelism, O'Reilly



Copyright CERN

Print version