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 directionsIssue #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=
signIssue #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 optionsIssue #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 guardsIssue #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)