HPX Community Survey

The HPX Community Survey was conducted to gauge user experiences regarding usefulness and functionality, purpose of use, and ease of use of HPX.  Submissions were collected through 03/05/2020, and 33 total responses were received.

The findings in this survey will serve as a valuable tool as HPX – it’s breadth and functionality – continues to grow.  HPX administrators and the newly instated PMC will consider the concerns presented in the results as system changes are made. The positive input is also very useful, pointing to processes that should remain consistent moving forward.

Basic Use

Poll results indicate the majority of respondents, 73%, currently use HPX. When asked where users first heard of HPX, though the results were many, nearly half of those polled were informed through a colleague or at a conference.  Other responses varied, but included The STE||AR website, YouTube, and Reddit. Though 21% of those polled knew of the existence of HPX for as long as 5-10 years ago, only 12% have been using the system for that long. With another 12% having never used HPX at all.

According to the survey, task-based programming is the main feature of HPX engaged by users, at 96%.  Distributed HPX and Parallel algorithms are also widely used at 64% and 54% respectively.  The least used feature, at 3.6% is Task to Hardware binding. The majority of respondents employ HPX for work-related projects and tasks at 83%.  Hobbyists tally in at 35% of those polled.Those employed by Academic institutions and students make up 50% of HPX users.  36% are in private industry with less than 10% self-employed.

Usefulness, Understanding and Changes

When asked to rank the usability of HPX on a scale of 1-5, with 1 being “Unusable” and 5 being “Great,” 82% of respondents rated a 4 or 5. And when asked on a scale of 1-5 whether HPX is getting better (5) or worse (1), 89% of those polled selected 4 or 5. 

Respondents were asked what they most appreciate about HPX; many remarked on HPX’s C++ standardization and compliance. One commented, “Great technology with good API. Standards compliance. Parallelization made easy.” Conversely, when asked what they liked least, there were a few who also stated C++.  One comment simply being “C++ is a horrible language.”  As it were, there were other concerns, several regarding lack of documentation, others on complexity or difficulty integrating with an existing application. 

These concerns went hand-in-hand with the many of the comments pointing to improvements that could be made.  Requests for more complete documentation being a repeated concern.  Other suggestions included offering additional and optional safety features or a more intelligent scheduler. When asked why a user might stop using HPX, one again pointed to lack of documentation while another pointed to the difficulty in learning how to work within the system.

Those polled were next asked to rate HPX’s documentation across several topics on a 5-point scale, with 5 being excellent.  The topics were as follows:

  • What does HPX do?
  • Getting started, compiling, installing
  • Task-based programming
  • Parallel algorithms
  • Components, actions
  • Debugging
  • Profiling
  • Low-level functionality
  • API reference
  • Examples and tutorials

Of these, topics the first 4 scored best with an overall “Good”/4 rating, with “What does HPX Do?” and “Getting started, compiling, installing” having the highest number of “Good” responses.  The first 4 topics also received the largest number of “Excellent”/1 responses, though not a majority. Conversely, topics “Debugging,” “Profiling” and  “Low-level functionality” received a majority of “Severely Lacking”/2 ratings.  These 3 topics were also given a few 1 ratings, meaning users could find no documentation on these topics at all.

Regarding specific items that users would like to see documented, responses varied greatly.  Two users polled requested documentation and support for the parcelport system.  Another stated that documentation on integration with existing code would be beneficial.  One user suggested that the need for documentation varies depending on the task and the week, typically on low-level topics.

HPX Community

When asked if users have felt welcomed into the HPX community, the response was overwhelmingly “Yes,” at 80%, with no “No” responses.  The remaining 20% haven’t formed an opinion on this question yet. Results were split across categories when asked a preference of where to have the HPX community.  Answers included: A mailing list, IRC, Slack, Matrix and Discord. 

Regarding how users interact with each other within the HPX community, the majority, at 68%, is through GitHub, with other popular responses being through the IRC channel on Freenode or through direct contact with developers. In response to whether the IRC channel is easy to join, most replied “Yes,” at 40%, another 33% did not care, and only 7% experienced difficulty and did not join because of it.

Contributions to HPX

Of those polled, 41% of users have contributed to HPX on multiple occasions.  28% have contributed once.  Of the remaining 31%, some would like to contribute but cannot find time, others find HPX too intimidating to contribute, and still others have no interest.

When asked what changes specifically would make contributing easier for users, some again pointed to additional documentation.  Another request was for “Smaller tasks for first timers.”  One other user pointed back to the previous response of too little time personally, no matter what changes might occur in the system.

HPX users were asked how they might contribute to HPX in “non-code” ways.  Responses were few but included “documentation,” and starting an “HPX study group or meetup for intermediate C++ programmers.”

The final question asked respondents to share any additional information they choose.  Here is one user’s response: “All in all a very good piece of tech. Needs more approachability, especially work on documentation in many ways. Keep up the work. Despite all shortcomings I love it!”

We’d like to thank all those who took the time to participate in the survey; please know that your opinions and responses are important to us.  HPX could not function without the community built around it.  If you have any questions about the survey or further concerns, please contact us at hpx-users@stellar.cct.lsu.edu

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.

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 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.

HPX 1.2.0 Released!

The STE||AR Group is proud to announce the release of HPX 1.2.0. This release is the first in our more frequent release schedule. We are aiming to produce one release every six months in an effort to get new features and stable releases out to users more quickly. As a result this release is smaller than many previous releases, but nevertheless contains many important improvements. This release includes among others performance improvements, a new implementation of hpx_main.hpp, scheduler hints, and many stability improvements. This release also removes many previously deprecated features. Make sure you read the full release notes to see which deprecated features were removed.

Thank you to everyone who has contributed from all over the world!

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

HPX 1.1.0 Released!

The STE||AR Group is proud to announce the release of HPX 1.1.0, 10 years after the first commit! This release contains 2300 commits since the previous release and has closed over 150 issues. HPX 1.1.0 brings users full control over how HPX uses processing units, improvements to parallel algorithms and many other usability improvements. This release would not have been possible without the help of all the people who have contributed bug reports, questions, testing, code and improvements to the documentation. Thank you!

Download the release using the links below, from our download page, or from our GitHub page.