GSoC 2020 Participants Announced!

It is time to announce the participants for in the STE||AR Group’s 2020 Google Summer of Code! We are very proud to announce the names of those 5 students this year who will be funded by Google to work on projects for our group.

These recipients represent only a handful of the many excellent proposals that we had to choose from. For those unfamiliar with the program, the Google Summer of Code brings together ambitious students from around the world with open source developers by giving each mentoring organization funds to hire a set number of participants. Students then write proposals, which they submit to a mentoring organization, in hopes of having their work funded.

Below are the students who will be working with the STE||AR Group this summer listed with their mentors and their proposal abstracts.


Sayef Azad Sakin, University of Arizona


Kate Isaacs, University of Arizona

Project: Time Series Updates for Traveler

Traveler-Integrated is a platform for performance visualization of parallel runtimes such as HPX. The interface allows accessing multiple datasets, from different executions. However, there are several improvements that can be made to the interface in terms of managing large numbers of files (e.g., from historical regression runs) and organizing windows to handle comparison of runs. In this project you will work on the Javascript front end to implement this interface, refining the design through user feedback.


Ioannis Gonidelis, TS Aristotle University of Thessaloniki


Hartmut Kaiser, Louisiana State University

Thomas Heller, Exasol

Project:  Adapt HPX range-based parallel algorithms in order to expose a range based interface according to latest Ranges

Our parallel algorithms currently expect for the begin iterators to have the same type as the corresponding end iterators. The latest changes to the C++ Standard allow for those to be different. This enables the use of the algorithms with more general range abstractions (i.e. begin-iterator/sentinel pairs such as C-style strings). We have created a list of algorithms that need to be changed to support different types for the begin/end iterator pairs (see here). There you can also see what algorithms have already been adapted, which may help in understanding the task.


Pranav Gadikar, Indian Institute of Technology Madras


Patrick Diehl, Louisiana State Univesrity

Prashant J Kumar, UT Austin

Project:  Domain decomposition, load balancing, and massively parallel solvers for the class of nonlocal models

Peridynamics is used to model cracks and fractures in materials. In recent years there have been several numerical approximations proposed for peridynamics. Peridynamics is a nonlocal model, i.e. to compute force/strain/energy at a point, one has to look at the neighbors of a point within a finite radius. A code utilizing the parallel algorithms and futurization within HPX for a single shared memory node is available. This code should be extended with a domain decomposition for computations on several nodes. Here, the challenge would be to perform an efficient load balancing of the domain partitions. In case of damage, the computational costs in the domain where the damage occurs in the material decreases. In this project, an efficient algorithm which detects where the computational costs are decreasing and how to redistribute the domains such that load is balanced should be developed.


Weile Wei, Louisiana State University


John Biddiscombe, Swiss National Supercomputing Center

Mikael Simberg, Swiss National Supercomputing Center

Project:  Concurrent Data structure Support

STL containers such as vectors/maps/sets/etc are not thread safe. One cannot safely add or remove elements from one of these containers in one thread, whilst iterating or adding/removing in another thread without potentially catastrophic consequences (usually segmentation faults leading to eventual program failure). Some work has begun on implementing concurrent structures in HPX, a concurrent unordered map with reader/writer lock and a partial implementation of concurrent vector exist, but they have not all been completed, do not have unit tests and need to be unified into an hpx::concurrent namespace. A number of libraries implementing thread safe (sometimes lockfree) containers already exist that can be used for ideas and where code uses a boost compatible license can be integrated into HPX. The aim of the project is to collect as much information and as many implementations of threads safe containers and create or integrate them into the HPX library.


Mahesh Kale, Indian Institute of Technology Roorke


Nikunj Gupta, Indian Institute of Technology Roorke

Parsa Amini, Louisiana State University

Project:  Pip Package for Phylanx

Phylanx relies on many external libraries which makes the building process tedious and error prone, especially to the target audience of the software- domain scientist. The goal of this project is to automate the build process of Phylanx by creating a distribution package. The distribution package should build and install Phylanx and its requirements through Python’s pip package manager.

GSoD Final Report

By Rebecca Stobaugh.

We’ve reached the end of Google’s Season of Docs, and we’ve accomplished a lot in the past three months. My initial proposal was to work on three sections of the manual, and we have far exceeded our goal, managing to make changes to twelve different sections of the documentation. The majority of the work I’ve done has consisted of cleaning up grammatical errors and improving sentence structure. I have also added a style guide to the wiki, which should help standardize future changes to the documentation. The style guide can be found in the “HPX Source Code Structure and Coding Standards” wiki document under the section “Documentation Style Guide”. For a complete list of my pull requests during Season of Docs, please see here. To view my changes to the wiki, please see here.

Announcing HPX’s Season of Docs

By Rebecca Stobaugh

HPX was recently selected to be part of Google’s Season of Docs (GSoD), a program designed to improve the documentation of open source software. While the STE||AR Group has created extensive documentation for HPX, this documentation has been written by several different people, which has led to some inconsistencies and awkward organization. I am a technical writer and English PhD student who has been selected to edit and streamline HPX’s documentation. My goal is to clean up the content, concentrating on both grammatical issues and design concerns, to create a more cohesive, user-friendly product. My primary focus will be on two sections of the STE||AR Group’s instruction manual: “HPX Build System” and “Launching and Configuring HPX Applications.” If time allows, I will also revise the “Why HPX” page, with an emphasis on condensing and trimming repetitive content.

You can read my GSoD proposal here.

Trip Report: ICML 2019

By: Bita Hasheminezhad

A few weeks ago, I had the opportunity to attend the International Conference on Machine Learning (ICML) which is the premier gathering of professionals dedicated to the advancement of machine learning. Thirty-Sixth ICML was held on June 9th to 15th at the Long Beach Convention Center.

HPX 1.3.0 Released!

The STE||AR Group is proud to announce the release of HPX 1.3.0! This release focuses on performance and stability improvements. Make sure to read the full release notes to see all new and breaking changes. Thank you once again to everyone in the STE||AR Group and all the volunteers who have provided fixes, opened issues, and improved documentation.

Download the release from our download page, or GitHub page.

HPX accepted for Google Season of Docs 2019

This year Google is organizing for the first time Google Season of Docs (GSoD). Like Google Summer of Code (GSoC) the program aims to match motivated people with interesting open source projects that are looking for volunteer contributions. GSoD, however, aims to improve open source project documentation, which often tends to get less attention than the code itself. We recognize this all too well in the HPX project. For this reason, we decided to apply for GSoD and can now proudly announce that HPX has been selected as one of 50 projects participating in this year’s GSoD!

This means that we are now looking for motivated people to help us improve our documentation. If you have some prior experience with technical writing, and are interested in working together with us on making the documentation of a cutting edge open source C++ library the best possible guide for new and experienced users, this is your chance. You can read more about the program on the official GSoD home page. We’ve provided a few project ideas on our wiki, but you can also come up with your own. Our current documentation can be found here.

The deadline for technical writer applications is June 28. Come talk to us about your ideas and your application on our mailing list, IRC, or Slack. We’d love to hear from you!

HPX documentation now uses Sphinx

With the release of HPX 1.2.0 we moved from a Boostbook-based documentation system to Sphinx. The latest documentation is now hosted on GitHub pages and can be found here.

There were multiple reasons for moving to a Sphinx-based documentation setup:

  • Modern look: the Boostbook-based documentation used awkward, non-responsive styling
  • Search: Sphinx natively supports search which makes it much faster to find what you’re looking for in the documentation
  • Table of contents in sidebar: this also helps navigating the documentation more easily
  • More familiar markup with reStructuredText

While the above are mostly visual reasons for moving to Sphinx, we used the opportunity to restructure the documentation at the same time. The first page of the documentation now tries to guide new and old users to sections that they might be interested in. For new users there is a quick start guide since we know that starting out with HPX can often be a big hurdle (to help with that there are also HPX packages available on Fedora). Our examples have been labeled with what you will learn by reading through the examples. For more advanced users the comprehensive manual has been restructured in a more logical way to start from getting and building HPX, to writing single-node HPX applications, multi-node HPX applications, and finally to optimizing and debugging applications. We’ve also added a new section for developers getting started with HPX. A less noticeable feature is that we link key concepts to our terminology page. Next time you see a term you haven’t seen before you’ll hopefully be able to just click the word to get an explanation.

We hope you enjoy the new documentation and would love to hear your feedback on it!

HPX meets Fedora

With the release of HPX 1.2.0, we added support of HPX to the offical Fedora updates-testing repository. Following packages are available on Fedora 28/29

We provide HPX compiled with the GNU compiler collection, with the OpenMPI compiler, and the MPICH compiler.  The hpx-devel packages contains the header files and he hpx-*-examples package contains all the examples compiled with the respective compiler.  The purpose of these packages is educational and we hope to lower the entrance point to experiment with HPX. For performance measurements we recommend to compile HPX on the used hardware.