HPX V0.9.11 (Nov 11, 2015)#

Our main focus for this release was the design and development of a coherent set of higher-level APIs exposing various types of parallelism to the application programmer. We introduced the concepts of an executor, which can be used to customize the where and when of execution of tasks in the context of parallelizing codes. We extended all APIs related to managing parallel tasks to support executors which gives the user the choce of either using one of the predefined executor types or to provide its own, possibly application specific, executor. We paid very close attention to align all of these changes with the existing C++ Standards documents or with the ongoing proposals for standardization.

This release is the first after our change to a new development policy. We switched all development to be strictly performed on branches only, all direct commits to our main branch (master) are prohibited. Any change has to go through a peer review before it will be merged to master. As a result the overall stability of our code base has significantly increased, the development process itself has been simplified. This change manifests itself in a large number of pull-requests which have been merged (please see below for a full list of closed issues and pull-requests). All in all for this release, we closed almost 100 issues and merged over 290 pull-requests. There have been over 1600 commits to the master branch since the last release.

General changes#

  • We are moving into the direction of unifying managed and simple components. As such, the classes hpx::components::component and hpx::components::component_base have been added which currently just forward to the currently existing simple component facilities. The examples have been converted to only use those two classes.

  • Added integration with the CircleCI hosted continuous integration service. This gives us constant and immediate feedback on the health of our master branch.

  • The compiler configuration subsystem in the build system has been reimplemented. Instead of using Boost.Config we now use our own lightweight set of cmake scripts to determine the available language and library features supported by the used compiler.

  • The API for creating instances of components has been consolidated. All component instances should be created using the hpx::new_ only. It allows one to instantiate both, single component instances and multiple component instances. The placement of the created components can be controlled by special distribution policies. Please see the corresponding documentation outlining the use of hpx::new_.

  • Introduced four new distribution policies which can be used with many API functions which traditionally expected to be used with a locality id. The new distribution policies are:

  • The new distribution policies can now be also used with hpx::async. This change also deprecates hpx::async_colocated(id, ...) which now is replaced by a distribution policy: hpx::async(hpx::colocated(id), ...).

  • The hpx::vector and hpx::unordered_map data structures can now be used with the new distribution policies as well.

  • The parallel facility hpx::parallel::task_region has been renamed to hpx::parallel::task_block based on the changes in the corresponding standardization proposal N4411.

  • Added extensions to the parallel facility hpx::parallel::task_block allowing to combine a task_block with an execution policy. This implies a minor breaking change as the hpx::parallel::task_block is now a template.

  • Added new LCOs: hpx::lcos::latch and hpx::lcos::local::latch which semantically conform to the proposed std::latch (see N4399).

  • Added performance counters exposing data related to data transferred by input/output (filesystem) operations (thanks to Maciej Brodowicz).

  • Added performance counters allowing to track the number of action invocations (local and remote invocations).

  • Added new command line options –hpx:print-counter-at and –hpx:reset-counters.

  • The hpx::vector component has been renamed to hpx::partitioned_vector to make it explicit that the underlying memory is not contiguous.

  • Introduced a completely new and uniform higher-level parallelism API which is based on executors. All existing parallelism APIs have been adapted to this. We have added a large number of different executor types, such as a numa-aware executor, a this-thread executor, etc.

  • Added support for the MingW toolchain on Windows (thanks to Eric Lemanissier).

  • HPX now includes support for APEX, (Autonomic Performance Environment for eXascale). APEX is an instrumentation and software adaptation library that provides an interface to TAU profiling / tracing as well as runtime adaptation of HPX applications through policy definitions. For more information and documentation, please see https://github.com/UO-OACISS/xpress-apex. To enable APEX at configuration time, specify -DHPX_WITH_APEX=On. To also include support for TAU profiling, specify -DHPX_WITH_TAU=On and specify the -DTAU_ROOT, -DTAU_ARCH and -DTAU_OPTIONS cmake parameters.

  • We have implemented many more of the Using parallel algorithms. Please see Issue #1141 for the list of all available parallel algorithms (thanks to Daniel Bourgeois and John Biddiscombe for contributing their work).

Breaking changes#

  • We are moving into the direction of unifying managed and simple components. In order to stop exposing the old facilities, all examples have been converted to use the new classes. The breaking change in this release is that performance counters are now a hpx::components::component_base instead of hpx::components::managed_component_base.

  • We removed the support for stackless threads. It turned out that there was no performance benefit when using stackless threads. As such, we decided to clean up our codebase. This feature was not documented.

  • The CMake project name has changed from ‘hpx’ to ‘HPX’ for consistency and compatibility with naming conventions and other CMake projects. Generated config files go into <prefix>/lib/cmake/HPX and not <prefix>/lib/cmake/hpx.

  • The macro HPX_REGISTER_MINIMAL_COMPONENT_FACTORY has been deprecated. Please use HPX_REGISTER_COMPONENT. instead. The old macro will be removed in the next release.

  • The obsolete distributing_factory and binpacking_factory components have been removed. The corresponding functionality is now provided by the hpx::new_ API function in conjunction with the hpx::default_layout and hpx::binpacking distribution policies (hpx::components::default_distribution_policy and hpx::components::binpacking_distribution_policy)

  • The API function hpx::new_colocated has been deprecated. Please use the consolidated API hpx::new_ in conjunction with the new hpx::colocated distribution policy (hpx::components::colocating_distribution_policy) instead. The old API function will still be available for at least one release of HPX if the configuration variable HPX_WITH_COLOCATED_BACKWARDS_COMPATIBILITY is enabled.

  • The API function hpx::async_colocated has been deprecated. Please use the consolidated API hpx::async in conjunction with the new hpx::colocated distribution policy (hpx::components::colocating_distribution_policy) instead. The old API function will still be available for at least one release of HPX if the configuration variable HPX_WITH_COLOCATED_BACKWARDS_COMPATIBILITY is enabled.

  • The obsolete remote_object component has been removed.

  • Replaced the use of Boost.Serialization with our own solution. While the new version is mostly compatible with Boost.Serialization, this change requires some minor code modifications in user code. For more information, please see the corresponding announcement on the hpx-users@stellar.cct.lsu.edu mailing list.

  • The names used by cmake to influence various configuration options have been unified. The new naming scheme relies on all configuration constants to start with HPX_WITH_..., while the preprocessor constant which is used at build time starts with HPX_HAVE_.... For instance, the former cmake command line -DHPX_MALLOC=... now has to be specified a -DHPX_WITH_MALLOC=... and will cause the preprocessor constant HPX_HAVE_MALLOC to be defined. The actual name of the constant (i.e. MALLOC) has not changed. Please see the corresponding documentation for more details (CMake options).

  • The get_gid() functions exposed by the component base classes hpx::components::server::simple_component_base, hpx::components::server::managed_component_base, and hpx::components::server::fixed_component_base have been replaced by two new functions: get_unmanaged_id() and get_id(). To enable the old function name for backwards compatibility, use the cmake configuration option HPX_WITH_COMPONENT_GET_GID_COMPATIBILITY=On.

  • All functions which were named get_gid() but were returning hpx::id_type have been renamed to get_id(). To enable the old function names for backwards compatibility, use the cmake configuration option HPX_WITH_COMPONENT_GET_GID_COMPATIBILITY=On.

Bug fixes (closed tickets)#

Here is a list of the important tickets we closed for this release.

  • PR #1855 - Completely removing external/endian

  • PR #1854 - Don’t pollute CMAKE_CXX_FLAGS through find_package()

  • PR #1853 - Updating CMake configuration to get correct version of TAU library

  • PR #1852 - Fixing Performance Problems with MPI Parcelport

  • PR #1851 - Fixing hpx_add_link_flag() and hpx_remove_link_flag()

  • PR #1850 - Fixing 1836, adding parallel::sort

  • PR #1849 - Fixing configuration for use of more than 64 cores

  • PR #1848 - Change default APEX version for release

  • PR #1847 - Fix client_base::then on release

  • PR #1846 - Removing broken lcos::local::channel from release

  • PR #1845 - Adding example demonstrating a possible safe-object implementation to release

  • PR #1844 - Removing stubs from accumulator examples

  • PR #1843 - Don’t pollute CMAKE_CXX_FLAGS through find_package()

  • PR #1841 - Fixing client_base<>::then

  • PR #1840 - Adding example demonstrating a possible safe-object implementation

  • PR #1838 - Update version rc1

  • PR #1837 - Removing broken lcos::local::channel

  • PR #1835 - Adding explicit move constructor and assignment operator to hpx::lcos::promise

  • PR #1834 - Making hpx::lcos::promise move-only

  • PR #1833 - Adding fedora docs

  • Issue #1832 - hpx::lcos::promise<> must be move-only

  • PR #1831 - Fixing resource manager gcc5.2

  • PR #1830 - Fix intel13

  • PR #1829 - Unbreaking thread test

  • PR #1828 - Fixing #1620

  • PR #1827 - Fixing a memory management issue for the Parquet application

  • Issue #1826 - Memory management issue in hpx::lcos::promise

  • PR #1825 - Adding hpx::components::component and hpx::components::component_base

  • PR #1823 - Adding git commit id to circleci build

  • PR #1822 - applying fixes suggested by clang 3.7

  • PR #1821 - Hyperlink fixes

  • PR #1820 - added parallel multi-locality sanity test

  • PR #1819 - Fixing #1667

  • Issue #1817 - Hyperlinks generated by inspect tool are wrong

  • PR #1816 - Support hpxrx

  • PR #1814 - Fix async to dispatch to the correct locality in all cases

  • Issue #1813 - async(launch::…, action(), …) always invokes locally

  • PR #1812 - fixed syntax error in CMakeLists.txt

  • PR #1811 - Agas optimizations

  • PR #1810 - drop superfluous typedefs

  • PR #1809 - Allow HPX to be used as an optional package in 3rd party code

  • PR #1808 - Fixing #1723

  • PR #1807 - Making sure resolve_localities does not hang during normal operation

  • Issue #1806 - Spinlock no longer movable and deletes operator ‘=’, breaks MiniGhost

  • Issue #1804 - register_with_basename causes hangs

  • PR #1801 - Enhanced the inspect tool to take user directly to the problem with hyperlinks

  • Issue #1800 - Problems compiling application on smic

  • PR #1799 - Fixing cv exceptions

  • PR #1798 - Documentation refactoring & updating

  • PR #1797 - Updating the activeharmony CMake module

  • PR #1795 - Fixing cv

  • PR #1794 - Fix connect with hpx::runtime_mode_connect

  • PR #1793 - fix a wrong use of HPX_MAX_CPU_COUNT instead of HPX_HAVE_MAX_CPU_COUNT

  • PR #1792 - Allow for default constructed parcel instances to be moved

  • PR #1791 - Fix connect with hpx::runtime_mode_connect

  • Issue #1790 - assertion action_.get() failed: HPX(assertion_failure) when running Octotiger with pull request 1786

  • PR #1789 - Fixing discover_counter_types API function

  • Issue #1788 - connect with hpx::runtime_mode_connect

  • Issue #1787 - discover_counter_types not working

  • PR #1786 - Changing addressing_service to use std::unordered_map instead of std::map

  • PR #1785 - Fix is_iterator for container algorithms

  • PR #1784 - Adding new command line options:

  • PR #1783 - Minor changes for APEX support

  • PR #1782 - Drop legacy forwarding action traits

  • PR #1781 - Attempt to resolve the race between cv::wait_xxx and cv::notify_all

  • PR #1780 - Removing serialize_sequence

  • PR #1779 - Fixed #1501: hwloc configuration options are wrong for MIC

  • PR #1778 - Removing ability to enable/disable parcel handling

  • PR #1777 - Completely removing stackless threads

  • PR #1776 - Cleaning up util/plugin

  • PR #1775 - Agas fixes

  • PR #1774 - Action invocation count

  • PR #1773 - replaced MSVC variable with WIN32

  • PR #1772 - Fixing Problems in MPI parcelport and future serialization.

  • PR #1771 - Fixing intel 13 compiler errors related to variadic template template parameters for lcos::when_ tests

  • PR #1770 - Forwarding decay to std::

  • PR #1769 - Add more characters with special regex meaning to the existing patch

  • PR #1768 - Adding test for receive_buffer

  • PR #1767 - Making sure that uptime counter throws exception on any attempt to be reset

  • PR #1766 - Cleaning up code related to throttling scheduler

  • PR #1765 - Restricting thread_data to creating only with intrusive_pointers

  • PR #1764 - Fixing 1763

  • Issue #1763 - UB in thread_data::operator delete

  • PR #1762 - Making sure all serialization registries/factories are unique

  • PR #1761 - Fixed #1751: hpx::future::wait_for fails a simple test

  • PR #1758 - Fixing #1757

  • Issue #1757 - pinning not correct using –hpx:bind

  • Issue #1756 - compilation error with MinGW

  • PR #1755 - Making output serialization const-correct

  • Issue #1753 - HPX performance degrades with time since execution begins

  • Issue #1752 - Error in AGAS

  • Issue #1751 - hpx::future::wait_for fails a simple test

  • PR #1750 - Removing hpx_fwd.hpp includes

  • PR #1749 - Simplify result_of and friends

  • PR #1747 - Removed superfluous code from message_buffer.hpp

  • PR #1746 - Tuple dependencies

  • Issue #1745 - Broken when_some which takes iterators

  • PR #1744 - Refining archive interface

  • PR #1743 - Fixing when_all when only a single future is passed

  • PR #1742 - Config includes

  • PR #1741 - Os executors

  • Issue #1740 - hpx::promise has some problems

  • PR #1739 - Parallel composition with generic containers

  • Issue #1738 - After building program and successfully linking to a version of hpx DHPX_DIR seems to be ignored

  • Issue #1737 - Uptime problems

  • PR #1736 - added convenience c-tor and begin()/end() to serialize_buffer

  • PR #1735 - Config includes

  • PR #1734 - Fixed #1688: Add timer counters for tfunc_total and exec_total

  • Issue #1733 - Add unit test for hpx/lcos/local/receive_buffer.hpp

  • PR #1732 - Renaming get_os_thread_count

  • PR #1731 - Basename registration

  • Issue #1730 - Use after move of thread_init_data

  • PR #1729 - Rewriting channel based on new gate component

  • PR #1728 - Fixing #1722

  • PR #1727 - Fixing compile problems with apply_colocated

  • PR #1726 - Apex integration

  • PR #1725 - fixed test timeouts

  • PR #1724 - Renaming vector

  • Issue #1723 - Drop support for intel compilers and gcc 4.4. based standard libs

  • Issue #1722 - Add support for detecting non-ready futures before serialization

  • PR #1721 - Unifying parallel executors, initializing from launch policy

  • PR #1720 - dropped superfluous typedef

  • Issue #1718 - Windows 10 x64, VS 2015 - Unknown CMake command “add_hpx_pseudo_target”.

  • PR #1717 - Timed executor traits for thread-executors

  • PR #1716 - serialization of arrays didn’t work with non-pod types. fixed

  • PR #1715 - List serialization

  • PR #1714 - changing misspellings

  • PR #1713 - Fixed distribution policy executors

  • PR #1712 - Moving library detection to be executed after feature tests

  • PR #1711 - Simplify parcel

  • PR #1710 - Compile only tests

  • PR #1709 - Implemented timed executors

  • PR #1708 - Implement parallel::executor_traits for thread-executors

  • PR #1707 - Various fixes to threads::executors to make custom schedulers work

  • PR #1706 - Command line option –hpx:cores does not work as expected

  • Issue #1705 - command line option –hpx:cores does not work as expected

  • PR #1704 - vector deserialization is speeded up a little

  • PR #1703 - Fixing shared_mutes

  • Issue #1702 - Shared_mutex does not compile with no_mutex cond_var

  • PR #1701 - Add distribution_policy_executor

  • PR #1700 - Executor parameters

  • PR #1699 - Readers writer lock

  • PR #1698 - Remove leftovers

  • PR #1697 - Fixing held locks

  • PR #1696 - Modified Scan Partitioner for Algorithms

  • PR #1695 - This thread executors

  • PR #1694 - Fixed #1688: Add timer counters for tfunc_total and exec_total

  • PR #1693 - Fix #1691: is_executor template specification fails for inherited executors

  • PR #1692 - Fixed #1662: Possible exception source in coalescing_message_handler

  • Issue #1691 - is_executor template specification fails for inherited executors

  • PR #1690 - added macro for non-intrusive serialization of classes without a default c-tor

  • PR #1689 - Replace value_or_error with custom storage, unify future_data state

  • Issue #1688 - Add timer counters for tfunc_total and exec_total

  • PR #1687 - Fixed interval timer

  • PR #1686 - Fixing cmake warnings about not existing pseudo target dependencies

  • PR #1685 - Converting partitioners to use bulk async execute

  • PR #1683 - Adds a tool for inspect that checks for character limits

  • PR #1682 - Change project name to (uppercase) HPX

  • PR #1681 - Counter shortnames

  • PR #1680 - Extended Non-intrusive Serialization to Ease Usage for Library Developers

  • PR #1679 - Working on 1544: More executor changes

  • PR #1678 - Transpose fixes

  • PR #1677 - Improve Boost compatibility check

  • PR #1676 - 1d stencil fix

  • Issue #1675 - hpx project name is not HPX

  • PR #1674 - Fixing the MPI parcelport

  • PR #1673 - added move semantics to map/vector deserialization

  • PR #1672 - Vs2015 await

  • PR #1671 - Adapt transform for #1668

  • PR #1670 - Started to work on #1668

  • PR #1669 - Add this_thread_executors

  • Issue #1667 - Apple build instructions in docs are out of date

  • PR #1666 - Apex integration

  • PR #1665 - Fixes an error with the whitespace check that showed the incorrect location of the error

  • Issue #1664 - Inspect tool found incorrect endline whitespace

  • PR #1663 - Improve use of locks

  • Issue #1662 - Possible exception source in coalescing_message_handler

  • PR #1661 - Added support for 128bit number serialization

  • PR #1660 - Serialization 128bits

  • PR #1659 - Implemented inner_product and adjacent_diff algos

  • PR #1658 - Add serialization for std::set (as there is for std::vector and std::map)

  • PR #1657 - Use of shared_ptr in io_service_pool changed to unique_ptr

  • Issue #1656 - 1d_stencil codes all have wrong factor

  • PR #1654 - When using runtime_mode_connect, find the correct localhost public ip address

  • PR #1653 - Fixing 1617

  • PR #1652 - Remove traits::action_may_require_id_splitting

  • PR #1651 - Fixed performance counters related to AGAS cache timings

  • PR #1650 - Remove leftovers of traits::type_size

  • PR #1649 - Shorten target names on Windows to shorten used path names

  • PR #1648 - Fixing problems introduced by merging #1623 for older compilers

  • PR #1647 - Simplify running automatic builds on Windows

  • Issue #1646 - Cache insert and update performance counters are broken

  • Issue #1644 - Remove leftovers of traits::type_size

  • Issue #1643 - Remove traits::action_may_require_id_splitting

  • PR #1642 - Adds spell checker to the inspect tool for qbk and doxygen comments

  • PR #1640 - First step towards fixing 688

  • PR #1639 - Re-apply remaining changes from limit_dataflow_recursion branch

  • PR #1638 - This fixes possible deadlock in the test ignore_while_locked_1485

  • PR #1637 - Fixing hpx::wait_all() invoked with two vector<future<T>>

  • PR #1636 - Partially re-apply changes from limit_dataflow_recursion branch

  • PR #1635 - Adding missing test for #1572

  • PR #1634 - Revert “Limit recursion-depth in dataflow to a configurable constant”

  • PR #1633 - Add command line option to ignore batch environment

  • PR #1631 - hpx::lcos::queue exhibits strange behavior

  • PR #1630 - Fixed endline_whitespace_check.cpp to detect lines with only whitespace

  • Issue #1629 - Inspect trailing whitespace checker problem

  • PR #1628 - Removed meaningless const qualifiers. Minor icpc fix.

  • PR #1627 - Fixing the queue LCO and add example demonstrating its use

  • PR #1626 - Deprecating get_gid(), add get_id() and get_unmanaged_id()

  • PR #1625 - Allowing to specify whether to send credits along with message

  • Issue #1624 - Lifetime issue

  • Issue #1623 - hpx::wait_all() invoked with two vector<future<T>> fails

  • PR #1622 - Executor partitioners

  • PR #1621 - Clean up coroutines implementation

  • Issue #1620 - Revert #1535

  • PR #1619 - Fix result type calculation for hpx::make_continuation

  • PR #1618 - Fixing RDTSC on Xeon/Phi

  • Issue #1617 - hpx cmake not working when run as a subproject

  • Issue #1616 - cmake problem resulting in RDTSC not working correctly for Xeon Phi creates very strange results for duration counters

  • Issue #1615 - hpx::make_continuation requires input and output to be the same

  • PR #1614 - Fixed remove copy test

  • Issue #1613 - Dataflow causes stack overflow

  • PR #1612 - Modified foreach partitioner to use bulk execute

  • PR #1611 - Limit recursion-depth in dataflow to a configurable constant

  • PR #1610 - Increase timeout for CircleCI

  • PR #1609 - Refactoring thread manager, mainly extracting thread pool

  • PR #1608 - Fixed running multiple localities without localities parameter

  • PR #1607 - More algorithm fixes to adjacentfind

  • Issue #1606 - Running without localities parameter binds to bogus port range

  • Issue #1605 - Too many serializations

  • PR #1604 - Changes the HPX image into a hyperlink

  • PR #1601 - Fixing problems with remove_copy algorithm tests

  • PR #1600 - Actions with ids cleanup

  • PR #1599 - Duplicate binding of global ids should fail

  • PR #1598 - Fixing array access

  • PR #1597 - Improved the reliability of connecting/disconnecting localities

  • Issue #1596 - Duplicate id binding should fail

  • PR #1595 - Fixing more cmake config constants

  • PR #1594 - Fixing preprocessor constant used to enable C++11 chrono

  • PR #1593 - Adding operator|() for hpx::launch

  • Issue #1592 - Error (typo) in the docs

  • Issue #1590 - CMake fails when CMAKE_BINARY_DIR contains ‘+’.

  • Issue #1589 - Disconnecting a locality results in segfault using heartbeat example

  • PR #1588 - Fix doc string for config option HPX_WITH_EXAMPLES

  • PR #1586 - Fixing 1493

  • PR #1585 - Additional Check for Inspect Tool to detect Endline Whitespace

  • Issue #1584 - Clean up coroutines implementation

  • PR #1583 - Adding a check for end line whitespace

  • PR #1582 - Attempt to fix assert firing after scheduling loop was exited

  • PR #1581 - Fixed adjacentfind_binary test

  • PR #1580 - Prevent some of the internal cmake lists from growing indefinitely

  • PR #1579 - Removing type_size trait, replacing it with special archive type

  • Issue #1578 - Remove demangle_helper

  • PR #1577 - Get ptr problems

  • Issue #1576 - Refactor async, dataflow, and future::then

  • PR #1575 - Fixing tests for parallel rotate

  • PR #1574 - Cleaning up schedulers

  • PR #1573 - Fixing thread pool executor

  • PR #1572 - Fixing number of configured localities

  • PR #1571 - Reimplement decay

  • PR #1570 - Refactoring async, apply, and dataflow APIs

  • PR #1569 - Changed range for mach-o library lookup

  • PR #1568 - Mark decltype support as required

  • PR #1567 - Removed const from algorithms

  • Issue #1566 - CMAKE Configuration Test Failures for clang 3.5 on debian

  • PR #1565 - Dylib support

  • PR #1564 - Converted partitioners and some algorithms to use executors

  • PR #1563 - Fix several #includes for Boost.Preprocessor

  • PR #1562 - Adding configuration option disabling/enabling all message handlers

  • PR #1561 - Removed all occurrences of boost::move replacing it with std::move

  • Issue #1560 - Leftover HPX_REGISTER_ACTION_DECLARATION_2

  • PR #1558 - Revisit async/apply SFINAE conditions

  • PR #1557 - Removing type_size trait, replacing it with special archive type

  • PR #1556 - Executor algorithms

  • PR #1555 - Remove the necessity to specify archive flags on the receiving end

  • PR #1554 - Removing obsolete Boost.Serialization macros

  • PR #1553 - Properly fix HPX_DEFINE_*_ACTION macros

  • PR #1552 - Fixed algorithms relying on copy_if implementation

  • PR #1551 - Pxfs - Modifying FindOrangeFS.cmake based on OrangeFS 2.9.X

  • Issue #1550 - Passing plain identifier inside HPX_DEFINE_PLAIN_ACTION_1

  • PR #1549 - Fixing intel14/libstdc++4.4

  • PR #1548 - Moving raw_ptr to detail namespace

  • PR #1547 - Adding support for executors to future.then

  • PR #1546 - Executor traits result types

  • PR #1545 - Integrate executors with dataflow

  • PR #1543 - Fix potential zero-copy for primarynamespace::bulk_service_async et.al.

  • PR #1542 - Merging HPX0.9.10 into pxfs branch

  • PR #1541 - Removed stale cmake tests, unused since the great cmake refactoring

  • PR #1540 - Fix idle-rate on platforms without TSC

  • PR #1539 - Reporting situation if zero-copy-serialization was performed by a parcel generated from a plain apply/async

  • PR #1538 - Changed return type of bulk executors and added test

  • Issue #1537 - Incorrect cpuid config tests

  • PR #1536 - Changed return type of bulk executors and added test

  • PR #1535 - Make sure promise::get_gid() can be called more than once

  • PR #1534 - Fixed async_callback with bound callback

  • PR #1533 - Updated the link in the documentation to a publically- accessible URL

  • PR #1532 - Make sure sync primitives are not copyable nor movable

  • PR #1531 - Fix unwrapped issue with future ranges of void type

  • PR #1530 - Serialization complex

  • Issue #1528 - Unwrapped issue with future<void>

  • Issue #1527 - HPX does not build with Boost 1.58.0

  • PR #1526 - Added support for boost.multi_array serialization

  • PR #1525 - Properly handle deferred futures, fixes #1506

  • PR #1524 - Making sure invalid action argument types generate clear error message

  • Issue #1522 - Need serialization support for boost multi array

  • Issue #1521 - Remote async and zero-copy serialization optimizations don’t play well together

  • PR #1520 - Fixing UB whil registering polymorphic classes for serialization

  • PR #1519 - Making detail::condition_variable safe to use

  • PR #1518 - Fix when_some bug missing indices in its result

  • Issue #1517 - Typo may affect CMake build system tests

  • PR #1516 - Fixing Posix context

  • PR #1515 - Fixing Posix context

  • PR #1514 - Correct problems with loading dynamic components

  • PR #1513 - Fixing intel glibc4 4

  • Issue #1508 - memory and papi counters do not work

  • Issue #1507 - Unrecognized Command Line Option Error causing exit status 0

  • Issue #1506 - Properly handle deferred futures

  • PR #1505 - Adding #include - would not compile without this

  • Issue #1502 - boost::filesystem::exists throws unexpected exception

  • Issue #1501 - hwloc configuration options are wrong for MIC

  • PR #1504 - Making sure boost::filesystem::exists() does not throw

  • PR #1500 - Exit application on --hpx:version/-v and --hpx:info

  • PR #1498 - Extended task block

  • PR #1497 - Unique ptr serialization

  • PR #1496 - Unique ptr serialization (closed)

  • PR #1495 - Switching circleci build type to debug

  • Issue #1494 - --hpx:version/-v does not exit after printing version information

  • Issue #1493 - add an hpx_ prefix to libraries and components to avoid name conflicts

  • Issue #1492 - Define and ensure limitations for arguments to async/apply

  • PR #1489 - Enable idle rate counter on demand

  • PR #1488 - Made sure detail::condition_variable can be safely destroyed

  • PR #1487 - Introduced default (main) template implementation for ignore_while_checking

  • PR #1486 - Add HPX inspect tool

  • Issue #1485 - ignore_while_locked doesn’t support all Lockable types

  • PR #1484 - Docker image generation

  • PR #1483 - Move external endian library into HPX

  • PR #1482 - Actions with integer type ids

  • Issue #1481 - Sync primitives safe destruction

  • Issue #1480 - Move external/boost/endian into hpx/util

  • Issue #1478 - Boost inspect violations

  • PR #1479 - Adds serialization for arrays; some further/minor fixes

  • PR #1477 - Fixing problems with the Intel compiler using a GCC 4.4 std library

  • PR #1476 - Adding hpx::lcos::latch and hpx::lcos::local::latch

  • Issue #1475 - Boost inspect violations

  • PR #1473 - Fixing action move tests

  • Issue #1471 - Sync primitives should not be movable

  • PR #1470 - Removing hpx::util::polymorphic_factory

  • PR #1468 - Fixed container creation

  • Issue #1467 - HPX application fail during finalization

  • Issue #1466 - HPX doesn’t pick up Torque’s nodefile on SuperMIC

  • Issue #1464 - HPX option for pre and post bootstrap performance counters

  • PR #1463 - Replacing async_colocated(id, ...) with async(colocated(id), ...)

  • PR #1462 - Consolidated task_region with N4411

  • PR #1461 - Consolidate inconsistent CMake option names

  • Issue #1460 - Which malloc is actually used? or at least which one is HPX built with

  • Issue #1459 - Make cmake configure step fail explicitly if compiler version is not supported

  • Issue #1458 - Update parallel::task_region with N4411

  • PR #1456 - Consolidating new_<>()

  • Issue #1455 - Replace async_colocated(id, ...) with async(colocated(id), ...)

  • PR #1454 - Removed harmful std::moves from return statements

  • PR #1453 - Use range-based for-loop instead of Boost.Foreach

  • PR #1452 - C++ feature tests

  • PR #1451 - When serializing, pass archive flags to traits::get_type_size

  • Issue #1450 - traits:get_type_size needs archive flags to enable zero_copy optimizations

  • Issue #1449 - “couldn’t create performance counter” - AGAS

  • Issue #1448 - Replace distributing factories with new_<T[]>(...)

  • PR #1447 - Removing obsolete remote_object component

  • PR #1446 - Hpx serialization

  • PR #1445 - Replacing travis with circleci

  • PR #1443 - Always stripping HPX command line arguments before executing start function

  • PR #1442 - Adding –hpx:bind=none to disable thread affinities

  • Issue #1439 - Libraries get linked in multiple times, RPATH is not properly set

  • PR #1438 - Removed superfluous typedefs

  • Issue #1437 - hpx::init() should strip HPX-related flags from argv

  • Issue #1436 - Add strong scaling option to htts

  • PR #1435 - Adding async_cb, async_continue_cb, and async_colocated_cb

  • PR #1434 - Added missing install rule, removed some dead CMake code

  • PR #1433 - Add GitExternal and SubProject cmake scripts from eyescale/cmake repo

  • Issue #1432 - Add command line flag to disable thread pinning

  • PR #1431 - Fix #1423

  • Issue #1430 - Inconsistent CMake option names

  • Issue #1429 - Configure setting HPX_HAVE_PARCELPORT_MPI is ignored

  • PR #1428 - Fixes #1419 (closed)

  • PR #1427 - Adding stencil_iterator and transform_iterator

  • PR #1426 - Fixes #1419

  • PR #1425 - During serialization memory allocation should honour allocator chunk size

  • Issue #1424 - chunk allocation during serialization does not use memory pool/allocator chunk size

  • Issue #1423 - Remove HPX_STD_UNIQUE_PTR

  • Issue #1422 - hpx:threads=all allocates too many os threads

  • PR #1420 - added .travis.yml

  • Issue #1419 - Unify enums: hpx::runtime::state and hpx::state

  • PR #1416 - Adding travis builder

  • Issue #1414 - Correct directory for dispatch_gcc46.hpp iteration

  • Issue #1410 - Set operation algorithms

  • Issue #1389 - Parallel algorithms relying on scan partitioner break for small number of elements

  • Issue #1325 - Exceptions thrown during parcel handling are not handled correctly

  • Issue #1315 - Errors while running performance tests

  • Issue #1309 - hpx::vector partitions are not easily extendable by applications

  • PR #1300 - Added serialization/de-serialization to examples.tuplespace

  • Issue #1251 - hpx::threads::get_thread_count doesn’t consider pending threads

  • Issue #1008 - Decrease in application performance overtime; occasional spikes of major slowdown

  • Issue #1001 - Zero copy serialization raises assert

  • Issue #721 - Make HPX usable for Xeon Phi

  • Issue #524 - Extend scheduler to support threads which can’t be stolen