HPX V1.1.0 (Mar 24, 2018)#

General changes#

Here are some of the main highlights and changes for this release (in no particular order):

  • We have changed the way HPX manages the processing units on a node. We do not longer implicitly bind all available cores to a single thread pool. The user has now full control over what processing units are bound to what thread pool, each with a separate scheduler. It is now also possible to create your own scheduler implementation and control what processing units this scheduler should use. We added the hpx::resource::partitioner that manages all available processing units and assigns resources to the used thread pools. Thread pools can be now be suspended/resumed independently. This functionality helps in running HPX concurrently to code that is directly relying on OpenMP and/or MPI.

  • We have continued to implement various parallel algorithms. HPX now almost completely implements all of the parallel algorithms as specified by the C++17 Standard. We have also continued to implement these algorithms for the distributed use case (for segmented data structures, such as hpx::partitioned_vector).

  • Added a compatibility layer for std::thread, std::mutex, and std::condition_variable allowing for the code to use those facilities where available and to fall back to the corresponding Boost facilities otherwise. The CMake configuration option -DHPX_WITH_THREAD_COMPATIBILITY=On can be used to force using the Boost equivalents.

  • The parameter sequence for the hpx::parallel::transform_inclusive_scan overload taking one iterator range has changed (again) to match the changes this algorithm has undergone while being moved to C++17. The old overloads can be still enabled at configure time by passing -DHPX_WITH_TRANSFORM_REDUCE_COMPATIBILITY=On to CMake.

  • The parameter sequence for the hpx::parallel::inclusive_scan overload taking one iterator range has changed to match the changes this algorithm has undergone while being moved to C++17. The old overloads can be still enabled at configure time by passing -DHPX_WITH_INCLUSIVE_SCAN_COMPATIBILITY=On to CMake.

  • Added a helper facility hpx::local_new which is equivalent to hpx::new_ except that it creates components locally only. As a consequence, the used component constructor may accept non-serializable argument types and/or non-const references or pointers.

  • Removed the (broken) component type hpx::lcos::queue<T>. The old type is still available at configure time by passing -DHPX_WITH_QUEUE_COMPATIBILITY=On to CMake.

  • The parallel algorithms adopted for C++17 restrict the iterator categories usable with those to at least forward iterators. Our implementation of the parallel algorithms was supporting input iterators (and output iterators) as well by simply falling back to sequential execution. We have now made our implementations conforming by requiring at least forward iterators. In order to enable the old behavior use the compatibility option -DHPX_WITH_ALGORITHM_INPUT_ITERATOR_SUPPORT=On on the CMake command line.

  • We have added the functionalities allowing for LCOs being implemented using (simple) components. Before LCOs had to always be implemented using managed components.

  • User defined components don’t have to be default-constructible anymore. Return types from actions don’t have to be default-constructible anymore either. Our serialization layer now in general supports non-default-constructible types.

  • We have added a new launch policy hpx::launch::lazy that allows oneto defer the decision on what launch policy to use to the point of execution. This policy is initialized with a function (object) that – when invoked – is expected to produce the desired launch policy.

Breaking changes#

  • We have dropped support for the gcc compiler version V4.8. The minimal gcc version we now test on is gcc V4.9. The minimally required version of CMake is now V3.3.2.

  • We have dropped support for the Visual Studio 2013 compiler version. The minimal Visual Studio version we now test on is Visual Studio 2015.5.

  • We have dropped support for the Boost V1.51-V1.54. The minimal version of Boost we now test is Boost V1.55.

  • We have dropped support for the hpx::util::unwrapped API. hpx::util::unwrapped will stay functional to some degree, until it finally gets removed in a later version of HPX. The functional usage of hpx::util::unwrapped should be changed to the new hpx::util::unwrapping function whereas the immediate usage should be replaced to hpx::util::unwrap.

  • The performance counter names referring to properties as exposed by the threading subsystem have changes as those now additionally have to specify the thread-pool. See the corresponding documentation for more details.

  • The overloads of hpx::async that invoke an action do not perform implicit unwrapping of the returned future anymore in case the invoked function does return a future in the first place. In this case hpx::async now returns a hpx::future<future<T>> making its behavior conforming to its local counterpart.

  • We have replaced the use of boost::exception_ptr in our APIs with the equivalent std::exception_ptr. Please change your codes accordingly. No compatibility settings are provided.

  • We have removed the compatibility settings for HPX_WITH_COLOCATED_BACKWARDS_COMPATIBILITY and HPX_WITH_COMPONENT_GET_GID_COMPATIBILITY as their life-cycle has reached its end.

  • We have removed the experimental thread schedulers hierarchy_scheduler, periodic_priority_scheduler and throttling_scheduler in an effort to clean up and consolidate our thread schedulers.

Bug fixes (closed tickets)#

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

  • PR #3250 - Apex refactoring with guids

  • PR #3249 - Updating People.qbk

  • PR #3246 - Assorted fixes for CUDA

  • PR #3245 - Apex refactoring with guids

  • PR #3242 - Modify task counting in thread_queue.hpp

  • PR #3240 - Fixed typos

  • PR #3238 - Readding accidentally removed std::abort

  • PR #3237 - Adding Pipeline example

  • PR #3236 - Fixing memory_block

  • PR #3233 - Make schedule_thread take suspended threads into account

  • Issue #3226 - memory_block is breaking, signaling SIGSEGV on a thread on creation and freeing

  • PR #3225 - Applying quick fix for hwloc-2.0

  • Issue #3224 - HPX counters crashing the application

  • PR #3223 - Fix returns when setting config entries

  • Issue #3222 - Errors linking libhpx.so

  • Issue #3221 - HPX on Mac OS X with HWLoc 2.0.0 fails to run

  • PR #3216 - Reorder a variadic array to satisfy VS 2017 15.6

  • PR #3214 - Changed prerequisites.qbk to avoid confusion while building boost

  • PR #3213 - Relax locks for thread suspension to avoid holding locks when yielding

  • PR #3212 - Fix check in sequenced_executor test

  • PR #3211 - Use preinit_array to set argc/argv in init_globally example

  • PR #3210 - Adapted parallel::{search | search_n} for Ranges TS (see #1668)

  • PR #3209 - Fix locking problems during shutdown

  • Issue #3208 - init_globally throwing a run-time error

  • PR #3206 - Addition of new arithmetic performance counter “Count”

  • PR #3205 - Fixing return type calculation for bulk_then_execute

  • PR #3204 - Changing std::rand() to a better inbuilt PRNG generator

  • PR #3203 - Resolving problems during shutdown for VS2015

  • PR #3202 - Making sure resource partitioner is not accessed if its not valid

  • PR #3201 - Fixing optional::swap

  • Issue #3200 - hpx::util::optional fails

  • PR #3199 - Fix sliding_semaphore test

  • PR #3198 - Set pre_main status before launching run_helper

  • PR #3197 - Update README.rst

  • PR #3194 - parallel::{fill|fill_n} updated for Ranges TS

  • PR #3193 - Updating Runtime.cpp by adding correct description of Performance counters during register

  • PR #3191 - Fix sliding_semaphore_2338 test

  • PR #3190 - Topology improvements

  • PR #3189 - Deleting one include of median from BOOST library to arithmetics_counter file

  • PR #3188 - Optionally disable printing of diagnostics during terminate

  • PR #3187 - Suppressing cmake warning issued by cmake > V3.11

  • PR #3185 - Remove unused scoped_unlock, unlock_guard_try

  • PR #3184 - Fix nqueen example

  • PR #3183 - Add runtime start/stop, resume/suspend and OpenMP benchmarks

  • Issue #3182 - bulk_then_execute has unexpected return type/does not compile

  • Issue #3181 - hwloc 2.0 breaks topo class and cannot be used

  • Issue #3180 - Schedulers that don’t support suspend/resume are unusable

  • PR #3179 - Various minor changes to support FLeCSI

  • PR #3178 - Fix #3124

  • PR #3177 - Removed allgather

  • PR #3176 - Fixed Documentation for “using_hpx_pkgconfig”

  • PR #3174 - Add hpx::iostreams::ostream overload to format_to

  • PR #3172 - Fix lifo queue backend

  • PR #3171 - adding the missing unset() function to cpu_mask() for case of more than 64 threads

  • PR #3170 - Add cmake flag -DHPX_WITH_FAULT_TOLERANCE=ON (OFF by default)

  • PR #3169 - Adapted parallel::{count|count_if} for Ranges TS (see #1668)

  • PR #3168 - Changing used namespace for seq execution policy

  • Issue #3167 - Update GSoC projects

  • Issue #3166 - Application (Octotiger) gets stuck on hpx::finalize when only using one thread

  • Issue #3165 - Compilation of parallel algorithms with HPX_WITH_DATAPAR is broken

  • PR #3164 - Fixing component migration

  • PR #3162 - regex_from_pattern: escape regex special characters to avoid misinterpretation

  • Issue #3161 - Building HPX with hwloc 2.0.0 fails

  • PR #3160 - Fixing the handling of quoted command line arguments.

  • PR #3158 - Fixing a race with timed suspension (second attempt)

  • PR #3157 - Revert “Fixing a race with timed suspension”

  • PR #3156 - Fixing serialization of classes with incompatible serialize signature

  • PR #3154 - More refactorings based on clang-tidy reports

  • PR #3153 - Fixing a race with timed suspension

  • PR #3152 - Documentation for runtime suspension

  • PR #3151 - Use small_vector only from boost version 1.59 onwards

  • PR #3150 - Avoiding more stack overflows

  • PR #3148 - Refactoring component_base and base_action/transfer_base_action

  • PR #3147 - Move yield_while out of detail namespace and into own file

  • PR #3145 - Remove a leftover of the cxx11 std array cleanup

  • PR #3144 - Minor changes to how actions are executed

  • PR #3143 - Fix stack overhead

  • PR #3142 - Fix typo in config.hpp

  • PR #3141 - Fixing small_vector compatibility with older boost version

  • PR #3140 - is_heap_text fix

  • Issue #3139 - Error in is_heap_tests.hpp

  • PR #3138 - Partially reverting #3126

  • PR #3137 - Suspend speedup

  • PR #3136 - Revert “Fixing #2325”

  • PR #3135 - Improving destruction of threads

  • Issue #3134 - HPX_SERIALIZATION_SPLIT_FREE does not stop compiler from looking for serialize() method

  • PR #3133 - Make hwloc compulsory

  • PR #3132 - Update CXX14 constexpr feature test

  • PR #3131 - Fixing #2325

  • PR #3130 - Avoid completion handler allocation

  • PR #3129 - Suspend runtime

  • PR #3128 - Make docbook dtd and xsl path names consistent

  • PR #3127 - Add hpx::start nullptr overloads

  • PR #3126 - Cleaning up coroutine implementation

  • PR #3125 - Replacing nullptr with hpx::threads::invalid_thread_id

  • Issue #3124 - Add hello_world_component to CI builds

  • PR #3123 - Add new constructor.

  • PR #3122 - Fixing #3121

  • Issue #3121 - HPX_SMT_PAUSE is broken on non-x86 platforms when __GNUC__ is defined

  • PR #3120 - Don’t use boost::intrusive_ptr for thread_id_type

  • PR #3119 - Disable default executor compatibility with V1 executors

  • PR #3118 - Adding performance_counter::reinit to allow for dynamically changing counter sets

  • PR #3117 - Replace uses of boost/experimental::optional with util::optional

  • PR #3116 - Moving background thread APEX timer #2980

  • PR #3115 - Fixing race condition in channel test

  • PR #3114 - Avoid using util::function for thread function wrappers

  • PR #3113 - cmake V3.10.2 has changed the variable names used for MPI

  • PR #3112 - Minor fixes to exclusive_scan algorithm

  • PR #3111 - Revert “fix detection of cxx11_std_atomic”

  • PR #3110 - Suspend thread pool

  • PR #3109 - Fixing thread scheduling when yielding a thread id

  • PR #3108 - Revert “Suspend thread pool”

  • PR #3107 - Remove UB from thread::id relational operators

  • PR #3106 - Add cmake test for std::decay_t to fix cuda build

  • PR #3105 - Fixing refcount for async traversal frame

  • PR #3104 - Local execution of direct actions is now actually performed directly

  • PR #3103 - Adding support for generic counter_raw_values performance counter type

  • Issue #3102 - Introduce generic performance counter type returning an array of values

  • PR #3101 - Revert “Adapting stack overhead limit for gcc 4.9”

  • PR #3100 - Fix #3068 (condition_variable deadlock)

  • PR #3099 - Fixing lock held during suspension in papi counter component

  • PR #3098 - Unbreak broadcast_wait_for_2822 test

  • PR #3097 - Adapting stack overhead limit for gcc 4.9

  • PR #3096 - fix detection of cxx11_std_atomic

  • PR #3095 - Add ciso646 header to get _LIBCPP_VERSION for testing inplace merge

  • PR #3094 - Relax atomic operations on performance counter values

  • PR #3093 - Short-circuit all_of/any_of/none_of instantiations

  • PR #3092 - Take advantage of C++14 lambda capture initialization syntax, where possible

  • PR #3091 - Remove more references to Boost from logging code

  • PR #3090 - Unify use of yield/yield_k

  • PR #3089 - Fix a strange thing in parallel::detail::handle_exception. (Fix #2834.)

  • Issue #3088 - A strange thing in parallel::sort.

  • PR #3087 - Fixing assertion in default_distribution_policy

  • PR #3086 - Implement parallel::remove and parallel::remove_if

  • PR #3085 - Addressing breaking changes in Boost V1.66

  • PR #3084 - Ignore build warnings round 2

  • PR #3083 - Fix typo HPX_WITH_MM_PREFECTH

  • PR #3081 - Pre-decay template arguments early

  • PR #3080 - Suspend thread pool

  • PR #3079 - Ignore build warnings

  • PR #3078 - Don’t test inplace_merge with libc++

  • PR #3076 - Fixing 3075: Part 1

  • PR #3074 - Fix more build warnings

  • PR #3073 - Suspend thread cleanup

  • PR #3072 - Change existing symbol_namespace::iterate to return all data instead of invoking a callback

  • PR #3071 - Fixing pack_traversal_async test

  • PR #3070 - Fix dynamic_counters_loaded_1508 test by adding dependency to memory_component

  • PR #3069 - Fix scheduling loop exit

  • Issue #3068 - hpx::lcos::condition_variable could be suspect to deadlocks

  • PR #3067 - #ifdef out random_shuffle deprecated in later c++

  • PR #3066 - Make coalescing test depend on coalescing library to ensure it gets built

  • PR #3065 - Workaround for minimal_timed_async_executor_test compilation failures, attempts to copy a deferred call (in unevaluated context)

  • PR #3064 - Fixing wrong condition in wrapper_heap

  • PR #3062 - Fix exception handling for execution::seq

  • PR #3061 - Adapt MSVC C++ mode handling to VS15.5

  • PR #3060 - Fix compiler problem in MSVC release mode

  • PR #3059 - Fixing #2931

  • Issue #3058 - minimal_timed_async_executor_test_exe fails to compile on master (d6f505c)

  • PR #3057 - Fix stable_merge_2964 compilation problems

  • PR #3056 - Fix some build warnings caused by unused variables/unnecessary tests

  • PR #3055 - Update documentation for running tests

  • Issue #3054 - Assertion failure when using bulk hpx::new_ in asynchronous mode

  • PR #3052 - Do not bind test running to cmake test build rule

  • PR #3051 - Fix HPX-Qt interaction in Qt example.

  • Issue #3048 - nqueen example fails occasionally

  • PR #3047 - Fixing #3044

  • PR #3046 - Add OS thread suspension

  • PR #3042 - PyCicle - first attempt at a build toold for checking PR’s

  • PR #3041 - Fix a problem about asynchronous execution of parallel::merge and parallel::partition.

  • PR #3040 - Fix a mistake about exception handling in asynchronous execution of scan_partitioner.

  • PR #3039 - Consistently use executors to schedule work

  • PR #3038 - Fixing local direct function execution and lambda actions perfect forwarding

  • PR #3035 - Make parallel unit test names match build target/folder names

  • PR #3033 - Fix setting of default build type

  • Issue #3032 - Fix partitioner arg copy found in #2982

  • Issue #3031 - Errors linking libhpx.so due to missing references (master branch, commit 6679a8882)

  • PR #3030 - Revert “implement executor then interface with && forwarding reference”

  • PR #3029 - Run CI inspect checks before building

  • PR #3028 - Added range version of parallel::move

  • Issue #3027 - Implement all scheduling APIs in terms of executors

  • PR #3026 - implement executor then interface with && forwarding reference

  • PR #3025 - Fix typo unitialized to uninitialized

  • PR #3024 - Inspect fixes

  • PR #3023 - P0356 Simplified partial function application

  • PR #3022 - Master fixes

  • PR #3021 - Segfault fix

  • PR #3020 - Disable command-line aliasing for applications that use user_main

  • PR #3019 - Adding enable_elasticity option to pool configuration

  • PR #3018 - Fix stack overflow detection configuration in header files

  • PR #3017 - Speed up local action execution

  • PR #3016 - Unify stack-overflow detection options, remove reference to libsigsegv

  • PR #3015 - Speeding up accessing the resource partitioner and the topology info

  • Issue #3014 - HPX does not compile on POWER8 with gcc 5.4

  • Issue #3013 - hello_world occasionally prints multiple lines from a single OS-thread

  • PR #3012 - Silence warning about casting away qualifiers in itt_notify.hpp

  • PR #3011 - Fix cpuset leak in hwloc_topology_info.cpp

  • PR #3010 - Remove useless decay_copy

  • PR #3009 - Fixing 2996

  • PR #3008 - Remove unused internal function

  • PR #3007 - Fixing wrapper_heap alignment problems

  • Issue #3006 - hwloc memory leak

  • PR #3004 - Silence C4251 (needs to have dll-interface) for future_data_void

  • Issue #3003 - Suspension of runtime

  • PR #3001 - Attempting to avoid data races in async_traversal while evaluating dataflow()

  • PR #3000 - Adding hpx::util::optional as a first step to replace experimental::optional

  • PR #2998 - Cleanup up and Fixing component creation and deletion

  • Issue #2996 - Build fails with HPX_WITH_HWLOC=OFF

  • PR #2995 - Push more future_data functionality to source file

  • PR #2994 - WIP: Fix throttle test

  • PR #2993 - Making sure –hpx:help does not throw for required (but missing) arguments

  • PR #2992 - Adding non-blocking (on destruction) service executors

  • Issue #2991 - run_as_os_thread locks up

  • Issue #2990 - –help will not work until all required options are provided

  • PR #2989 - Improve error messages caused by misuse of dataflow

  • PR #2988 - Improve error messages caused by misuse of .then

  • Issue #2987 - stack overflow detection producing false positives

  • PR #2986 - Deduplicate non-dependent thread_info logging types

  • PR #2985 - Adapted parallel::{all_of|any_of|none_of} for Ranges TS (see #1668)

  • PR #2984 - Refactor one_size_heap code to simplify code

  • PR #2983 - Fixing local_new_component

  • PR #2982 - Clang tidy

  • PR #2981 - Simplify allocator rebinding in pack traversal

  • PR #2979 - Fixing integer overflows

  • PR #2978 - Implement parallel::inplace_merge

  • Issue #2977 - Make hwloc compulsory instead of optional

  • PR #2976 - Making sure client_base instance that registered the component does not unregister it when being destructed

  • PR #2975 - Change version of pulled APEX to master

  • PR #2974 - Fix domain not being freed at the end of scheduling loop

  • PR #2973 - Fix small typos

  • PR #2972 - Adding uintstd.h header

  • PR #2971 - Fall back to creating local components using local_new

  • PR #2970 - Improve is_tuple_like trait

  • PR #2969 - Fix HPX_WITH_MORE_THAN_64_THREADS default value

  • PR #2968 - Cleaning up dataflow overload set

  • PR #2967 - Make parallel::merge is stable. (Fix #2964.)

  • PR #2966 - Fixing a couple of held locks during exception handling

  • PR #2965 - Adding missing #include

  • Issue #2964 - parallel merge is not stable

  • PR #2963 - Making sure any function object passed to dataflow is released after being invoked

  • PR #2962 - Partially reverting #2891

  • PR #2961 - Attempt to fix the gcc 4.9 problem with the async pack traversal

  • Issue #2959 - Program terminates during error handling

  • Issue #2958 - HPX_PLAIN_ACTION breaks due to missing include

  • PR #2957 - Fixing errors generated by mixing different attribute syntaxes

  • Issue #2956 - Mixing attribute syntaxes leads to compiler errors

  • Issue #2955 - Fix OS-Thread throttling

  • PR #2953 - Making sure any hpx.os_threads=N supplied through a –hpx::config file is taken into account

  • PR #2952 - Removing wrong call to cleanup_terminated_locked

  • PR #2951 - Revert “Make sure the function vtables are initialized before use”

  • PR #2950 - Fix a namespace compilation error when some schedulers are disabled

  • Issue #2949 - master branch giving lockups on shutdown

  • Issue #2947 - hpx.ini is not used correctly at initialization

  • PR #2946 - Adding explicit feature test for thread_local

  • PR #2945 - Make sure the function vtables are initialized before use

  • PR #2944 - Attempting to solve affinity problems on CircleCI

  • PR #2943 - Changing channel actions to be direct

  • PR #2942 - Adding split_future for std::vector

  • PR #2941 - Add a feature test to test for CXX11 override

  • Issue #2940 - Add split_future for future<vector<T>>

  • PR #2939 - Making error reporting during problems with setting affinity masks more verbose

  • PR #2938 - Fix this various executors

  • PR #2937 - Fix some typos in documentation

  • PR #2934 - Remove the need for “complete” SFINAE checks

  • PR #2933 - Making sure parallel::for_loop is executed in parallel if requested

  • PR #2932 - Classify chunk_size_iterator to input iterator tag. (Fix #2866)

  • Issue #2931 - –hpx:help triggers unusual error with clang build

  • PR #2930 - Add #include files needed to set _POSIX_VERSION for debug check

  • PR #2929 - Fix a couple of deprecated c++ features

  • PR #2928 - Fixing execution parameters

  • Issue #2927 - CMake warning: … cycle in constraint graph

  • PR #2926 - Default pool rename

  • Issue #2925 - Default pool cannot be renamed

  • Issue #2924 - hpx:attach-debugger=startup does not work any more

  • PR #2923 - Alloc membind

  • PR #2922 - This fixes CircleCI errors when running with –hpx:bind=none

  • PR #2921 - Custom pool executor was missing priority and stacksize options

  • PR #2920 - Adding test to trigger problem reported in #2916

  • PR #2919 - Make sure the resource_partitioner is properly destructed on hpx::finalize

  • Issue #2918 - hpx::init calls wrong (first) callback when called multiple times

  • PR #2917 - Adding util::checkpoint

  • Issue #2916 - Weird runtime failures when using a channel and chained continuations

  • PR #2915 - Introduce executor parameters customization points

  • Issue #2914 - Task assignment to current Pool has unintended consequences

  • PR #2913 - Fix rp hang

  • PR #2912 - Update contributors

  • PR #2911 - Fixing CUDA problems

  • PR #2910 - Improve error reporting for process component on POSIX systems

  • PR #2909 - Fix typo in include path

  • PR #2908 - Use proper container according to iterator tag in benchmarks of parallel algorithms

  • PR #2907 - Optionally force-delete remaining channel items on close

  • PR #2906 - Making sure generated performance counter names are correct

  • Issue #2905 - collecting idle-rate performance counters on multiple localities produces an error

  • Issue #2904 - build broken for Intel 17 compilers

  • PR #2903 - Documentation Updates– Adding New People

  • PR #2902 - Fixing service_executor

  • PR #2901 - Fixing partitioned_vector creation

  • PR #2900 - Add numa-balanced mode to hpx::bind, spread cores over numa domains

  • Issue #2899 - hpx::bind does not have a mode that balances cores over numa domains

  • PR #2898 - Adding missing #include and missing guard for optional code section

  • PR #2897 - Removing dependency on Boost.ICL

  • Issue #2896 - Debug build fails without -fpermissive with GCC 7.1 and Boost 1.65

  • PR #2895 - Fixing SLURM environment parsing

  • PR #2894 - Fix incorrect handling of compile definition with value 0

  • Issue #2893 - Disabling schedulers causes build errors

  • PR #2892 - added list serializer

  • PR #2891 - Resource Partitioner Fixes

  • Issue #2890 - Destroying a non-empty channel causes an assertion failure

  • PR #2889 - Add check for libatomic

  • PR #2888 - Fix compilation problems if HPX_WITH_ITT_NOTIFY=ON

  • PR #2887 - Adapt broadcast() to non-unwrapping async<Action>

  • PR #2886 - Replace Boost.Random with C++11 <random>

  • Issue #2885 - regression in broadcast?

  • Issue #2884 - linking -latomic is not portable

  • PR #2883 - Explicitly set -pthread flag if available

  • PR #2882 - Wrap boost::format uses

  • Issue #2881 - hpx not compiling with HPX_WITH_ITTNOTIFY=On

  • Issue #2880 - hpx::bind scatter/balanced give wrong pu masks

  • PR #2878 - Fix incorrect pool usage masks setup in RP/thread manager

  • PR #2877 - Require std::array by default

  • PR #2875 - Deprecate use of BOOST_ASSERT

  • PR #2874 - Changed serialization of boost.variant to use variadic templates

  • Issue #2873 - building with parcelport_mpi fails on cori

  • PR #2871 - Adding missing support for throttling scheduler

  • PR #2870 - Disambiguate use of base_lco_with_value macros with channel

  • Issue #2869 - Difficulty compiling HPX_REGISTER_CHANNEL_DECLARATION(double)

  • PR #2868 - Removing unneeded assert

  • PR #2867 - Implement parallel::unique

  • Issue #2866 - The chunk_size_iterator violates multipass guarantee

  • PR #2865 - Only use sched_getcpu on linux machines

  • PR #2864 - Create redistribution archive for successful builds

  • PR #2863 - Replace casts/assignments with hard-coded memcpy operations

  • Issue #2862 - sched_getcpu not available on MacOS

  • PR #2861 - Fixing unmatched header defines and recursive inclusion of threadmanager

  • Issue #2860 - Master program fails with assertion ‘type == data_type_address’ failed: HPX(assertion_failure)

  • Issue #2852 - Support for ARM64

  • PR #2858 - Fix misplaced #if #endif’s that cause build failure without THREAD_CUMULATIVE_COUNTS

  • PR #2857 - Fix some listing in documentation

  • PR #2856 - Fixing component handling for lcos

  • PR #2855 - Add documentation for coarrays

  • PR #2854 - Support ARM64 in timestamps

  • PR #2853 - Update Table 17. Non-modifying Parallel Algorithms in Documentation

  • PR #2851 - Allowing for non-default-constructible component types

  • PR #2850 - Enable returning future<R> from actions where R is not default-constructible

  • PR #2849 - Unify serialization of non-default-constructable types

  • Issue #2848 - Components have to be default constructible

  • Issue #2847 - Returning a future<R> where R is not default-constructable broken

  • Issue #2846 - Unify serialization of non-default-constructible types

  • PR #2845 - Add Visual Studio 2015 to the tested toolchains in Appveyor

  • Issue #2844 - Change the appveyor build to use the minimal required MSVC version

  • Issue #2843 - multi node hello_world hangs

  • PR #2842 - Correcting Spelling mistake in docs

  • PR #2841 - Fix usage of std::aligned_storage

  • PR #2840 - Remove constexpr from a void function

  • Issue #2839 - memcpy buffer overflow: load_construct_data() and std::complex members

  • Issue #2835 - constexpr functions with void return type break compilation with CUDA 8.0

  • Issue #2834 - One suspicion in parallel::detail::handle_exception

  • PR #2833 - Implement parallel::merge

  • PR #2832 - Fix a strange thing in parallel::util::detail::handle_local_exceptions. (Fix #2818)

  • PR #2830 - Break the debugger when a test failed

  • Issue #2831 - parallel/executors/execution_fwd.hpp causes compilation failure in C++11 mode.

  • PR #2829 - Implement an API for asynchronous pack traversal

  • PR #2828 - Split unit test builds on CircleCI to avoid timeouts

  • Issue #2827 - failure to compile hello_world example with -Werror

  • PR #2824 - Making sure promises are marked as started when used as continuations

  • PR #2823 - Add documentation for partitioned_vector_view

  • Issue #2822 - Yet another issue with wait_for similar to #2796

  • PR #2821 - Fix bugs and improve that about HPX_HAVE_CXX11_AUTO_RETURN_VALUE of CMake

  • PR #2820 - Support C++11 in benchmark codes of parallel::partition and parallel::partition_copy

  • PR #2819 - Fix compile errors in unit test of container version of parallel::partition

  • Issue #2818 - A strange thing in parallel::util::detail::handle_local_exceptions

  • Issue #2815 - HPX fails to compile with HPX_WITH_CUDA=ON and the new CUDA 9.0 RC

  • Issue #2814 - Using ‘gmakeN’ after ‘cmake’ produces error in src/CMakeFiles/hpx.dir/runtime/agas/addressing_service.cpp.o

  • PR #2813 - Properly support [[noreturn]] attribute if available

  • Issue #2812 - Compilation fails with gcc 7.1.1

  • PR #2811 - Adding hpx::launch::lazy and support for async, dataflow, and future::then

  • PR #2810 - Add option allowing to disable deprecation warning

  • PR #2809 - Disable throttling scheduler if HWLOC is not found/used

  • PR #2808 - Fix compile errors on some environments of parallel::partition

  • Issue #2807 - Difficulty building with HPX_WITH_HWLOC=Off

  • PR #2806 - Partitioned vector

  • PR #2805 - Serializing collections with non-default constructible data

  • PR #2802 - Fix FreeBSD 11

  • Issue #2801 - Rate limiting techniques in io_service

  • Issue #2800 - New Launch Policy: async_if

  • PR #2799 - Fix a unit test failure on GCC in tuple_cat

  • PR #2798 - bump minimum required cmake to 3.0 in test

  • PR #2797 - Making sure future::wait_for et.al. work properly for action results

  • Issue #2796 - wait_for does always in “deferred” state for calls on remote localities

  • Issue #2795 - Serialization of types without default constructor

  • PR #2794 - Fixing test for partitioned_vector iteration

  • PR #2792 - Implemented segmented find and its variations for partitioned vector

  • PR #2791 - Circumvent scary warning about placement new

  • PR #2790 - Fix OSX build

  • PR #2789 - Resource partitioner

  • PR #2788 - Adapt parallel::is_heap and parallel::is_heap_until to Ranges TS

  • PR #2787 - Unwrap hotfixes

  • PR #2786 - Update CMake Minimum Version to 3.3.2 (refs #2565)

  • Issue #2785 - Issues with masks and cpuset

  • PR #2784 - Error with reduce and transform reduce fixed

  • PR #2783 - StackOverflow integration with libsigsegv

  • PR #2782 - Replace boost::atomic with std::atomic (where possible)

  • PR #2781 - Check for and optionally use [[deprecated]] attribute

  • PR #2780 - Adding empty (but non-trivial) destructor to circumvent warnings

  • PR #2779 - Exception info tweaks

  • PR #2778 - Implement parallel::partition

  • PR #2777 - Improve error handling in gather_here/gather_there

  • PR #2776 - Fix a bug in compiler version check

  • PR #2775 - Fix compilation when HPX_WITH_LOGGING is OFF

  • PR #2774 - Removing dependency on Boost.Date_Time

  • PR #2773 - Add sync_images() method to spmd_block class

  • PR #2772 - Adding documentation for PAPI counters

  • PR #2771 - Removing boost preprocessor dependency

  • PR #2770 - Adding test, fixing deadlock in config registry

  • PR #2769 - Remove some other warnings and errors detected by clang 5.0

  • Issue #2768 - Is there iterator tag for HPX?

  • PR #2767 - Improvements to continuation annotation

  • PR #2765 - gcc split stack support for HPX threads #620

  • PR #2764 - Fix some uses of begin/end, remove unnecessary includes

  • PR #2763 - Bump minimal Boost version to 1.55.0

  • PR #2762 - hpx::partitioned_vector serializer

  • PR #2761 - Adding configuration summary to cmake output and –hpx:info

  • PR #2760 - Removing 1d_hydro example as it is broken

  • PR #2758 - Remove various warnings detected by clang 5.0

  • Issue #2757 - In case of a “raw thread” is needed per core for implementing parallel algorithm, what is good practice in HPX?

  • PR #2756 - Allowing for LCOs to be simple components

  • PR #2755 - Removing make_index_pack_unrolled

  • PR #2754 - Implement parallel::unique_copy

  • PR #2753 - Fixing detection of [[fallthrough]] attribute

  • PR #2752 - New thread priority names

  • PR #2751 - Replace boost::exception with proposed exception_info

  • PR #2750 - Replace boost::iterator_range

  • PR #2749 - Fixing hdf5 examples

  • Issue #2748 - HPX fails to build with enabled hdf5 examples

  • Issue #2747 - Inherited task priorities break certain DAG optimizations

  • Issue #2746 - HPX segfaulting with valgrind

  • PR #2745 - Adding extended arithmetic performance counters

  • PR #2744 - Adding ability to statistics counters to reset base counter

  • Issue #2743 - Statistics counter does not support resetting

  • PR #2742 - Making sure Vc V2 builds without additional HPX configuration flags

  • PR #2741 - Deprecate unwrapped and implement unwrap and unwrapping

  • PR #2740 - Coroutine stackoverflow detection for linux/posix; Issue #2408

  • PR #2739 - Add files via upload

  • PR #2738 - Appveyor support

  • PR #2737 - Fixing 2735

  • Issue #2736 - 1d_hydro example doesn’t work

  • Issue #2735 - partitioned_vector_subview test failing

  • PR #2734 - Add C++11 range utilities

  • PR #2733 - Adapting iterator requirements for parallel algorithms

  • PR #2732 - Integrate C++ Co-arrays

  • PR #2731 - Adding on_migrated event handler to migratable component instances

  • Issue #2729 - Add on_migrated() event handler to migratable components

  • Issue #2728 - Why Projection is needed in parallel algorithms?

  • PR #2727 - Cmake files for StackOverflow Detection

  • PR #2726 - CMake for Stack Overflow Detection

  • PR #2725 - Implemented segmented algorithms for partitioned vector

  • PR #2724 - Fix examples in Action documentation

  • PR #2723 - Enable lcos::channel<T>::register_as

  • Issue #2722 - channel register_as() failing on compilation

  • PR #2721 - Mind map

  • PR #2720 - reorder forward declarations to get rid of C++14-only auto return types

  • PR #2719 - Add documentation for partitioned_vector and add features in pack.hpp

  • Issue #2718 - Some forward declarations in execution_fwd.hpp aren’t C++11-compatible

  • PR #2717 - Config support for fallthrough attribute

  • PR #2716 - Implement parallel::partition_copy

  • PR #2715 - initial import of icu string serializer

  • PR #2714 - initial import of valarray serializer

  • PR #2713 - Remove slashes before CMAKE_FILES_DIRECTORY variables

  • PR #2712 - Fixing wait for 1751

  • PR #2711 - Adjust code for minimal supported GCC having being bumped to 4.9

  • PR #2710 - Adding code of conduct

  • PR #2709 - Fixing UB in destroy tests

  • PR #2708 - Add inline to prevent multiple definition issue

  • Issue #2707 - Multiple defined symbols for task_block.hpp in VS2015

  • PR #2706 - Adding .clang-format file

  • PR #2704 - Add a synchronous mapping API

  • Issue #2703 - Request: Add the .clang-format file to the repository

  • Issue #2702 - STEllAR-GROUP/Vc slower than VCv1 possibly due to wrong instructions generated

  • Issue #2701 - Datapar with STEllAR-GROUP/Vc requires obscure flag

  • Issue #2700 - Naming inconsistency in parallel algorithms

  • Issue #2699 - Iterator requirements are different from standard in parallel copy_if.

  • PR #2698 - Properly releasing parcelport write handlers

  • Issue #2697 - Compile error in addressing_service.cpp

  • Issue #2696 - Building and using HPX statically: undefined references from runtime_support_server.cpp

  • Issue #2695 - Executor changes cause compilation failures

  • PR #2694 - Refining C++ language mode detection for MSVC

  • PR #2693 - P0443 r2

  • PR #2692 - Partially reverting changes to parcel_await

  • Issue #2689 - HPX build fails when HPX_WITH_CUDA is enabled

  • PR #2688 - Make Cuda Clang builds pass

  • PR #2687 - Add an is_tuple_like trait for sequenceable type detection

  • PR #2686 - Allowing throttling scheduler to be used without idle backoff

  • PR #2685 - Add support of std::array to hpx::util::tuple_size and tuple_element

  • PR #2684 - Adding new statistics performance counters

  • PR #2683 - Replace boost::exception_ptr with std::exception_ptr

  • Issue #2682 - HPX does not compile with HPX_WITH_THREAD_MANAGER_IDLE_BACKOFF=OFF

  • PR #2681 - Attempt to fix problem in managed_component_base

  • PR #2680 - Fix bad size during archive creation

  • Issue #2679 - Mismatch between size of archive and container

  • Issue #2678 - In parallel algorithm, other tasks are executed to the end even if an exception occurs in any task.

  • PR #2677 - Adding include check for std::addressof

  • PR #2676 - Adding parallel::destroy and destroy_n

  • PR #2675 - Making sure statistics counters work as expected

  • PR #2674 - Turning assertions into exceptions

  • PR #2673 - Inhibit direct conversion from future<future<T>> –> future<void>

  • PR #2672 - C++17 invoke forms

  • PR #2671 - Adding uninitialized_value_construct and uninitialized_value_construct_n

  • PR #2670 - Integrate spmd multidimensional views for partitioned_vectors

  • PR #2669 - Adding uninitialized_default_construct and uninitialized_default_construct_n

  • PR #2668 - Fixing documentation index

  • Issue #2667 - Ambiguity of nested hpx::future<void>’s

  • Issue #2666 - Statistics Performance counter is not working

  • PR #2664 - Adding uninitialized_move and uninitialized_move_n

  • Issue #2663 - Seg fault in managed_component::get_base_gid, possibly cause by util::reinitializable_static

  • Issue #2662 - Crash in managed_component::get_base_gid due to problem with util::reinitializable_static

  • PR #2665 - Hide the detail namespace in doxygen per default

  • PR #2660 - Add documentation to hpx::util::unwrapped and hpx::util::unwrapped2

  • PR #2659 - Improve integration with vcpkg

  • PR #2658 - Unify access_data trait for use in both, serialization and de-serialization

  • PR #2657 - Removing hpx::lcos::queue<T>

  • PR #2656 - Reduce MAX_TERMINATED_THREADS default, improve memory use on manycore cpus

  • PR #2655 - Mainteinance for emulate-deleted macros

  • PR #2654 - Implement parallel is_heap and is_heap_until

  • PR #2653 - Drop support for VS2013

  • PR #2652 - This patch makes sure that all parcels in a batch are properly handled

  • PR #2649 - Update docs (Table 18) - move transform to end

  • Issue #2647 - hpx::parcelset::detail::parcel_data::has_continuation_ is uninitialized

  • Issue #2644 - Some .vcxproj in the HPX.sln fail to build

  • Issue #2641 - hpx::lcos::queue should be deprecated

  • PR #2640 - A new throttling policy with public APIs to suspend/resume

  • PR #2639 - Fix a tiny typo in tutorial.

  • Issue #2638 - Invalid return type ‘void’ of constexpr function

  • PR #2636 - Add and use HPX_MSVC_WARNING_PRAGMA for #pragma warning

  • PR #2633 - Distributed define_spmd_block

  • PR #2632 - Making sure container serialization uses size-compatible types

  • PR #2631 - Add lcos::local::one_element_channel

  • PR #2629 - Move unordered_map out of parcelport into hpx/concurrent

  • PR #2628 - Making sure that shutdown does not hang

  • PR #2627 - Fix serialization

  • PR #2626 - Generate cmake_variables.qbk and cmake_toolchains.qbk outside of the source tree

  • PR #2625 - Supporting -std=c++17 flag

  • PR #2624 - Fixing a small cmake typo

  • PR #2622 - Update CMake minimum required version to 3.0.2 (closes #2621)

  • Issue #2621 - Compiling hpx master fails with /usr/bin/ld: final link failed: Bad value

  • PR #2620 - Remove warnings due to some captured variables

  • PR #2619 - LF multiple parcels

  • PR #2618 - Some fixes to libfabric that didn’t get caught before the merge

  • PR #2617 - Adding hpx::local_new

  • PR #2616 - Documentation: Extract all entities in order to autolink functions correctly

  • Issue #2615 - Documentation: Linking functions is broken

  • PR #2614 - Adding serialization for std::deque

  • PR #2613 - We need to link with boost.thread and boost.chrono if we use boost.context

  • PR #2612 - Making sure for_loop_n(par, …) is actually executed in parallel

  • PR #2611 - Add documentation to invoke_fused and friends NFC

  • PR #2610 - Added reduction templates using an identity value

  • PR #2608 - Fixing some unused vars in inspect

  • PR #2607 - Fixed build for mingw

  • PR #2606 - Supporting generic context for boost >= 1.61

  • PR #2605 - Parcelport libfabric3

  • PR #2604 - Adding allocator support to promise and friends

  • PR #2603 - Barrier hang

  • PR #2602 - Changes to scheduler to steal from one high-priority queue

  • Issue #2601 - High priority tasks are not executed first

  • PR #2600 - Compat fixes

  • PR #2599 - Compatibility layer for threading support

  • PR #2598 - V1.1

  • PR #2597 - Release V1.0

  • PR #2592 - First attempt to introduce spmd_block in hpx

  • PR #2586 - local_segment in segmented_iterator_traits

  • Issue #2584 - Add allocator support to promise, packaged_task and friends

  • PR #2576 - Add missing dependencies of cuda based tests

  • PR #2575 - Remove warnings due to some captured variables

  • Issue #2574 - MSVC 2015 Compiler crash when building HPX

  • Issue #2568 - Remove throttle_scheduler as it has been abandoned

  • Issue #2566 - Add an inline versioning namespace before 1.0 release

  • Issue #2565 - Raise minimal cmake version requirement

  • PR #2556 - Fixing scan partitioner

  • PR #2546 - Broadcast async

  • Issue #2543 - make install fails due to a non-existing .so file

  • PR #2495 - wait_or_add_new returning thread_id_type

  • Issue #2480 - Unable to register new performance counter

  • Issue #2471 - no type named ‘fcontext_t’ in namespace

  • Issue #2456 - Re-implement hpx::util::unwrapped

  • Issue #2455 - Add more arithmetic performance counters

  • PR #2454 - Fix a couple of warnings and compiler errors

  • PR #2453 - Timed executor support

  • PR #2447 - Implementing new executor API (P0443)

  • Issue #2439 - Implement executor proposal

  • Issue #2408 - Stackoverflow detection for linux, e.g. based on libsigsegv

  • PR #2377 - Add a customization point for put_parcel so we can override actions

  • Issue #2368 - HPX_ASSERT problem

  • Issue #2324 - Change default number of threads used to the maximum of the system

  • Issue #2266 - hpx_0.9.99 make tests fail

  • PR #2195 - Support for code completion in VIM

  • Issue #2137 - Hpx does not compile over osx

  • Issue #2092 - make tests should just build the tests

  • Issue #2026 - Build HPX with Apple’s clang

  • Issue #1932 - hpx with PBS fails on multiple localities

  • PR #1914 - Parallel heap algorithm implementations WIP

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

  • Issue #1404 - unwrapped doesn’t work with movable only types

  • Issue #1400 - hpx::util::unwrapped doesn’t work with non-future types

  • Issue #1205 - TSS is broken

  • Issue #1126 - vector<future<T> > does not work gracefully with dataflow, when_all and unwrapped

  • Issue #1056 - Thread manager cleanup

  • Issue #863 - Futures should not require a default constructor

  • Issue #856 - Allow runtimemode_connect to be used with security enabled

  • Issue #726 - Valgrind

  • Issue #701 - Add RCR performance counter component

  • Issue #528 - Add support for known failures and warning count/comparisons to hpx_run_tests.py