HPX V1.8.0 (May 18, 2022)
Contents
HPX V1.8.0 (May 18, 2022)#
With HPX parallel algorithms been fully adapted to C++20 the new release achieves full conformance with C++20 concurrency and parallelism facilities. HPX now supports all of the algorithms as specified by C++20. We have added support for vectorization to more of our algorithms. Much work has been done towards implementing P2300 (“std::execution”) and implementing the underlying senders/receivers facilities. Finally, The new release comes with a brand new documentation interface!
General changes#
The new documentation can now be found on our webpage: https://hpx-docs.stellar-group.org. This includes a completely new and user-friendly interface environment along with restructuring of certain components. The content in the “Quick start”, “Manual” and “Examples” was improved, while the “Build system” page was adapted to include necessary information for newcommers.
With the vectorization support available in modern hardware architectures HPX now provides new data-parallel vector execution policies
hpx::execution::simd
andhpx::execution::par_simd
that enable significant speed-up of our parallel algorithm implementations. The following algorithms now support SIMD execution:copy
,copy_n
generate
adjacent_difference
,adjacent_find
all_of
,any_of
,none_of
equal
,mismatch
,inner_product
count
,count_if
fill
,fill_n
find
,find_end
,find_first_of
,find_if
,find_if_not
for_each
,for_each_n
generate
,generate_n
.
Based on top of P2300 the HPX parallel algorithms now support the pipeline syntax towards an effort to unify their usage along with senders/receivers. The HPX parallel algorithms can now bind with senders/receivers using the pipeline operator.
Several changes took place on the executors provided by HPX:
The executors now support the
num_cores
options in order for the user to be able to specify the desired number of cores to be used in the correspodning execution.The
scheduler
executor was implemented on top of senders/receivers and can be used with all HPX facilities that schedule new work, such as parallel algorithms,hpx::async
,hpx::dataflow
, etc.The performance of
fork_join_executor
was improved.The following algorithms have been added/adapted to be C++20 conformant:
min_element
max_element
minmax_element
starts_with
ends_with
swap_ranges
unique
unique_copy
rotate
rotate_copy
sort
shift_left
shift_right
stable_sort
partition
partition_copy
stable_partition
adjacent_difference
nth_element
partial_sort
partial_sort_copy
.
HPX_FORWARD
/HPX_MOVE
macros were introduced that replaced thestd::move
andstd::forward
facilities that in the library code.Hangs on distributed barrier were fixed.
The performance of
scan_partitioner
was improved.Support was added for
thread_priority
to theparallel_execution_policy
Regarding senders/receivers and the P2300 proposal various actions took place.
stop_token
was adapted to the recent proposal version (in_place_stop_token
was introduced). Also hint, annotation, priority and stacksize properties were added to the scheduler executor. Stop support was added towhen_all
. Support for completion signatures was added. The following schedulers and algorithms were added:get_completion_scheduler
any_sender
andunique_any_sender
split
sendertransform_mpi
sendertransfer
senderlet_error
,let_stopped
get_env
and related environment queriesschedule
,set_value
,set_error
,set_done
,start
andconnect
are now proper customization points as defined in P2300.
Several namespaces were altered towards conformance with C++20. Compatibility layers have been added and the old versions will be removed in next releases. The namespace changes are the following:
hpx::parallel::induction/reduction
were movied into namespacehpx::experimental
for_loop
and friends were moved into namespacehpx::experimental
.hpx::util::optional
and friends were moved into namespacehpx
.hpx::lcos::barrier
has been moved into thehpx::distributed
namespace andhpx::lcos::local::cpp20_barrier
has been renamed tobarrier
and moved into thehpx
namespace.hpx::lcos::latch
has been moved into thehpx::distributed
namespace andlcos::local::latch
has been moved into thehpx
namespace. Thecount_down_and_wait()
functionality oflatch
has been renamed toarrive_and_wait()
.hpx::util::unique_function_nonser
has been renamed tohpx::move_only_function
.hpx::util::unique_function
has been renamed tohpx::distributed::move_only_function
.hpx::util::function
has been renamed tohpx::distributed::function
.hpx::util::function_nonser
has been renamed tohpx::function
.hpx::util::function_ref
have been moved to namespacehpx
.hpx::lcos::split_future
changed namespace and is now used ashpx::split_future
.hpx::lcos::local::counting_semaphore
has been deprecated andhpx::lcos::local::cpp20_counting_semaphore
has been renamed tohpx::counting_semaphore
.hpx::lcos::local::cpp20_binary_semaphore
has been renamed tohpx::binary_semaphore
.hpx::lcos::local::sliding_semaphore
has been renamed tohpx::sliding_semaphore
andhpx::lcos::local::sliding_semaphore_var
has been renamed tohpx::sliding_semaphore_var
.hpx::lcos::local::spinlock
has been renamed tohpx::spinlock
.hpx::lcos::local::mutex
has been renamed tohpx::mutex
.hpx::lcos::local::timed_mutex
has been renamed tohpx::timed_mutex
.hpx::lcos::local::no_mutex
has been renamed tohpx::no_mutex
.hpx::lcos::local::recursive_mutex
has been renamed tohpx::recursive_mutex
.hpx::lcos::local::shared_mutex
has been renamed tohpx::shared_mutex
.hpx::lcos::local::upgrade_lock
has been renamed tohpx::upgrade_lock
.hpx::lcos::local::upgrade_to_unique_lock
has been renamed tohpx::upgrade_to_unique_lock
.hpx::lcos::local::condition_variable
has been renamed tohpx::condition_variable
.hpx::lcos::local::condition_variable_var
has been renamed tohpx::condition_variable_var
.hpx::lcos::local::once_flag
has been renamed tohpx::once_flag
, and .hpx::lcos::local::call_once
has been renamed tohpx::call_once
.
The new LCI (Lightweight Communication Interface) parcelport was added that supports irregular and asynchronous applications like graph analysis, sparce linear algebra, modern parallel architectures etc. Major features include:
Support for advanced communication primitives like two sided send/recv and one sided remote put.
Better multi-threaded performance.
Explicit user control of communication resource.
Flexible signaling mechanisms (synchronizer, completion queue, active message handler).
The following CMake flags were added, mostly to support using HPX as a backend for SHAD (https://github.com/pnnl/SHAD). Please note that these options enable questionable functionalities, partially they even enable undefined behavior. Please only use any of them if you know what you’re doing:
HPX_SERIALIZATION_WITH_ALLOW_RAW_POINTER_SERIALIZATION
HPX_SERIALIZATION_WITH_ALL_TYPES_ARE_BITWISE_SERIALIZABLE
HPX_SERIALIZATION_WITH_ALLOW_CONST_TUPLE_MEMBERS
Breaking changes#
Minimum required C++ standard library is C++17.
Support for GCC 7 and Clang 8.0.0 and below has been removed.
CUDA version required updated to 11.4.
CMake version required updated to 3.18.
The default version of Asio used was updated to 1.20.0.
The default version of APEX used was updated to 2.5.1.
APEX version was updated to 2.5.1.
tagged_pair
andtagged_tuple
were removed.tag_dispatch
was renamed totag_invoke
.hpx.max_backgroud_threads
was renamed tohpx.parcel.max_background_threads
.The following CMake flags were removed after being deprecated for at least two releases:
HPX_SCHEDULER_MAX_TERMINATED_THREADS
HPX_WITH_GOOGLE_PERFTOOLS
HPX_WITH_INIT_START_OVERLOADS_COMPATIBILITY
HPX_HAVE_{COROUTINE,PLUGIN}_GCC_HIDDEN_VISIBILITY
HPX_TOP_LEVEL
HPX_WITH_COMPUTE_CUDA
HPX_WITH_ASYNC_CUDA
annotate_function
was renamed toscoped_annotation
.execution::transform
was renamed toexecution::then
.execution::detach
was renamed toexecution::start_detached
.execution::on_sender
was renamed toexecution::schedule_on
.execution::just_on
was renamed toexecution::just_transfer
.execution::set_done
was renamed toexecution::set_stopped
.
Closed issues#
Issue #5871 - distributed::channel.regsiter_as terminates the active task.
Issue #5856 - Performance counters do not compile
Issue #5828 - hpx::distributed:barrier errors
Issue #5812 - OctoTiger does not compile with HPX master and CUDA 11.5
Issue #5784 - HPX failing with co_await and hpx::when_all(futures)
Issue #5774 - CMake can’t find HPXCacheVariables.cmake
Issue #5764 - Fix HIP problem
Issue #5724 - Missing binary filter compression header
Issue #5721 - Cleanup after repository split
Issue #5701 - It seems that the tcp parcelport is running, and the MPI parcelport is ignored
Issue #5692 - Kokkos compilation fails when using both HPX and CUDA execution spaces with gcc 9.3.0
Issue #5686 - Rename annotate_function
Issue #5668 - HPX does not detect the C++ 20 standard using gcc 11.2
Issue #5666 - Compilation error using boost 1.76 and gcc 11.2.1
Issue #5653 - Implement P2248 for our algorithms
Issue #5647 - [User input needed] Remove (CUDA) compute functionality?
Issue #5590 - hello_world_distributed fails on startup with HPX stable, MPICH 3.3.2, on Deep Bayou
Issue #5570 - Rename tag_dispatch to tag_invoke
Issue #5566 - can’t build simple example: “Cannot use the dummy implementation of future_then_dispatch”
Issue #5565 - build failure: hpx::string_util::trim()
Issue #5553 - Github action to validate the cff file refs #5471
Issue #5504 - CMake does not work for HPX 1.7.0 on Piz Daint
Issue #5503 - Use contiguous index queue in bulk execution to reduce number of spawned tasks
Issue #5502 - C++20 std::coroutine cmake detection
Issue #5478 - hpx.dll built with vcpkg got functions pointing to the same location
Issue #5472 - Compilation error with cuda/11.3
Issue #5469 - Compiler warning about HPX_NODISCARD when building with APEX
Issue #5463 - Address minor comments of the C++17 PR bump
Issue #5456 - Use std::ranges::iter_swap where available
Issue #5404 - Build fails with error “Cannot open include file asio/io_context.hpp”
Issue #5381 - Add starts_with and ends_with algorithms
Issue #5344 - Further simplify tag_invoke helpers
Issue #5269 - Allow setting a label on executors/policies
Issue #5219 - (Re-)Implement executor API on top of sender/receiver infrastructure
Issue #5216 - Performance counter module not loading
Issue #5162 - Require C++17 support
Issue #5156 - Disentangle segmented algorithms
Issue #5118 - Lock held while suspending
Issue #5111 - Tests fail to build with binary_filter plugins enabled
Issue #5110 - Tests don’t get built
Issue #5105 - PAPI performance counters not available
Issue #5002 - hpx::lcos::barrier() results in deadlock
Issue #4992 - Clang-format the rest of the files
Issue #4987 - Use std::function in public APIs
Issue #4871 - HEP: conformance to C++20
Issue #4822 - Adapt parallel algorithms to C++20
Issue #4736 - Deprecate hpx::flush and hpx::endl
Issue #4558 - Prevent work-stealing from stalling
Issue #4495 - Add anchor links to table rows in documentation
Issue #4469 - New thread state: pending_low
Issue #4321 - After the modularization the libfabric parcelport does not compile
Issue #4308 - Using APEX on multinode jobs when HPX_WITH_NETWORKING = OFF
Issue #3995 - Use C++20 std::source_location where available, adapt ours to conform
Issue #3861 - Selected processor does not support ‘yield’ in ARM mode
Issue #3706 - Add shift_left and shift_right algorithms
Issue #3646 - Parallel algorithms should accept iterator/sentinel pairs
Issue #3636 - HPX Modularization
Issue #3546 - Modularization of HPX
Issue #3474 - Modernize CMake used in HPX
Issue #1836 - hpx::parallel does not have a sort implementation
Issue #1668 - Adapt all parallel algorithms to Ranges TS
Issue #1141 - Implement N4409 on top of HPX
Closed pull requests#
PR #5885 - Testing newer ASIO version
PR #5884 - Fix miscellaneous doc sections
PR #5882 - Fixing OctoTiger incompatibility introduced recently
PR #5881 - Fixing recent patch that disables ATOMIC_FLAG_INIT for C++20 and up
PR #5880 - refactor: convert counter_status enum to enum class
PR #5878 - Docs: Replaced non-existent create_reducer function with create_communicator
PR #5877 - Doc updates hpx runtime and resources
PR #5876 - Updates to documentation; grammar edits.
PR #5875 - Doc updates starting the hpx runtime
PR #5874 - Doc updates launching configuring
PR #5873 - Prevent certain generated files from being deleted on reconfigure
PR #5870 - Adding support for the PJM batch environment
PR #5867 - Update CMakeLists.txt
PR #5866 - add cmake option HPX_WITH_PARCELPORT_COUNTERS
PR #5864 - ATOMIC_INIT_FLAG is deprecated starting C++20
PR #5863 - Adding llvm 14.0.0 with boost 1.79.0 to Jenkins
PR #5861 - Let install step proceed on CircleCI even if the segmented algorithms fail
PR #5860 - Updating APEX tag
PR #5859 - Splitting documentation generation steps on CircleCI
PR #5854 - Fixing left-overs from changing counter_type to enum class
PR #5853 - Adding HPX dependency tool (adapted from Boostdep tool)
PR #5852 - Optimize LCI parcelport
PR #5851 - Forking dynamic_bitset from Boost
PR #5850 - Convert perf_counters::counter_type enum to enum class.
PR #5849 - Update LCI parcelport to LCI v1.7.1
PR #5848 - Fedora related fixes
PR #5847 - Fix API, troubleshooting & people
PR #5844 - Attempting to fix timeouts of segmented iterator tests
PR #5842 - change the default value of HPX_WITH_LCI_TAG to v1.7
PR #5841 - Move the split_future facilities into the namespace hpx
PR #5840 - wait_xxx_nothrow functions return whether one of the futures is exceptional
PR #5839 - Moving a list of synchronization primitives into namespace hpx
PR #5837 - Moving latch types to hpx and hpx::distributed namespaces
PR #5835 - Add missing compatibility layer for id_type::management_type values
PR #5834 - API docs changes
PR #5831 - Further improvement actions to rotate
PR #5830 - Exposing zero-copy serialization threshold through configuration option
PR #5829 - Attempting to fix failing barrier test
PR #5827 - Add back explicit template parameter to ignore_while_checking to compile with nvcc
PR #5826 - Reduce number of allocations while calling async_bulk_execute
PR #5825 - Steal from neighboring NUMA domain only
PR #5823 - Remove obsolete directories and adjust build system
PR #5822 - Clang-format remaining files
PR #5821 - Enable permissive- flag on Windows GitHub actions builders
PR #5820 - Convert throwmode enum to enum class
PR #5819 - Marking customization points for intrusive_ptr as noexcept
PR #5818 - Unconditionally use C++17 attributes
PR #5817 - Modernize naming modules
PR #5816 - Modernize cache module
PR #5815 - Reapply flyby changes from #5467
PR #5814 - Avoid test timeouts by reducing test sizes
PR #5813 - The CUDA problem is not fixed in V11.5 yet…
PR #5811 - Make sure reduction value is properly moved, when possible
PR #5810 - Improve error reporting during device initialization in HIP environments
PR #5809 - Converting scheduler enums into enum class
PR #5808 - Deprecate hpx::flush and friends
PR #5807 - Use C++20 std::source_location, if available
PR #5806 - Moving promise and packaged_task to new namespaces
PR #5805 - Attempting to fix a test failure when using the LCI parcelpor
PR #5803 - Attempt to fix CUDA related OctoTiger problems
PR #5800 - Add option to restrict MPI background work to subset of cores
PR #5798 - Adding MPI as a dependency to APEX
PR #5797 - Extend Sphinx role to support arbitrary text to display on a link
PR #5796 - Disable CUDA tests that cause NVCC to silently fail without error messages
PR #5795 - Avoid writing path and directories into HPXCacheVariables.cmake
PR #5793 - Remove features that are deprecated since V1.6
PR #5792 - Making sure num_cores is properly handled by parallel_executor
PR #5791 - Moving bind, bind_front, bind_back to namespace hpx
PR #5790 - Moving serializable function/move_only_function into namespace hpx::distributed
PR #5787 - Remove unneeded (and commented) tests
PR #5786 - Attempting to fix hangs in distributed barrier
PR #5785 - add cmake code to detect arm64 on macOS
PR #5783 - Moving function and function_ref into namespace hpx
PR #5781 - Updating used version of Visual Studio
PR #5780 - Update Piz Daint Jenkins configurations from gcc/clang 7 to 8
PR #5778 - Updated for_loop.hpp
PR #5777 - Update reference for foreach benchmark
PR #5775 - Move optional into namespace hpx
PR #5773 - Moving barrier to consolidated namespaces
PR #5772 - Adding missing docs for ranges::find_if and find_if_not algorithms
PR #5771 - Moving for_loop into namespace hpx::experimental
PR #5770 - Fixing HIP issues
PR #5769 - Slight improvement of small_vector performance
PR #5766 - Fixing a integral conversion warning
PR #5765 - Adding a sphinx role allowing to link to a file directly in github
PR #5763 - add num_cores facility
PR #5762 - Fix Public API main page
PR #5761 - Add missing inline to mpi_exception.hpp error_message function
PR #5760 - Update cdash build url
PR #5759 - Switch to use generic rostam SLURM partitions
PR #5758 - Adding support for P2300 completion signatures
PR #5757 - Fix missing links in Public API
PR #5756 - Add stop support to when_all
PR #5755 - Support for data-parallelism for mismatch algorithm
PR #5754 - Support for data-parallelism for equal algorithm
PR #5751 - Propagate MPI dependencies to command line handling
PR #5750 - Make sure required MPI initialization flags are properly applied and supported
PR #5749 - P2300 stop token
PR #5748 - Adding environmental query CPOs
PR #5747 - Renaming set_done to set_stopped (as per P2300)
PR #5745 - Modernize serialization module
PR #5743 - Add check for MPICH and set the correct env to support multi-threaded
PR #5742 - Remove obsolete files related to cpuid, etc.
PR #5741 - Support for data-parallelism for adjacent find
PR #5740 - Support for data-parallelism for find algorithms
PR #5739 - Enable the option to attach a debugger on a segmentation fault (linux)
PR #5738 - Fixing spell-checking errors
PR #5737 - Attempt to fix migrate_component issue
PR #5736 - Set commit status from Jenkins also for special branches
PR #5734 - Revert #5586
PR #5732 - Attempt to improve build-id reporting to cdash
PR #5731 - Randomly delay execution of bash scripts launched by Jenkins
PR #5729 - Workaround for CMake/Ninja generator OOM problem
PR #5727 - Moving compression plugins to components directory
PR #5726 - Moving/consolidating parcel coalescing plugin sources
PR #5725 - Making sure headers for serialization filters are being installed
PR #5723 - Moving more tests to modules
PR #5722 - Removing superfluous semicolons
PR #5720 - Moving parcelports into modules
PR #5719 - Moving more files to parcelset module
PR #5718 - build: refactor sphinx config file
PR #5717 - Creating parcelset modules
PR #5716 - Avoid duplicate definition error
PR #5715 - The new LCI parcelport for HPX
PR #5713 - Significantly reduce CI jobs run on Piz Daint
PR #5712 - Updating jenkins configuration for Rostam2.2
PR #5711 - Refactor manual sections
PR #5710 - Making task_group serializable
PR #5709 - Update the MPI cmake setup
PR #5707 - Better diagnose parcel bootstrap problems
PR #5704 - Test with hwloc 2.7.0 with GCC 11
PR #5703 - Fix counting_iterator container tests
PR #5702 - Attempting to fix CircleCI timeouts
PR #5699 - Update CI to use Boost 1.78.0
PR #5697 - Adding fork_join_executor to foreach_benchmark
PR #5696 - Modernize when_all and friends (when_any, when_some, when_each)
PR #5693 - Fix test errors with _GLIBCXX_DEBUG defined
PR #5691 - Rename annotate_function to scoped_annotation
PR #5690 - Replace tag_dispatch with tag_invoke in minmax segmented
PR #5688 - Remove more deprecated macros
PR #5687 - Add most important CMake options
PR #5685 - Fix future API
PR #5684 - Move lock registration to separate module and remove global lock registration
PR #5683 - Make hpx::wait_all etc. throw exceptions when waited futures hold exceptions and deprecate hpx::lcos::wait_all[_n] in favor of hpx::wait_all[_n]
PR #5682 - Fix macOS test exceptions
PR #5681 - docs: add links to hpx recepies
PR #5680 - Embed base execution policies to datapar execution policies
PR #5679 - Fix fork_join_executor with dynamic schedule
PR #5678 - Fix compilation of service executors with nvcc
PR #5677 - Remove compute_cuda module
PR #5676 - Don’t require up-to-date approvals for bors
PR #5675 - Add default template type parameters for algorithms
PR #5674 - Allow using any_sender in global variables
PR #5671 - Making sure task_group can be reused
PR #5670 - Relax constraints on execution::when_all
PR #5669 - Use HPX_WITH_CXX_STANDARD for controlling C++ version
PR #5667 - Attempt to fix compilation issues with Boost V1.76
PR #5664 - Change logging errors to warnings in schedulers
PR #5663 - Use dynamic bitsets by default for CPU masks
PR #5662 - Disambiguate namespace for MSVC
PR #5660 - Replacing remaining std::forward and std::move with HPX_FORWARD and HPX_MOVE
PR #5659 - Modernize hpx::future and related facilities
PR #5658 - Replace HPX_INLINE_CONSTEXPR_VARIABLE with inline constexpr
PR #5657 - Remove tagged, tagged_pair and tagged_tuple, remove tuple/pair specializations
PR #5656 - Rename on execution::schedule_from, rename just_on to just_transfer, and add transfer
PR #5655 - Avoid for module lists to grow indefinitely in cmake cache
PR #5649 - build: replace usage of Python’s reserved words and functions as variable names
PR #5648 - Modernize action modules and related code
PR #5646 - Fix ends_with test
PR #5645 - Add matrix multiplication example
PR #5644 - Rename execution::transform to execution::then and execution::detach to execution::start_detached
PR #5643 - Update performance test references
PR #5642 - Adapting adjacent_difference to work with proxy iterators
PR #5641 - Factorize perftests scripts
PR #5640 - Fixed links to sources in Sphinx documentation
PR #5639 - Fix generate datapar tests for Vc
PR #5638 - Simd all any none
PR #5637 - Use bors for merging pull requests
PR #5636 - Fix leftover std::holds_alternative usage
PR #5635 - Update container image tag in GitHub actions HIP configuration
PR #5633 - Moving packaged_task to module futures
PR #5632 - Tell Asio to use std::aligned_new only if available
PR #5631 - Adding tag parameter to channel communicator get/set
PR #5630 - Add partial_sort_copy and adapt partial sort to c++ 20
PR #5629 - Set HPX_WITH_FETCH_ASIO to OFF as available in the docker image
PR #5628 - Add Clang 13 CI configuration
PR #5627 - Replace alternative keyword
PR #5626 - docs: add support for BibTeX references in Sphinx docs
PR #5624 - Fix pkgconfig replacements involving CMAKE_INSTALL_PREFIX
PR #5623 - build: remove unused import from conf.py.in
PR #5622 - Remove HPX_WITH_VCPKG CMake option
PR #5621 - Replacing boost::container::small_vector
PR #5620 - Update Asio tag from 1.18.2 to 1.20.0
PR #5619 - Fix block_os_threads_1036 test
PR #5618 - Make sure condition variables are notified under a lock in the thread_pool_scheduler test
PR #5617 - Use advance_and_get_distance where required
PR #5616 - Remove separately building segmented algorithms on CircleCI
PR #5613 - Fix Vc datapar adjacent_difference
PR #5609 - docs: add anchor links to performance counter tables
PR #5608 - Fix header test error by adding missing numeric
PR #5607 - Fix simd adj diff
PR #5605 - Fix usage of HPX_INVOKE macro
PR #5604 - Make use of shell-session to allow non-copyable $
PR #5603 - Suppress some MSVC warnings in C++20 mode
PR #5602 - Test HPX_DATASTRUCTURES_WITH_ADAPT_STD_TUPLE=OFF to one CI configuration
PR #5601 - Test case for any_sender should use hpx::tuple
PR #5600 - Rename tag_dispatch back to tag_invoke
PR #5599 - Change theme, fix Quickstart & Examples
PR #5596 - Use precompiled headers in tests
PR #5595 - Drop semicolons for macro calls
PR #5594 - Adapt datapar generate
PR #5593 - Update any_sender to use tag_dispatch for execution customizations
PR #5592 - Add nth_element
PR #5591 - Remove unnecessary checks for C++17 for tests
PR #5589 - Add HPX_FORWARD/HPX_MOVE macros
PR #5588 - Fixing the output formatting for id_types
PR #5586 - Remove local functionality
PR #5585 - Delete GitExternal.cmake
PR #5584 - Serialization of hpx::tuple must use hpx::get
PR #5583 - fix coroutine_traits allocate calls, add unhandled_exception() implementation.
PR #5582 - Make more examples work with local runtime
PR #5581 - Add support for several performance tests in CI
PR #5580 - Adapt simd adj diff
PR #5579 - Split absolute paths for generated pkg-config files into -L/-l parts
PR #5577 - fix unit fill test for datapar with Vc
PR #5576 - Update forgotten “Full” names
PR #5575 - Change scan partitioner implementation
PR #5574 - Remove a few deprecated and unused CMake options
PR #5572 - Remove more guards for the distributed runtime
PR #5571 - Add workaround for libstc++ in string_util trim
PR #5569 - Use no_unique_address in sender adaptors
PR #5568 - Change try catch block to try_catch_exception_ptr
PR #5567 - Make default_agent::yield actually yield
PR #5564 - Adjacent
PR #5562 - More changes to overcome build problems on Windows after recent module rearrangements
PR #5560 - Update tests and examples
PR #5559 - Fixing cmake folder names after module restructuring
PR #5558 - Fixing wrong module dependencies
PR #5557 - Adding an example for the new channel_communicator API
PR #5556 - Remove leftover thread pool os executor tests
PR #5555 - Add option enabling serializing raw pointers
PR #5554 - Make sure command line aliasing is properly handled
PR #5552 - Modernizing some of the async facilities
PR #5551 - Fixing for local executions of actions to properly set task names
PR #5550 - Update CUDA module in clang-cuda configuration
PR #5549 - Fixing agent_ref::yield_k to actually call yield_k
PR #5548 - Making get_action_name() noexcept
PR #5547 - Fixing communication set
PR #5546 - Fixing shutdown problems caused by missing ref-counting
PR #5545 - Remove wrong move in thread_pool_scheduler_bulk.hpp
PR #5543 - Extend launch policy to carry stack size and scheduling hint in addition to priority
PR #5542 - Simplify execution CPOs
PR #5540 - Adapt partition, partition_copy and stable_partition to C++ 20
PR #5539 - Adapt mismatch to support sentinels
PR #5538 - Document specific sphinx version required for the documentation
PR #5537 - Test release and debug builds on Piz Daint
PR #5536 - This fixes referencing stale iterators during the execution of binary mismatch
PR #5535 - Rename simdpar to par_simd
PR #5534 - Fix Quick start & Manual Docs
PR #5533 - Fix annotate_function for std::string
PR #5532 - Update two remaining apex links from khuck to UO-OACISS
PR #5531 - Use contiguous_index_queue in thread_pool_scheduler
PR #5530 - Eagerly initialize a configurable number of threads on scheduler/thread queue init
PR #5529 - Update benchmarks and add support for scheduler_executor
PR #5528 - Add missing properties to executors/schedulers
PR #5527 - Set local thread/pool number in local/static_queue_scheduler
PR #5526 - Update Rostam HIP configuration to use 4.3.0
PR #5525 - Fix Building HPX in Quick start
PR #5524 - Upload image on cdash
PR #5523 - Modernize facilities related to hpx::sync
PR #5522 - Add sender overloads for remaining algorithms
PR #5521 - Minor changes that improve performance
PR #5520 - Update reference as perftests failing regularly
PR #5519 - Add transform_mpi sender adapter
PR #5518 - Add sender overloads to rotate/rotate_copy
PR #5517 - Fix coroutine integration
PR #5515 - Avoid deadlock in ignore_while_locked_1485 test
PR #5514 - Add split sender adapter
PR #5512 - Update Rostam HIP configuration
PR #5511 - Fix Asio target name for precompiled headers
PR #5510 - Add any_sender and unique_any_sender
PR #5509 - Test with Boost 1.77 on gcc/clang-newest configurations
PR #5508 - Minor release changes from 1.7.1
PR #5507 - Add missing commits from scheduler_executor PR
PR #5506 - Fix condition for checking if we should use our own variant
PR #5501 - Attempt to fix thread_pool_scheduler test
PR #5493 - Update Jenkins GitHub token to use StellarBot GitHub account
PR #5490 - Fix clang-format error on master
PR #5487 - Add get_completion_scheduler CPO and customize bulk for thread_pool_scheduler
PR #5484 - Add missing header to jacobi_component/server/solver.hpp
PR #5481 - Changing the APEX repository to the new location
PR #5479 - Fix version check for CUDA noexcept/result_of bug
PR #5477 - Require cxx17 minor comments
PR #5476 - Fix cmake format error
PR #5475 - Require CMake 3.18 as it is already a requirement for CUDA
PR #5474 - Make the cuda parameters of try_compile optional
PR #5473 - Update cuda arch and change cuda version
PR #5471 - Add corrected citation.cff
PR #5470 - Adapt stable_sort to C++ 20
PR #5468 - Experimentation to make the perftest report public
PR #5466 - Add shift_left and shift_right algorithms
PR #5465 - Adapt datapar fill
PR #5464 - Moving tag_dispatch to separate module
PR #5461 - Rename HPX_WITH_CUDA_COMPUTE with HPX_WITH_COMPUTE_CUDA
PR #5460 - Adapt sort to C++ 20
PR #5459 - Adapt rotate/rotate_copy to C++20
PR #5458 - Adapt unique and unique_copy to C++ 20
PR #5455 - Remove and clean up fallback sender implementations
PR #5454 - Make performance plot show even if similar performance
PR #5453 - Post 1.7.0 version bump
PR #5452 - Fix find_end parallel overload
PR #5450 - Change the print-bind output to be more precise
PR #5449 - Adapt swap_ranges to C++ 20
PR #5446 - Use more verbose names in sender algorithms
PR #5443 - Properly support ASAN with MSVC
PR #5441 - Adding reference counting to thread_data
PR #5429 - Scheduler executor
PR #5428 - Adapt datapar copy
PR #5421 - Update CI base image to use clang-format 11
PR #5410 - Add ranges starts_with and ends_with algorithms
PR #5383 - Tentatively remove runtime_registration_wrapper from cuda futures
PR #5377 - Fewer Asio includes and more precompiled headers
PR #5329 - Sender overloads for parallel algorithms
PR #5313 - Rearrange modules between libraries
PR #5283 - Require minimum C++17 and change CUDA handling
PR #5241 - Adapt min_element, max_element and minmax_element to C++20