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
andlatch
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 target1d_stencil_1_exe
is now simply called1d_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 optionHPX_WITH_UNWRAPPED_SUPPORT
. Likewise,inclusive_scan
compatibility overloads have been turned off by default. They can still be turned on withHPX_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 withHPX_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 directoryIssue #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()
withnoexcept
Issue #3763 - configurable sort limit per task
Issue #3758 - dataflow doesn’t convert
future<future<T>>
tofuture<T>
Issue #3757 - When compiling undefined reference to
hpx::hpx_check_version_1_2
HPX V1.2.1, Ubuntu 18.04.01 Server EditionIssue #3753 -
--hpx:list-counters=full
crashesIssue #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 errorIssue #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 functionsIssue #3634 - The build fails if
shared_future<>::then
is called with a thread executorIssue #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 systemIssue #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 objectsPR #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 functionsPR #3796 - Re-enable testing all schedulers in shutdown_suspended_test
PR #3795 - Change
std::terminate
to std::abort inSIGSEGV
handlerPR #3794 - Fixing #3792
PR #3793 - Extending migrate_polymorphic_component unit test
PR #3791 - Change
throw()
tonoexcept
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
toPAGE_SIZE_
because AppleClangPR #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 filePR #3751 - Fixing problems with
lcos::barrier
and iostreamsPR #3750 - Change error message to take into account
use_guard_page
settingPR #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 ofHPX_WITH_PARCELPORT_MPI_ENV
.PR #3745 - Introduced
cache_aligned_data
andcache_line_data
helper structurePR #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 outputPR #3737 - Fix potential shutdown problems
PR #3736 - Fix
guided_pool_executor
after dataflow changes caused compilation failPR #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 hpxMPPR #3728 - Send even empty buffers on
hpx::endl
andhpx::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 variablePR #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 setsPR #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 threadPR #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+gccPR #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 checkingPR #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 disabledPR #3668 - Unbreaking
async_*cb*
testsPR #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 filePR #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++11PR #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 threadPR #3608 - Add inline keyword to
invalid_thread_id
definition for nvccPR #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 errorPR #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 ofdeque
to avoid allocationsPR #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.hppPR #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 projectsPR #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-dependentPR #3566 - Fix compilation with dynamic bitset for CPU masks
PR #3563 - Drop
util::[unique_]function
target_typePR #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
withstd::unique_ptr
PR #3552 - (Re)move APEX readme
PR #3548 - Replace
boost::scoped_ptr
withstd::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