Parallel Programming Languages, Libraries, Models and Notations
TimeMonday, November 13th1:30pm - 5pm
DescriptionInteractive computing has taken on new importance in many branches of science, particularly in exploratory phases, where researchers are still playing with ideas and code. Jupyter notebooks have emerged as the dominant tool for interactive computing. With the advent of Cling, C++ can be used interactively in the Jupyter framework.
Additionally, the C++14/17 standard brings significant new parallel programming capability to the C++ 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 built on C++14/17 extends it to distributed operations and increases its composability. By conforming to the standard, developers comfortable with the modern language can easily write scalable, portable parallel applications.
In this tutorial, we give a simple, Jupyter-based method to learn modern HPC-C++14/17 parallel programming, and then we show how to adapt C++ programs to modern massively parallel environments using HPX. Using hands-on examples and tool demonstrations, we show how HPX allows users to apply asynchronous concepts and active messaging techniques to gain performance and productivity in a variety of applications. The interactive environment provided by Jupyter has been effective for university students to quickly learn programming concepts.