HPX SC15 Tutorial

Welcome to the HPX SC15 Tutorial page!  We will keep this site up to date with information about our SC15 Tutorial.


Title: Massively Parallel Task-Based Programming with HPX
Date: November 15, 2015
Location: Room: 17A
Time: 8:30am-5:00pm
Supercomputing Event Page: Massively Parallel Task-Based Programming with HPX


The C++11/14 standard brings significant new parallel programming capability to the language with the introduction of a unified interface for asynchronous programming using futures. This style of programming enables fine-grained constraint-based parallelism, and avoids many load-balancing issues. HPX is a system which builds upon the C++11/14 standard, extending it to distributed operations and increasing its composability. By conforming to the standard, participants will learn parallel concepts in a seamless and familiar environment. In this tutorial, participants will learn first-hand the capabilities of these revolutionary tools. First, we will introduce participants to modern C++11/14 parallel programming, and then we will show how to adapt C++ programs to modern massively parallel environments using HPX. Then through presentations, hands-on examples, and tool demonstrations we show how this emerging runtime, HPX, allows users to use asynchronous concepts and active messaging techniques to gain performance and productivity in a variety of applications.


  1. HPX: a New Paradigm – A high level overview of the kinds of parallel programming problems C++11/14 and HPX were designed to address. The presentation will focus on use of futures, including waiting for a future, chaining subsequent actions to a future, and composing futures both within and across machines.
  2. An Introduction using Lua – This section of the tutorial will demonstrate HPX concepts by utilizing a Lua wrappers library. Examples of a simple serial Lua code will be converted, step by step to run in parallel on a single machine, and then in a distributed environment. We intend for this part of the tutorial to explain the mindset behind HPX applications without necessarily needing to be intimately familiar with the C++11/14 standard. Interactive code execution will be made available through a web site, as well as through a virtual machine.
  3. Digging into the C++ – This section of the tutorial will start with teaching the basic C++11/14 concurrency mechanisms, then branch out to writing HPX applications using simple serial code examples (similar to the Lua code) which will be transformed into fully parallelized, distributed applications.
  4. GPUs and Xeon Phis – Here we will demonstrate how the HPX concepts introduced in the previous sections can be seamlessly integrated with the use of accelerators and co-processors. We will demonstrate how by simply recompiling the application on the device you can run HPX code on the Xeon Phi. Additionally, we will introduce the HPXCL library which enables users to take advantage of the GPU, the CPU or the Phi by integrating OpenCL kernels into their codes and distributing them across a heterogeneous machine.
  5. Performance Analysis of HPX – Finally, we will introduce the TAU Performance System and the policy engine APEX for instrumentation of the applications and runtime. The hands-on session will include an exercise for performance assessment using these performance evaluation tools.

Tutorial Slides:

Below are slide decks used in our HPX tutorial

Hartmut KaiserHPX: a New ParadigmParallelism in C++
Steven BrandtAn Introduction Using LuaScripting HPX
Alice KonigesNERSC Introduction SlidesNERSC Introduction
Thomas HellerDigging into the C++,
GPUs & Xeon Phis
Using HPX with C++
Sameer Shende,
Kevin Huck
Performance Analysis of HPXPerformance Analysis of HPX using APEX and TAU


Promotional Video:


GD Star Rating
Be Sociable, Share!

Leave a Reply

Your email address will not be published. Required fields are marked *