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.

Compiling and Running Blazemark

By Shahrzad Shirzad

Blazemark is the benchmark suite for Blaze library. In order to compile and run Blazemark with HPX backend, take the following steps:

  1. Change the Configfile at blaze/blazemark by filling in the CXX=, CXXFLAGS=, LIBRARY_DIRECTIVES= fields in the Configfile:
    This is an example of the configurations used for Clang:
    # Compiler selection
    CXX="clang++"
    # Special compiler flags
    CXXFLAGS="-O3 -march=native -std=c++17 -stdlib=libc++ -DNDEBUG -fpermissive -DBLAZE_USE_HPX_THREADS -isystem /hpx/install/path/include -Wl,-wrap=main"
    # Library settings (optional)
    # In some cases it might be necessary to specify additional library paths and add additional
    # libraries. This can be done via this setting.
    LIBRARY_DIRECTIVES="-L/hpx/install/path/lib/ -lhpx -rdynamic /hpx/install/path/lib/libhpx_init.a -ldl -lrt -lhpx_wrap - L/boost/install/path/lib -lboost_system -lboost_program_options"
  2. ./configure Configfile
  3. make benchmark_name
  4. ./bin/benchmark_name

Notes:

  • You can change vector or matrix sizes to run the benchmark on through the benchmark_name.prm file located at /blaze/blazemark/params folder.

For more information on available benchmarks, command line parameters, and also the list of supported libraries please visit Blazemark.

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.

Compiling and Running BlazeTest

By Shahrzad Shirzad

BlazeTest is a testing tool provided by Blaze. In order to compile and run BlazeTest with HPX backend, take the following steps:

  1.  Change the Configfile at blaze/blazetest by filling in the CXX=, CXXFLAGS=, LIBRARY_DIRECTIVES= fields in the Configfile:
    This is an example of the configurations used for Clang:
    # Compiler selection
    CXX="clang++"
    # Special compiler flags
    CXXFLAGS="-O3 -march=native -std=c++17 -stdlib=libc++ -DNDEBUG -fpermissive -DBLAZE_USE_HPX_THREADS -isystem /hpx/install/path/include -Wl,-wrap=main"# Library settings (optional)
    # In some cases it might be necessary to specify additional library paths and add additional
    # libraries. This can be done via this setting.
    LIBRARY_DIRECTIVES="-L/hpx/install/path/lib/ -lhpx -rdynamic /hpx/install/path/lib/libhpx_init.a -ldl -lrt -lhpx_wrap - L/boost/install/path/lib -lboost_system -lboost_program_options"
  2.  ./configure Configfile
  3.  make essentials
  4.  ./run

GSoC 18: Final Documentation for a C++ run time replacement

By Nikunj Gupta

A C++ Runtime Replacement

Abstract

A user can make use of the HPX functionality only after initializing the HPX Runtime System. To initialize the user has to call thehpx::init function with valid parameters and an entry point for the HPX runtime system (defaulting tohpx_main if none provided).

My GSoC project was to integrate the HPX runtime system with C++ runtime system i.e. to make all HPX features directly available from int main. To give a clear picture, this was already pre-implemented using a C++ macro #define main hpx_startup::user_main. This method, however, is not robust and can result in unexpected errors. The project, therefore, involved researching various ways to integrate the two seamlessly and make sure it is robust at the same time. I was able to integrate the runtime systems for machines running Linux or Mac OSX.

GSoC 2018 Participants Announced!

We can now announce the participants in the STE||AR Group’s 2018 Google Summer of Code! We are very proud to announce the names of those 7 students who this year 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