HPX V1.3.0 (May 23, 2019)#

General changes#

  • Performance improvements: the schedulers have significantly reduced overheads from removing false sharing and the parallel executor has been updated to create fewer futures.

  • HPX now defaults to not turning on networking when running on one locality. This means that you can run multiple instances on the same system without adding command line options.

  • Multiple issues reported by Clang sanitizers have been fixed.

  • We have added (back) single-page HTML documentation and PDF documentation.

  • We have started modularizing the HPX library. This is useful both for developers and users. In the long term users will be able to consume only parts of the HPX libraries if they do not require all the functionality that HPX currently provides.

  • We have added an implementation of function_ref.

  • The barrier and latch classes have gained a few additional member functions.

Breaking changes#

  • Executable and library targets are now created without the _exe and _lib suffix respectively. For example, the target 1d_stencil_1_exe is now simply called 1d_stencil_1.

  • We have removed the following deprecated functionality: queue, scoped_unlock, and support for input iterators in algorithms.

  • We have turned off the compatibility layer for unwrapped by default. The functionality will be removed in the next release. The option can still be turned on using the CMake option HPX_WITH_UNWRAPPED_SUPPORT. Likewise, inclusive_scan compatibility overloads have been turned off by default. They can still be turned on with HPX_WITH_INCLUSIVE_SCAN_COMPATIBILITY.

  • The minimum compiler and dependency versions have been updated. We now support GCC from version 5 onwards, Clang from version 4 onwards, and Boost from version 1.61.0 onwards.

  • The headers for preprocessor macros have moved as a result of the functionality being moved to a separate module. The old headers are deprecated and will be removed in a future version of HPX. You can turn off the warnings by setting HPX_PREPROCESSOR_WITH_DEPRECATION_WARNINGS=OFF or turn off the compatibility headers completely with HPX_PREPROCESSOR_WITH_COMPATIBILITY_HEADERS=OFF.

Closed issues#

  • Issue #3863 - shouldn’t “-faligned-new” be a usage requirement?

  • Issue #3841 - Build error with msvc 19 caused by SFINAE and C++17

  • Issue #3836 - master branch does not build with idle rate counters enabled

  • Issue #3819 - Add debug suffix to modules built in debug mode

  • Issue #3817 - HPX_INCLUDE_DIRS contains non-existent directory

  • Issue #3810 - Source groups are not created for files in modules

  • Issue #3805 - HPX won’t compile with -DHPX_WITH_APEX=TRUE

  • Issue #3792 - Barrier Hangs When Locality Zero not included

  • Issue #3778 - Replace throw() with noexcept

  • Issue #3763 - configurable sort limit per task

  • Issue #3758 - dataflow doesn’t convert future<future<T>> to future<T>

  • Issue #3757 - When compiling undefined reference to hpx::hpx_check_version_1_2 HPX V1.2.1, Ubuntu 18.04.01 Server Edition

  • Issue #3753 - --hpx:list-counters=full crashes

  • Issue #3746 - Detection of MPI with pmix

  • Issue #3744 - Separate spinlock from same cacheline as internal data for all LCOs

  • Issue #3743 - hpxcxx’s shebang doesn’t specify the python version

  • Issue #3738 - Unable to debug parcelport on a single node

  • Issue #3735 - Latest master: Can’t compile in MSVC

  • Issue #3731 - util::bound seems broken on Clang with older libstdc++

  • Issue #3724 - Allow to pre-set command line options through environment

  • Issue #3723 - examples/resource_partitioner build issue on master branch / ubuntu 18

  • Issue #3721 - faced a building error

  • Issue #3720 - Hello World example fails to link

  • Issue #3719 - pkg-config produces invalid output: -l-pthread

  • Issue #3718 - Please make the python executable configurable through cmake

  • Issue #3717 - interested to contribute to the organisation

  • Issue #3699 - Remove ‘HPX runtime’ executable

  • Issue #3698 - Ignore all locks while handling asserts

  • Issue #3689 - Incorrect and inconsistent website structure http://stellar.cct.lsu.edu/downloads/.

  • Issue #3681 - Broken links on http://stellar.cct.lsu.edu/2015/05/hpx-archives-now-on-gmane/

  • Issue #3676 - HPX master built from source, cmake fails to link main.cpp example in docs

  • Issue #3673 - HPX build fails with std::atomic missing error

  • Issue #3670 - Generate PDF again from documentation (with Sphinx)

  • Issue #3643 - Warnings when compiling HPX 1.2.1 with gcc 9

  • Issue #3641 - Trouble with using ranges-v3 and hpx::parallel::reduce

  • Issue #3639 - util::unwrapping does not work well with member functions

  • Issue #3634 - The build fails if shared_future<>::then is called with a thread executor

  • Issue #3622 - VTune Amplifier 2019 not working with use_itt_notify=1

  • Issue #3616 - HPX Fails to Build with CUDA 10

  • Issue #3612 - False sharing of scheduling counters

  • Issue #3609 - executor_parameters timeout with gcc <= 7 and Debug mode

  • Issue #3601 - Misleading error message on power pc for rdtsc and rdtscp

  • Issue #3598 - Build of some examples fails when using Vc

  • Issue #3594 - Error: The number of OS threads requested (20) does not match the number of threads to bind (12): HPX(bad_parameter)

  • Issue #3592 - Undefined Reference Error

  • Issue #3589 - include could not find load file: HPX_Utils.cmake

  • Issue #3587 - HPX won’t compile on POWER8 with Clang 7

  • Issue #3583 - Fedora and openSUSE instructions missing on “Distribution Packages” page

  • Issue #3578 - Build error when configuring with HPX_HAVE_ALGORITHM_INPUT_ITERATOR_SUPPORT=ON

  • Issue #3575 - Merge openSUSE reproducible patch

  • Issue #3570 - Update HPX to work with the latest VC version

  • Issue #3567 - Build succeed and make failed for hpx:cout

  • Issue #3565 - Polymorphic simple component destructor not getting called

  • Issue #3559 - 1.2.0 is missing from download page

  • Issue #3554 - Clang 6.0 warning of hiding overloaded virtual function

  • Issue #3510 - Build on ppc64 fails

  • Issue #3482 - Improve error message when HPX_WITH_MAX_CPU_COUNT is too low for given system

  • Issue #3453 - Two HPX applications can’t run at the same time.

  • Issue #3452 - Scaling issue on the change to 2 NUMA domains

  • Issue #3442 - HPX set_difference, set_intersection failure cases

  • Issue #3437 - Ensure parent_task pointer when child task is created and child/parent are on same locality

  • Issue #3255 - Suspension with lock for --hpx:list-component-types

  • Issue #3034 - Use C++17 structured bindings for serialization

  • Issue #2999 - Change thread scheduling use of size_t for thread indexing

Closed pull requests#

  • PR #3865 - adds hpx_target_compile_option_if_available

  • PR #3864 - Helper functions that are useful in numa binding and testing of allocator

  • PR #3862 - Temporary fix to local_dataflow_boost_small_vector test

  • PR #3860 - Add cache line padding to intermediate results in for loop reduction

  • PR #3859 - Remove HPX_TLL_PUBLIC and HPX_TLL_PRIVATE from CMake files

  • PR #3858 - Add compile flags and definitions to modules

  • PR #3851 - update hpxmp release tag to v0.2.0

  • PR #3849 - Correct BOOST_ROOT variable name in quick start guide

  • PR #3847 - Fix attach_debugger configuration option

  • PR #3846 - Add tests for libs header tests

  • PR #3844 - Fixing source_groups in preprocessor module to properly handle compatibility headers

  • PR #3843 - This fixes the launch_process/launched_process pair of tests

  • PR #3842 - Fix macro call with ITTNOTIFY enabled

  • PR #3840 - Fixing SLURM environment parsing

  • PR #3837 - Fixing misplaced #endif

  • PR #3835 - make all latch members protected for consistency

  • PR #3834 - Disable transpose_block_numa example on CircleCI

  • PR #3833 - make latch counter_ protected for deriving latch in hpxmp

  • PR #3831 - Fix CircleCI config for modules

  • PR #3830 - minor fix: option HPX_WITH_TEST was not working correctly

  • PR #3828 - Avoid for binaries that depend on HPX to directly link against internal modules

  • PR #3827 - Adding shortcut for hpx::get_ptr<>(sync, id) for a local, non-migratable objects

  • PR #3826 - Fix and update modules documentation

  • PR #3825 - Updating default APEX version to 2.1.3 with HPX

  • PR #3823 - Fix pkgconfig libs handling

  • PR #3822 - Change includes in hpx_wrap.cpp to more specific includes

  • PR #3821 - Disable barrier_3792 test when networking is disabled

  • PR #3820 - Assorted CMake fixes

  • PR #3815 - Removing left-over debug output

  • PR #3814 - Allow setting default scheduler mode via the configuration database

  • PR #3813 - Make the deprecation warnings issued by the old pp headers optional

  • PR #3812 - Windows requires to handle symlinks to directories differently from those linking files

  • PR #3811 - Clean up PP module and library skeleton

  • PR #3806 - Moving include path configuration to before APEX

  • PR #3804 - Fix latch

  • PR #3803 - Update hpxcxx to look at lib64 and use python3

  • PR #3802 - Numa binding allocator

  • PR #3801 - Remove duplicated includes

  • PR #3800 - Attempt to fix Posix context switching after lazy init changes

  • PR #3798 - count and count_if accepts different iterator types

  • PR #3797 - Adding a couple of override keywords to overloaded virtual functions

  • PR #3796 - Re-enable testing all schedulers in shutdown_suspended_test

  • PR #3795 - Change std::terminate to std::abort in SIGSEGV handler

  • PR #3794 - Fixing #3792

  • PR #3793 - Extending migrate_polymorphic_component unit test

  • PR #3791 - Change throw() to noexcept

  • PR #3790 - Remove deprecated options for 1.3.0 release

  • PR #3789 - Remove Boost filesystem compatibility header

  • PR #3788 - Disabled even more spots that should not execute if networking is disabled

  • PR #3787 - Bump minimal boost supported version to 1.61.0

  • PR #3786 - Bump minimum required versions for 1.3.0 release

  • PR #3785 - Explicitly set number of jobs for all ninja invocations on CircleCI

  • PR #3784 - Fix leak and address sanitizer problems

  • PR #3783 - Disabled even more spots that should not execute is networking is disabled

  • PR #3782 - Cherry-picked tuple and thread_init_data fixes from #3701

  • PR #3781 - Fix generic context coroutines after lazy stack allocation changes

  • PR #3780 - Rename hello world examples

  • PR #3776 - Sort algorithms now use the supplied chunker to determine the required minimal chunk size

  • PR #3775 - Disable Boost auto-linking

  • PR #3774 - Tag and push stable builds

  • PR #3773 - Enable migration of polymorphic components

  • PR #3771 - Fix link to stackoverflow in documentation

  • PR #3770 - Replacing constexpr if in brace-serialization code

  • PR #3769 - Fix SIGSEGV handler

  • PR #3768 - Adding flags to scheduler allowing to control thread stealing and idle back-off

  • PR #3767 - Fix help formatting in hpxrun.py

  • PR #3765 - Fix a couple of bugs in the thread test

  • PR #3764 - Workaround for SFINAE regression in msvc14.2

  • PR #3762 - Prevent MSVC from prematurely instantiating things

  • PR #3761 - Update python scripts to work with python 3

  • PR #3760 - Fix callable vtable for GCC4.9

  • PR #3759 - Rename PAGE_SIZE to PAGE_SIZE_ because AppleClang

  • PR #3755 - Making sure locks are not held during suspension

  • PR #3754 - Disable more code if networking is not available/not enabled

  • PR #3752 - Move util::format implementation to source file

  • PR #3751 - Fixing problems with lcos::barrier and iostreams

  • PR #3750 - Change error message to take into account use_guard_page setting

  • PR #3749 - Fix lifetime problem in run_as_hpx_thread

  • PR #3748 - Fixed unusable behavior of the clang code analyzer.

  • PR #3747 - Added PMIX_RANK to the defaults of HPX_WITH_PARCELPORT_MPI_ENV.

  • PR #3745 - Introduced cache_aligned_data and cache_line_data helper structure

  • PR #3742 - Remove more unused functionality from util/logging

  • PR #3740 - Fix includes in partitioned vector tests

  • PR #3739 - More fixes to make sure that std::flush really flushes all output

  • PR #3737 - Fix potential shutdown problems

  • PR #3736 - Fix guided_pool_executor after dataflow changes caused compilation fail

  • PR #3734 - Limiting executor

  • PR #3732 - More constrained bound constructors

  • PR #3730 - Attempt to fix deadlocks during component loading

  • PR #3729 - Add latch member function count_up and reset, requested by hpxMP

  • PR #3728 - Send even empty buffers on hpx::endl and hpx::flush

  • PR #3727 - Adding example demonstrating how to customize the memory management for a component

  • PR #3726 - Adding support for passing command line options through the HPX_COMMANDLINE_OPTIONS environment variable

  • PR #3722 - Document known broken OpenMPI builds

  • PR #3716 - Add barrier reset function, requested by hpxMP for reusing barrier

  • PR #3715 - More work on functions and vtables

  • PR #3714 - Generate single-page HTML, PDF, manpage from documentation

  • PR #3713 - Updating default APEX version to 2.1.2

  • PR #3712 - Update release procedure

  • PR #3710 - Fix the C++11 build, after #3704

  • PR #3709 - Move some component_registry functionality to source file

  • PR #3708 - Ignore all locks while handling assertions

  • PR #3707 - Remove obsolete hpx runtime executable

  • PR #3705 - Fix and simplify make_ready_future overload sets

  • PR #3704 - Reduce use of binders

  • PR #3703 - Ini

  • PR #3702 - Fixing CUDA compiler errors

  • PR #3700 - Added barrier::increment function to increase total number of thread

  • PR #3697 - One more attempt to fix migration…

  • PR #3694 - Fixing component migration

  • PR #3693 - Print thread state when getting disallowed value in set_thread_state

  • PR #3692 - Only disable constexpr with clang-cuda, not nvcc+gcc

  • PR #3691 - Link with libsupc++ if needed for thread_local

  • PR #3690 - Remove thousands separators in set_operations_3442 to comply with C++11

  • PR #3688 - Decouple serialization from function vtables

  • PR #3687 - Fix a couple of test failures

  • PR #3686 - Make sure tests.unit.build are run after install on CircleCI

  • PR #3685 - Revise quickstart CMakeLists.txt explanation

  • PR #3684 - Provide concept emulation for Ranges-TS concepts

  • PR #3683 - Ignore uninitialized chunks

  • PR #3682 - Ignore uninitialized chunks. Check proper indices.

  • PR #3680 - Ignore uninitialized chunks. Check proper range indices

  • PR #3679 - Simplify basic action implementations

  • PR #3678 - Making sure HPX_HAVE_LIBATOMIC is unset before checking

  • PR #3677 - Fix generated full version number to be usable in expressions

  • PR #3674 - Reduce functional utilities call depth

  • PR #3672 - Change new build system to use existing macros related to pseudo dependencies

  • PR #3669 - Remove indirection in function_ref when thread description is disabled

  • PR #3668 - Unbreaking async_*cb* tests

  • PR #3667 - Generate version.hpp

  • PR #3665 - Enabling MPI parcelport for gitlab runners

  • PR #3664 - making clang-tidy work properly again

  • PR #3662 - Attempt to fix exception handling

  • PR #3661 - Move lcos::latch to source file

  • PR #3660 - Fix accidentally explicit gid_type default constructor

  • PR #3659 - Parallel executor latch

  • PR #3658 - Fixing execution_parameters

  • PR #3657 - Avoid dangling references in wait_all

  • PR #3656 - Avoiding lifetime problems with sync_put_parcel

  • PR #3655 - Fixing nullptr dereference inside of function

  • PR #3652 - Attempt to fix thread_map_type definition with C++11

  • PR #3650 - Allowing for end iterator being different from begin iterator

  • PR #3649 - Added architecture identification to cmake to be able to detect timestamp support

  • PR #3645 - Enabling sanitizers on gitlab runner

  • PR #3644 - Attempt to tackle timeouts during startup

  • PR #3642 - Cleanup parallel partitioners

  • PR #3640 - Dataflow now works with functions that return a reference

  • PR #3637 - Merging the executor-enabled overloads of shared_future<>::then

  • PR #3633 - Replace deprecated boost endian macros

  • PR #3632 - Add instructions on getting HPX to documentation

  • PR #3631 - Simplify parcel creation

  • PR #3630 - Small additions and fixes to release procedure

  • PR #3629 - Modular pp

  • PR #3627 - Implement util::function_ref

  • PR #3626 - Fix cancelable_action_client example

  • PR #3625 - Added automatic serialization for simple structs (see #3034)

  • PR #3624 - Updating the default order of priority for thread_description

  • PR #3621 - Update copyright year and other small formatting fixes

  • PR #3620 - Adding support for gitlab runner

  • PR #3619 - Store debug logs and core dumps on CircleCI

  • PR #3618 - Various optimizations

  • PR #3617 - Fix link to the gpg key (#2)

  • PR #3615 - Fix unused variable warnings with networking off

  • PR #3614 - Restructuring counter data in scheduler to reduce false sharing

  • PR #3613 - Adding support for gitlab runners

  • PR #3610 - Don’t wait for stop_condition in main thread

  • PR #3608 - Add inline keyword to invalid_thread_id definition for nvcc

  • PR #3607 - Adding configuration key that allows one to explicitly add a directory to the component search path

  • PR #3606 - Add nvcc to exclude constexpress since is it not supported by nvcc

  • PR #3605 - Add inline to definition of checkpoint stream operators to fix link error

  • PR #3604 - Use format for string formatting

  • PR #3603 - Improve the error message for using to less MAX_CPU_COUNT

  • PR #3602 - Improve the error message for to small values of MAX_CPU_COUNT

  • PR #3600 - Parallel executor aggregated

  • PR #3599 - Making sure networking is disabled for default one-locality-runs

  • PR #3596 - Store thread exit functions in forward_list instead of deque to avoid allocations

  • PR #3590 - Fix typo/mistake in thread queue cleanup_terminated

  • PR #3588 - Fix formatting errors in launching_and_configuring_hpx_applications.rst

  • PR #3586 - Make bind propagate value category

  • PR #3585 - Extend Cmake for building hpx as distribution packages (refs #3575)

  • PR #3584 - Untangle function storage from object pointer

  • PR #3582 - Towards Modularized HPX

  • PR #3580 - Remove extra || in merge.hpp

  • PR #3577 - Partially revert “Remove vtable empty flag”

  • PR #3576 - Make sure empty startup/shutdown functions are not being used

  • PR #3574 - Make sure DATAPAR settings are conveyed to depending projects

  • PR #3573 - Make sure HPX is usable with latest released version of Vc (V1.4.1)

  • PR #3572 - Adding test ensuring ticket 3565 is fixed

  • PR #3571 - Make empty [unique_]function vtable non-dependent

  • PR #3566 - Fix compilation with dynamic bitset for CPU masks

  • PR #3563 - Drop util::[unique_]function target_type

  • PR #3562 - Removing the target suffixes

  • PR #3561 - Replace executor traits return type deduction (keep non-SFINAE)

  • PR #3557 - Replace the last usages of boost::atomic

  • PR #3556 - Replace boost::scoped_array with std::unique_ptr

  • PR #3552 - (Re)move APEX readme

  • PR #3548 - Replace boost::scoped_ptr with std::unique_ptr

  • PR #3547 - Remove last use of Boost.Signals2

  • PR #3544 - Post 1.2.0 version bumps

  • PR #3543 - added Ubuntu dependency list to readme

  • PR #3531 - Warnings, warnings…

  • PR #3527 - Add CircleCI filter for building all tags

  • PR #3525 - Segmented algorithms

  • PR #3517 - Replace boost::regex with C++11 <regex>

  • PR #3514 - Cleaning up the build system

  • PR #3505 - Fixing type attribute warning for transfer_action

  • PR #3504 - Add support for rpm packaging

  • PR #3499 - Improving spinlock pools

  • PR #3498 - Remove thread specific ptr

  • PR #3486 - Fix comparison for expect_connecting_localities config entry

  • PR #3469 - Enable (existing) code for extracting stack pointer on Power platform