HPX V0.9.6 (Jul 30, 2013)#

We have had over 1200 commits since the last release and we have closed roughly 140 tickets (bugs, feature requests, etc.).

General changes#

The major new features in this release are:

  • We further consolidated the API exposed by HPX. We aligned our APIs as much as possible with the existing C++11 Standard and related proposals to the C++ standardization committee (such as N3632 and N3857).

  • We implemented a first version of a distributed AGAS service which essentially eliminates all explicit AGAS network traffic.

  • We created a native ibverbs parcelport allowing to take advantage of the superior latency and bandwidth characteristics of Infiniband networks.

  • We successfully ported HPX to the Xeon Phi platform.

  • Support for the SLURM scheduling system was implemented.

  • Major efforts have been dedicated to improving the performance counter framework, numerous new counters were implemented and new APIs were added.

  • We added a modular parcel compression system allowing to improve bandwidth utilization (by reducing the overall size of the transferred data).

  • We added a modular parcel coalescing system allowing to combine several parcels into larger messages. This reduces latencies introduced by the communication layer.

  • Added an experimental executors API allowing to use different scheduling policies for different parts of the code. This API has been modelled after the Standards proposal N3562. This API is bound to change in the future, though.

  • Added minimal security support for localities which is enforced on the parcelport level. This support is preliminary and experimental and might change in the future.

  • We created a parcelport using low level MPI functions. This is in support of legacy applications which are to be gradually ported and to support platforms where MPI is the only available portable networking layer.

  • We added a preliminary and experimental implementation of a tuple-space object which exposes an interface similar to such systems described in the literature (see for instance The Linda Coordination Language).

Bug fixes (closed tickets)#

Here is a list of the important tickets we closed for this release. This is again a very long list of newly implemented features and fixed issues.

  • Issue #806 - make (all) in examples folder does nothing

  • Issue #805 - Adding the introduction and fixing DOCBOOK dependencies for Windows use

  • Issue #804 - Add stackless (non-suspendable) thread type

  • Issue #803 - Create proper serialization support functions for util::tuple

  • Issue #800 - Add possibility to disable array optimizations during serialization

  • Issue #798 - HPX_LIMIT does not work for local dataflow

  • Issue #797 - Create a parcelport which uses MPI

  • Issue #796 - Problem with Large Numbers of Threads

  • Issue #793 - Changing dataflow test case to hang consistently

  • Issue #792 - CMake Error

  • Issue #791 - Problems with local::dataflow

  • Issue #790 - wait_for() doesn’t compile

  • Issue #789 - HPX with Intel compiler segfaults

  • Issue #788 - Intel compiler support

  • Issue #787 - Fixed SFINAEd specializations

  • Issue #786 - Memory issues during benchmarking.

  • Issue #785 - Create an API allowing to register external threads with HPX

  • Issue #784 - util::plugin is throwing an error when a symbol is not found

  • Issue #783 - How does hpx:bind work?

  • Issue #782 - Added quotes around STRING REPLACE potentially empty arguments

  • Issue #781 - Make sure no exceptions propagate into the thread manager

  • Issue #780 - Allow arithmetics performance counters to expand its parameters

  • Issue #779 - Test case for 778

  • Issue #778 - Swapping futures segfaults

  • Issue #777 - hpx::lcos::details::when_xxx don’t restore completion handlers

  • Issue #776 - Compiler chokes on dataflow overload with launch policy

  • Issue #775 - Runtime error with local dataflow (copying futures?)

  • Issue #774 - Using local dataflow without explicit namespace

  • Issue #773 - Local dataflow with unwrap: functor operators need to be const

  • Issue #772 - Allow (remote) actions to return a future

  • Issue #771 - Setting HPX_LIMIT gives huge boost MPL errors

  • Issue #770 - Add launch policy to (local) dataflow

  • Issue #769 - Make compile time configuration information available

  • Issue #768 - Const correctness problem in local dataflow

  • Issue #767 - Add launch policies to async

  • Issue #766 - Mark data structures for optimized (array based) serialization

  • Issue #765 - Align hpx::any with N3508: Any Library Proposal (Revision 2)

  • Issue #764 - Align hpx::future with newest N3558: A Standardized Representation of Asynchronous Operations

  • Issue #762 - added a human readable output for the ping pong example

  • Issue #761 - Ambiguous typename when constructing derived component

  • Issue #760 - Simple components can not be derived

  • Issue #759 - make install doesn’t give a complete install

  • Issue #758 - Stack overflow when using locking_hook<>

  • Issue #757 - copy paste error; unsupported function overloading

  • Issue #756 - GTCX runtime issue in Gordon

  • Issue #755 - Papi counters don’t work with reset and evaluate API’s

  • Issue #753 - cmake bugfix and improved component action docs

  • Issue #752 - hpx simple component docs

  • Issue #750 - Add hpx::util::any

  • Issue #749 - Thread phase counter is not reset

  • Issue #748 - Memory performance counter are not registered

  • Issue #747 - Create performance counters exposing arithmetic operations

  • Issue #745 - apply_callback needs to invoke callback when applied locally

  • Issue #744 - CMake fixes

  • Issue #743 - Problem Building github version of HPX

  • Issue #742 - Remove HPX_STD_BIND

  • Issue #741 - assertion ‘px != 0’ failed: HPX(assertion_failure) for low numbers of OS threads

  • Issue #739 - Performance counters do not count to the end of the program or evaluation

  • Issue #738 - Dedicated AGAS server runs don’t work; console ignores -a option.

  • Issue #737 - Missing bind overloads

  • Issue #736 - Performance counter wildcards do not always work

  • Issue #735 - Create native ibverbs parcelport based on rdma operations

  • Issue #734 - Threads stolen performance counter total is incorrect

  • Issue #733 - Test benchmarks need to be checked and fixed

  • Issue #732 - Build fails with Mac, using mac ports clang-3.3 on latest git branch

  • Issue #731 - Add global start/stop API for performance counters

  • Issue #730 - Performance counter values are apparently incorrect

  • Issue #729 - Unhandled switch

  • Issue #728 - Serialization of hpx::util::function between two localities causes seg faults

  • Issue #727 - Memory counters on Mac OS X

  • Issue #725 - Restore original thread priority on resume

  • Issue #724 - Performance benchmarks do not depend on main HPX libraries

  • Issue #723 - [teletype]–hpx:nodes=``cat $PBS_NODEFILE`` works; –hpx:nodefile=$PBS_NODEFILE does not.[c++]

  • Issue #722 - Fix binding const member functions as actions

  • Issue #719 - Create performance counter exposing compression ratio

  • Issue #718 - Add possibility to compress parcel data

  • Issue #717 - strip_credit_from_gid has misleading semantics

  • Issue #716 - Non-option arguments to programs run using pbsdsh must be before --hpx:nodes, contrary to directions

  • Issue #715 - Re-thrown exceptions should retain the original call site

  • Issue #714 - failed assertion in debug mode

  • Issue #713 - Add performance counters monitoring connection caches

  • Issue #712 - Adjust parcel related performance counters to be connection type specific

  • Issue #711 - configuration failure

  • Issue #710 - Error “timed out while trying to find room in the connection cache” when trying to start multiple localities on a single computer

  • Issue #709 - Add new thread state ‘staged’ referring to task descriptions

  • Issue #708 - Detect/mitigate bad non-system installs of GCC on Redhat systems

  • Issue #707 - Many examples do not link with Git HEAD version

  • Issue #706 - hpx::init removes portions of non-option command line arguments before last = sign

  • Issue #705 - Create rolling average and median aggregating performance counters

  • Issue #704 - Create performance counter to expose thread queue waiting time

  • Issue #703 - Add support to HPX build system to find librcrtool.a and related headers

  • Issue #699 - Generalize instrumentation support

  • Issue #698 - compilation failure with hwloc absent

  • Issue #697 - Performance counter counts should be zero indexed

  • Issue #696 - Distributed problem

  • Issue #695 - Bad perf counter time printed

  • Issue #693 - --help doesn’t print component specific command line options

  • Issue #692 - SLURM support broken

  • Issue #691 - exception while executing any application linked with hwloc

  • Issue #690 - thread_id_test and thread_launcher_test failing

  • Issue #689 - Make the buildbots use hwloc

  • Issue #687 - compilation error fix (hwloc_topology)

  • Issue #686 - Linker Error for Applications

  • Issue #684 - Pinning of service thread fails when number of worker threads equals the number of cores

  • Issue #682 - Add performance counters exposing number of stolen threads

  • Issue #681 - Add apply_continue for asynchronous chaining of actions

  • Issue #679 - Remove obsolete async_callback API functions

  • Issue #678 - Add new API for setting/triggering LCOs

  • Issue #677 - Add async_continue for true continuation style actions

  • Issue #676 - Buildbot for gcc 4.4 broken

  • Issue #675 - Partial preprocessing broken

  • Issue #674 - HPX segfaults when built with gcc 4.7

  • Issue #673 - use_guard_pages has inconsistent preprocessor guards

  • Issue #672 - External build breaks if library path has spaces

  • Issue #671 - release tarballs are tarbombs

  • Issue #670 - CMake won’t find Boost headers in layout=versioned install

  • Issue #669 - Links in docs to source files broken if not installed

  • Issue #667 - Not reading ini file properly

  • Issue #664 - Adapt new meanings of ‘const’ and ‘mutable’

  • Issue #661 - Implement BTL Parcel port

  • Issue #655 - Make HPX work with the “decltype” result_of

  • Issue #647 - documentation for specifying the number of high priority threads --hpx:high-priority-threads

  • Issue #643 - Error parsing host file

  • Issue #642 - HWLoc issue with TAU

  • Issue #639 - Logging potentially suspends a running thread

  • Issue #634 - Improve error reporting from parcel layer

  • Issue #627 - Add tests for async and apply overloads that accept regular C++ functions

  • Issue #626 - hpx/future.hpp header

  • Issue #601 - Intel support

  • Issue #557 - Remove action codes

  • Issue #531 - AGAS request and response classes should use switch statements

  • Issue #529 - Investigate the state of hwloc support

  • Issue #526 - Make HPX aware of hyper-threading

  • Issue #518 - Create facilities allowing to use plain arrays as action arguments

  • Issue #473 - hwloc thread binding is broken on CPUs with hyperthreading

  • Issue #383 - Change result type detection for hpx::util::bind to use result_of protocol

  • Issue #341 - Consolidate route code

  • Issue #219 - Only copy arguments into actions once

  • Issue #177 - Implement distributed AGAS

  • Issue #43 - Support for Darwin (Xcode + Clang)