Most readers have probably heard of the multicore revolution and the increasing impact that multicore processors are having on the way software needs to be written.

The possibility of gaining additional processing power through frequency scaling has diminished greatly over the last few years, while at the same time Moore's law continues to increase the number of transistors that can be put on a chip. Therefore processor manufacturers have found an alternative way to use spare transistors, and that is by including additional processing cores in a single processor package.

This relatively new feature of modern computers implies a different model for writing and maintaining software than the one we have been using up until now. Today we can usually get away with adding a new process to the system and throwing in more memory as the number of cores grows – at CERN this is typically 2 GB per core. Very soon, when the number of cores in a single package reaches 16, 32 or more, adding more memory will become very costly, and the need to change the approach to programming will become instantly and painfully apparent.

While many of the challenges ahead are well known from basic university parallelism-related classes, some of them are quite tricky and difficult to meet, even for experienced programmers. With non-expert CERN and high-energy physics (HEP) programmers in mind, CERN openlab and Intel have teamed up to bring you a workshop on multithreading and parallelism, concentrating on the key software development differences between the linear and parallel worlds.

Spring workshop

The first workshop took place on 31 May and 1 June at CERN. We had the pleasure of receiving two experienced teachers from Intel, Herbert Cornelius and Hans-Joachim Plum, who will probably also join us for the second workshop in October. At the spring workshop, the first day comprised a series of lectures and the second a hands-on lab.

Day one began with Cornelius explaining the reasons for holding the workshop: the push towards multicore and Intel's plans for the next few years, which include several upcoming generations of 86 CPUs. The participants asked a range of questions, especially about the classified Intel 80-core processor prototype described by Cornelius. Some common parallelism and scalability issues were also presented. In the afternoon Plum spoke about OpenMP, POSIX threads and Intel's Threading Building Blocks in more detail, going as far as describing the peculiarities of individual API calls.

On day two the participants were divided into pairs and given access to several of CERN's multicore machines to work on. Cornelius and Plum demonstrated the powerful abilities of Intel's multithreading debugging software, Thread Checker and Thread Profiler.

Another useful Intel product, a performance analyser called VTune, was also described but not demonstrated. It is worth mentioning that openlab is actively involved in a collaboration with Hewlett-Packard to develop pfmon, an open-source tool for low-level performance monitoring, and this has some of the same functionality as the Intel tool. During several exercises pfmon was used as a replacement for VTune, to show certain non-obvious side effects of incorrect thread programming.

Because the attendees on day two were familiar with POSIX threads, the instructors concentrated mostly on OpenMP-related exercises. The participants were asked to write multithreaded code possessing certain characteristics and then debug the code as needed.

We were pleased to hear the teachers say later that they considered the audience at CERN to be very quick at grasping the concepts covered. Feedback received after the first workshop will heavily influence the shape of the next event.

The second workshop

It was a surprise that so many people subscribed to the first workshop. Given the huge interest and the lack of available seats, openlab has decided to turn the workshop into a semi-regular event that will gradually gain more and more CERN-specific content with time.

The next workshop will take place on 4–5 October at the CERN Meyrin site. Fifty places will be available for the first day, and 40 places for the second day. The programme will be similar to the last workshop but will be enhanced with more CERN-specific topics. On day one, the instructors from Intel will speak about the future challenges of multicore architectures and processing, as well as general parallelism principles. Some multithreading technologies, such as OpenMP and POSIX threads, will also be covered again. In addition it is hoped that several CERN scientists will give an insight into the most prominent multithreading technologies that are deployed at CERN, and will highlight the relationship between the multicore revolution and popular CERN software.

On day two, participants will be able to use the knowledge gained during the first day and get acquainted with several Intel tools that are used for developing and debugging multithreaded applications. Moreover, several lab assignments concerning OpenMP and POSIX threads will be given out in the afternoon, with the instructors at hand to guide the participants through the exercises. While some of the exercises will be quite advanced, rest assured that day two is being prepared with non-expert users in mind. As usual, the best places to look for announcements are the openlab webpage and the internal CERN webpage.


Multicore technologies began to dominate everyday computing some time ago. It is our joint responsibility to harness this free processing power and use it to the limit. Let us hope that during this time of change in the computing landscape, CERN and HEP will harvest the fruit of this new technology to its fullest extent.