We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

An Environment for Interactive Parallel Programming with MPI and OpenMP

Formal Metadata

Title
An Environment for Interactive Parallel Programming with MPI and OpenMP
Title of Series
Number of Parts
637
Author
Contributors
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
In high-performance computing (HPC), interactive access to HPC systems and the ability to perform experiments in rapid-prototyping environments are getting more important. Jupyter notebooks have become a popular tool to create and share documents that contain narrative text, visualizations and live code, and the xeus-cling kernel provides support for native C/C++ code via the Cling interpreter. In this talk, we will present how we extended these technologies to support parallel programming with MPI and OpenMP, the de-facto standards in HPC. In the context of parallel programming, the resulting environment supports rapid prototyping and e-learning equally well. We will present an overview about its capabilities, demonstrate selected use cases and resources that we developed. In addition, we incorporated support for runtime correctness checking of MPI and OpenMP parallel programs. We will explain how we added support to write out binary programs from Jupyter notebooks and how to run code under the control of existing open source correctness tools. In the technical part of this talk, we will focus on two contributions to xeus-cling that are most important for our use cases: support for printf and the ability to launch MPI programs. The implementation of the printf family relies on wrapper functions that are injected into LLVM's just-in-time (JIT) compilation. To launch MPI programs, we extended xeus-cling to write out binary programs based on the incremental abstract syntax tree (AST) that Cling builds internally. We will also discuss why we chose this path over teaching the interpreter to start multiple processes.