HPX V1.11.0 (Jun 30, 2025)
Contents
HPX V1.11.0 (Jun 30, 2025)#
This release is the last version of HPX that supports C++17. Future versions of HPX will require compilation using C++20 or above.
General changes#
Added synchronous versions of all collective operations. Added global predefined communicator objects that are accessible through new APIs:
hpx::collectives::get_world_communicator()
refers to all localities andhpx::collectives::get_local_communicator()
refers to all threads on the calling locality. We unified the interfaces of the different communicator objects.Added
hpx::experimental::run_on_all
allowing to run a given function (possibly concurrently) using a given execution policy.Added a helper object
hpx::runtime_manager
that simplifies the initialization of HPX without needing to modify themain
function of the application.We improved the compatibility with various accelerator frameworks (SYCL, OneAPI).
Applied build system changes that allow building HPX without any prerequisites. This requires to pass
-DHPX_WITH_FETCH_HWLOC=On
and-DHPX_WITH_FETCH_BOOST=On
to the CMake configuration.We have performed a lot of code cleanup and refactoring to improve the overall code quality and decrease compile times.
Added the
hpx::contains
andhpx::contains_subrange
parallel algorithms.Adapted many of HPX’ parallel algorithms to be usable with senders/receivers.
Breaking changes#
We have moved most of the APIs that were defined in the namespace
hpx::parallel::execution
to the namespacehpx::execution::experimental
. It was not possible to add compatibility facilities that will allow to continue using the old APIs, applications will have to be changed in order to continue functioning correctly.The CMake configuration parameter
HPX_WITH_RUN_MAIN_EVERYWHERE
is now deprecated and will be removed in the future. Use the preprocessor macroHPX_HAVE_RUN_MAIN_EVERYWHERE
on a target-by-target case instead.Removed the dysfunctional libfabric parcelport.
Removed features that were long deprecated (starting V1.8): -
hpx::flush
,hpx::endl
,hpx::async_flush
,hpx::async_endl
- Various enumerator types are now only available asclass enum
requiring explicit scoped use of the enumerator values - Various non-conforming overloads of parallel algorithms -hpx::for_loop
and friends (now only available ashpx::experimental::for_loop
)hpx::parallel::induction
is now only available ashpx::experimental::induction
hpx::parallel::reduction
and friends are now only available ashpx::experimental::reduction
hpx::assertion::source_location
is now only available ashpx::source_location
hpx::lcos::split_future
is now only available ashpx::split_future
hpx::lcos::wait
and friends have been removed altogetherhpx::lcos::wait_any
and friends are now only available ashpx::wait_any
hpx::lcos::wait_some
and friends are now only available ashpx::wait_some
hpx::lcos::wait_each
and friends are now only available ashpx::wait_each
hpx::lcos::wait_all
and friends are now only available ashpx::wait_all
hpx::lcos::when_all
and friends are now only available ashpx::when_all
hpx::lcos::when_any
and friends are now only available ashpx::when_any
hpx::lcos::when_each
and friends are now only available ashpx::when_each
hpx::lcos::when_some
and friends are now only available ashpx::when_some
hpx::util::optional
and related facilities are now only available ashpx::optional
hpx::util::bind
and related facilities are now only available ashpx::bind
hpx::util::function
and friends are now only available ashpx::function
hpx::traits::is_bound_action
and related facilities are now only available ashpx::is_bound_action
hpx::traits::is_bind_expression
and related facilities are now only available ashpx::is_bind_expression
hpx::traits::is_placeholder
and related facilities are now only available ashpx::is_placeholder
hpx::lcos::future
and related facilities are now only available ashpx::future
hpx::memory::intrusive_ptr
is now only available ashpx::intrusive_ptr
hpx::lcos::local::barrier
is now only available ashpx::barrier
hpx::lcos::barrier
is now only available ashpx::distributed::barrier
hpx::lcos::local::cpp20_binary_semaphore
is now only available ashpx::detail::binary_semaphore
hpx::lcos::local::condition_variable
and friends are now only available ashpx::condition_variable
hpx::lcos::local::counting_semaphore
and friends are now only available ashpx::counting_semaphore
hpx::lcos::local::cpp20_latch
and is now only available ashpx::latch
hpx::lcos::latch
and is now only available ashpx::distributed::latch
hpx::lcos::local::upgrade_lock
and friends are now only available ashpx::upgrade_lock
hpx::lcos::local::mutex
and friends are now only available ashpx::mutex
hpx::lcos::local::spinlock
and friends are now only available ashpx::spinlock
hpx::lcos::local::call_once
and friends are now only available ashpx::call_once
hpx::util::annotated_function
and is now only available ashpx::annotated_function
hpx::components::abstract_simple_component_base
and is now only available ashpx::components::abstract_component_base
hpx::naming::id_type
and is now only available ashpx::id_type
Closed issues#
Issue #6699 - Catch lower-level runtime error
Issue #6696 - HPX master breaks with Kokkos
Issue #6691 - minimum_category doesn’t work with custom iterator categories
Issue #6681 - build break - missing ‘;’
Issue #6658 - CMake error upon building HPX manually
Issue #6648 - Asio V1.34 deprecates io_context::work
Issue #6640 - iterator_facade doesn’t work with custom iterator categories
Issue #6636 - problem with hpx::collectives::exclusive_scan
Issue #6623 - HPX serialization error with std::vector<std::vector<std::vector<float>>>
Issue #6616 - Add flux support to HPX to run on El Cap
Issue #6615 - Too many fails test after installed hpx
Issue #6605 - Partitionend vector copy constructor is broken
Issue #6586 - Bullet points in quick start/installing HPX section in documentation incorrectly rendered
Issue #6563 - Compilation issues on Grace Hopper
Issue #6544 - Errors in Public Distributed Api for all_to_all and gather_there
Issue #6519 - Option –hpx:queuing=local-priority-lifo is not configured
Issue #6501 - HPX 1.10 Failed Linking CXX executable for arm64-osx
Issue #5728 - Add optional fetch_content support for needed Boost libraries
Closed pull requests#
PR #6716 - Fixing some of the reported linker warnings
PR #6705 - Adding gcc/15 to jenkins
PR #6701 - Attempting to fix shutdown hang on exception_info
PR #6698 - Making sure .hpp.in files are not being installed
PR #6697 - Minor docs fix
PR #6695 - Adding missing ‘;’
PR #6693 - Adding llvm/19 and 20 and cmake/4 Jenkins
PR #6692 - Better implementation of minimal_category
PR #6690 - Fixing bad #include in example
PR #6689 - Fix unreachable code warning in wait_all
PR #6687 - lci pp: change default ndevices=2 and progress_type=worker; improve document
PR #6686 - lci pp: upgrade LCI autofetch target to 1.7.9
PR #6685 - Improve run_on_all implementation and tests
PR #6683 - Fix bad element comparison for reduce_by_key
PR #6682 - Add C++23 std::generator equivalence test and fix missing semicolon
PR #6680 - Add oneapi device init workaround
PR #6679 - Fix sycl deprecations
PR #6678 - Fix oneapi overloads
PR #6677 - Offer a runtime manager object
PR #6676 - Mention the HPX book
PR #6675 - Bump required version of JSON library
PR #6674 - Issue 6631
PR #6673 - Fix: FindTBB.cmake cannot find correct TBB library. #6504
PR #6672 - Update modules.rst
PR #6670 - Add base template template param to execution_policy
PR #6669 - Add execution policy support to run_on_all
PR #6667 - Making sure bound threads are rescheduled on their original core
PR #6666 - Improve documentation for reduction operations
PR #6664 - Fix CMake template when fetching Boost
PR #6663 - More run_on_all overloads
PR #6662 - Fix “unary minus operator applied to unsigned type” warning
PR #6661 - Adding simple experimental::run_on_all
PR #6659 - fix(reduce): Initialize accumulator with init instead of first element
PR #6656 - Add missing channel_communicator::get_info
PR #6652 - Adding channel-based ping-pong example
PR #6650 - Adding constructor overloads to partitioned_vector
PR #6649 - Remove the use of deprecated asio::io_context::work
PR #6645 - Fixing collectives::exclusive_scan
PR #6644 - Update result_type in set_union.hpp
PR #6643 - Update result_type in set_union.hpp
PR #6642 - Allowing to use custom iterator tags with iterator_facade
PR #6641 - Allowing for zip-iterator to refer to sequences of different length
PR #6639 - docs: Fix spelling in example dictionary
PR #6638 - Update set_union.hpp
PR #6637 - lci/mpi pp: fix the case when non-zero-copy data is larger than INT_MAX
PR #6635 - Adding simplified reduction overload
PR #6634 - Fixed issue 6634: Unqualified calls to insertion_sort
PR #6633 - Increase timeouts for CircleCI tests
PR #6630 - Fix CPUId test
PR #6628 - Link aclocal with aclocal-1.16 as hwloc asks for it
PR #6626 - Fixing MPI parcel port issue exposed by #6623
PR #6622 - Newbranch:HPX-Based Task Scheduler with CUDA-Quantum Integration & Benchmarking
PR #6621 - HPX-Based Task Scheduler with CUDA-Quantum Integration & Benchmarking
PR #6620 - new test: very big tchunk
PR #6619 - mpi pp: fix transmission chunk send
PR #6617 - Adding support for the Flux job scheduling environment
PR #6614 - Fix fallback to module mode for CMake finding Boost
PR #6613 - Fix partitioned_vector_handle_values test
PR #6612 - Fixing naming convention for pp constant
PR #6611 - Fix Hwloc fetch content
PR #6610 - Add docs for synchronous collective operations
PR #6609 - Update perftest CI reference measurements
PR #6608 - Partially support data parallel for_loop
PR #6607 - Cleaning up copy_component facility
PR #6606 - Making sure copy_component creates a new gid
PR #6600 - Fixing sync collectives
PR #6599 - Make HPX_HAVE_RUN_MAIN_EVERYWHERE application specific
PR #6598 - Adding synchronous collective operations
PR #6596 - Minor fixes and optimizations
PR #6595 - Rfa parallel
PR #6594 - Move get_stack_ptr to source
PR #6593 - Fix outdated documentation and missing flags
PR #6592 - HPX_HAVE_THREADS_GET_STACK_POINTER to match builtin_frame_address feature test
PR #6591 - Feature test for __builtin_frame_address
PR #6590 - Add device guard for noexcept
PR #6587 - Fix bullet points in Quickstart
PR #6585 - Fixed escape characters format to handle warning due to misinterpretation of syntax
PR #6583 - Execute feature test for at_quick_exit
PR #6582 - Accommodate for CircleCI reduce available number of cores to two
PR #6581 - Attempting to work around a Boost.Spirit problem
PR #6580 - mpi pp: fix messages larger than INT_MAX
PR #6578 - Remove leftovers from libfabric parcelport
PR #6577 - Download Boost from their own archives, not from Sourceforge
PR #6576 - Fix CMake warning issued since CMake V3.30
PR #6575 - Replace previously downloaded CDash conv.xsl with local version
PR #6570 - Update exception_list.hpp
PR #6569 - Update exception_list.hpp
PR #6567 - Fix vectorization error on copy algorithm
PR #6566 - lci pp: fix messages larger than INT_MAX
PR #6565 - Moving most of APIs from hpx::parallel::execution to hpx::execution::experimental
PR #6564 - Remove superfluous HPX_MOVE()
PR #6562 - Fix doc return type of broadcast_to
PR #6560 - Fixes for bit_cast on 32bit systems
PR #6559 - Making sure that all parcelport counters are unavailable if no networking is needed or configured
PR #6558 - Remove CSCS CI’s
PR #6556 - Set copyright year in generated files
PR #6553 - Fix omp vectorization pragma errors
PR #6551 - Update building_hpx.rst
PR #6550 - Partitioned vector updates
PR #6549 - Fix CMake conditionals checking ENV variables
PR #6548 - Update CONTRIBUTING.md
PR #6546 - Fix incorrect signature of distributed API functions
PR #6543 - Throwing an exception derived from std::bad_alloc on OOM conditions
PR #6539 - Use thread-safe cache in thread_local_caching_allocator
PR #6537 - Update README.rst
PR #6531 - More fixes for the Boost package
PR #6527 - Improve the LCI parcelport documentation
PR #6525 - Addressing cmake warnings issued starting V3.30
PR #6522 - Fixing distance test
PR #6520 - Adding optional handshakes to acknowledge the received data
PR #6518 - Make sure that –hpx:ini log settings take effect
PR #6512 - Minor cleanup of future_data
PR #6510 - Include Boost as CMake subproject
PR #6509 - Add components documentation
PR #6508 - Fix typo: s/unititiallized/uninitialized/
PR #6507 - Update LSU Jenkins libraries to match Rostam 3.0 with RHEL9
PR #6503 - Fix 2 tests on FreeBSD by initializing freebsd_environ
PR #6499 - Fix crash in get_executable_filename on FreeBSD
PR #6498 - Avoid rewriting defines.hpp
PR #6497 - Contains and contains_subrange parallel algorithm implementation GSOC 2024
PR #6496 - Prevent usage of CMake try_run on crosscompiling
PR #6494 - Add unit test cases and fixes for the S/R versions of the parallel algorithms
PR #6487 - Fixing security vulnerabilities reported by MSVC security checks
PR #6486 - Create codeql.yml
PR #6474 - Remove remnants of libfabric parcelport
PR #6473 - Add documentation for distributed implementations of post, async, sync and dataflow
PR #6471 - Add distance.cpp test in CMake
PR #6468 - Small vector relocation
PR #6448 - Standardising Benchmarks, with support for nanobench as an option for its backend
PR #6365 - Release V1.10.0
PR #6089 - Implementing p2079