Our Team

Patrick Diehl

is a faculty member at the Department of Physics & Astronomy at Louisiana State University (LSU) and a senior research scientist at LSU's Center for Computation and Technology (CCT). His research interests are computational fracture mechanics, scientific computing, and high-performance computing. Next to research, he is devoted to teaching C++ and parallel programming to students and the community.

Steven R. Brandt 

is the Assistant Director for Computational Science at the Center for Computation and Technology at LSU. His research interests include parallel programming, parallel languages and tools, science gateways, and high performance computing (HPC). He has served as PI on several grants supporting the Einstein Toolkit, a widely-used open source project for studying numerical relativity.

Hartmut Kaiser 

is a faculty member at the CS and EE departments at Louisiana State University (LSU) and a senior research scientist at LSU's Center for Computation and Technology (CCT). He is probably best known for his involvement in open source software projects, such as being the author of several C++ libraries he has contributed to Boost, which are in use by thousands of developers worldwide.  His current research is focused on leading the STE||AR group at CCT working on the practical design and implementation of future execution models and programming methods.


Course objectives

Many computational engineering codes are based-on the C++ programming language, however, many of these codes do not utilize modern C++ features, especially the features for parallel computations provided by the recent C++ 17 standard. These features can greatly simplify parallel computations using multiple cores.  In this tutorial, participants will learn how to use C++17 functions and objects to write straightforward yet fully parallelized code without the need of external tools such as OpenMP. Since the Python programming language is more commonly known by most potential attendees, the team will use Jupyter Notebooks with the Cling extension for C++ to walk attendees step-by-step through creating a fully parallelized one-dimensional finite element code. Thus, attendees can use a programming environment they are familiar with. Our examples will use the HPX framework, because standard compiler distributions often lack complete support for this feature, and because parallelism in the standard library does not work in Cling. 

In the second half of the tutorial, the team will demonstrate how users can employ nearly the same syntax to distribute these codes across a cluster. We will use the HPX library to provide the support needed to manage a distributed application. The example code, the solutions, and the lecture slides will be available on GitHub, so attendees can use them after the short course.  After the short course, attendees will have learned about modern C++ features and how to run a parallel and distributed one-dimensional finite element solver using the mechanics built-in in the C++ 17 standard.


Course Audience

Graduate students or postdocs


Scientific/Technical Areas Covered/ Course Content

(5) Computational Solids and Structural Mechanics and (6) Scientific High-performance Computing. However, the course is of interest for all researchers running simulations using the C++ language. We chose the finite element method as our example, since most participants know this fundamental method.


Provisional schedule

mid-day/full day expected


Register

If you want to register, click to the link and fill out the registration form