Introduction to Parallel Programming with HPX

Vacancies available
CHF 160.00

The Swiss National Supercomputing Centre is pleased to announce that the "Introduction to Parallel Programming with HPX" course will be held from October 17-18, 2019 at CSCS in Lugano, Switzerland.


The aim of this course is to introduce the participant to the HPX library for parallelism and concurrency and enable them to write applications using HPX. The library offers a C++ standards conforming API for task based programming, this is introduced and explained in detail with examples of DAG creation using Futures. Integrating futures with CUDA code and distributed applications. Mixing single node HPX with existing MPI based code and using executors for task placement.

Target Audience

The course is intended for confident C++ programmers - HPX makes use of templates in its API and the HPX internals use template metaprogramming methods to achieve function dispatch. Some knowledge of these techniques is an advantage. User may be interested in attending both the C++ training course (Mon-Wed) and the HPX course (Thu-Fri) back to back. The attendees must have a valid affiliation to an academic institution.


- Dr. John Biddiscombe, CSCS

John Biddiscombe holds a BEng in Electronic Engineering and a PhD in Software Engineering from Warwick University. He worked for ten years at the Rutherford Appleton Laboratory on Digital Signal Processing methods for altimetry and remote-sensing radar, radio propagation around 3D objects and visualization of 3D fields and datasets. For two years, he developed volume rendering and image processing software for medical applications in healthcare and has worked since 2004 at the Swiss National Supercomputing Centre (CSCS), firstly as a visualization scientist specializing in VTK and parallel/distributed analysis for HPC with ParaView, and more recently as a computational scientist specializing in task-based programming with the HPX library.

- Thomas Heller, STE||AR Group

Thomas recently received his PhD in Computer Science from Friedrich-Alexander-University Erlangen-Nürnberg. He worked for 7 years as a research assistant at the Chair for Computer Architecture, Friedrich-Alexander-University Erlangen-Nürnberg. His main responsibility was to work on research projects, federal funding as well as part of H2020. Within these projects, he successfully deployed HPX as the underlying technology as well as continuously improving HPX itself. Since 2019, he is working as a software developer at Exasol to work on programming a distributed, highly parallel database backend.

- Mikael Simberg, CSCS

Mikael Simberg is a software engineer at the Swiss National Supercomputing Centre (CSCS). He has a master's degree in operations research and computer science from Aalto University in Finland. He has worked since 2017 at CSCS on improving HPX for shared-memory parallelism and exploring task-based programming in modern C++.

Tentative Agenda

Thursday, October 17, 2019

10:00 - 10:30     Introduction to HPX part I - Concepts, Task-based programming
10:30 - 10:45     Break
10:45 - 12:15     Introduction to HPX part II - API in detail - Futures, Executors, Channels, Thread Pools, Distributed HPX
12:15 - 13:00     Lunch
13:15 - 14:45     Options and building HPX “Hello World”. Hands-on examples/exercises - Writing Continuations and getting Future-based apps running
14:45 - 15:00     Break
15:00 : 16:30      Advanced examples/exercises: distributed applications

Friday, October 18, 2019

09:00 - 10:30     Stencil example, from serial to parallel and distributed
10:30 - 10:45     Break
10:45 - 12:15     Debugging and profiling: practical tips and hands-on exercises
12:15 - 13:00     Lunch
13:15 - 14:45     Resource management: thread pools, HPX + MPI, hands-on exercises
14:45 - 15:00     Break
15:00 : 16:30      Advanced topics: CUDA. Future directions


All participants must register for the course. The registration fee includes coffee breaks and lunches throughout the two day course.

Course Fee: 160 CHF

Deadline for registration: Wednesday, October 9, 2019

If needed, CSCS can only realease attendance certificate!

Kindly note that the course can take place only if there are sufficient confirmed registrations received by the deadline. The minimum number of participants is 8.

Please contact John Biddiscombe (john.biddiscombe@cscs.ch) for questions related to the course content and reception@cscs.ch for questions related to the event logistics. 

Kindly note that no parking space is available at the Swiss National Supercomputing Centre. The closest bus stop to the centre is Lugano, Stadio. From Lugano railway station, you should take bus number 4 or 6.

Suggestions regarding travels and accommodation are available here.

You are encouraged to travel by public transportation. There is a Park & Ride Resega parking lot, within five minutes walk from CSCS.

We look forward to welcoming you at CSCS!