This summer the STE||AR Group was proud to mentor four students through Google’s Summer of Code program. These students worked on a variety of projects which helped improve our software, HPX. This Library is a distributed C++ runtime system which supports a standards compliant API and helps users to scale their applications across thousands of machines. The improvements that were merged into the code base will help our team and users of HPX around the world. A summary of our students’ projects can be found below:
Parsa Amini – HPX Debugger
Developing better distributed debugging tool is essential to increase the programmability of HPX. Parsa’s project, Scimitar, aims to facilitate the debugging process for HPX programmers by extending the features of an existing debugger, GDB, and complement it with new commands for easier switching between localities across clusters, HPX thread debugging, awareness of internal HPX data structures, and semi-automated preparation for distributed debugging sessions. Additional functionality such as locating an object and viewing the queue information on each core is provided through using API provided by HPX itself. His work can be found and downloaded on the Scimitar repository on Github.
Aalekh Nigam – Implement a Map/Reduce Framework
This project aimed to expose a Map/Reduce programming model over HPX. During the summer, Aalekh was able to develop a single node implementation of HPXflow, a map/reduce programming model, and laid the groundwork for the further multi-node version with database support. Although the initial task was limited to implementing the Map/Reduce model, he was also able to implement improved dataflow model as well.
Minh-Khanh Do – Working on Parallel Algorithms for HPX::Vector
Minh-Khanh’s task was to take the parallel algorithms and add the functionality required to work on the segmented hpx::vector. Under his mentor John Biddscombe, he implemented the segmented_fill algorithm, which was successfully merged into the main codebase. Additionally, Minh-Khanh implemented the segmented_scan algorithm which includes inclusive and exclusive_scan. These changes were also included in a pull request. Using the segmented scan algorithm it is possible to perform tasks such as evaluating polynomials and to implement other algorithms such as quicksort (as described here).
Satyaki Upadhyay – Plugin Mechanism for thread schedulers in HPX
In HPX, schedulers are statically linked and must be built at compile-time. Satyaki’s project involved converting this statically linked scheme into a plugin system which would allow arbitrary schedulers to be dynamically loaded. These change bring several benefits. They provide a layer of abstraction and follows the open/closed principle of software design as well as allowing developers to write their own custom schedulers while conforming to a uniform API. The project proceeded in two steps. The first involved the creation of plugin modules of the schedulers and registering them with HPX. The second step was to implement the loading and subsequent use of the chosen scheduler.
We would like to thank our students and mentors for the time that they have contributed to HPX this summer. In addition, we would like to thank Google for the opportunity that they have provided the STE||AR Group to work with developers around the globe as well as the ability for students to interact with vibrant open source projects world wide.
You can find another version of this post on the Google Open Source Blog.