HPX V0.9.9 (Oct 31, 2014, codename Spooky)#

General changes#

We have had over 1500 commits since the last release and we have closed over 200 tickets (bugs, feature requests, pull requests, etc.). These are by far the largest numbers of commits and resolved issues for any of the HPX releases so far. We are especially happy about the large number of people who contributed for the first time to HPX.

  • We completed the transition from the older (non-conforming) implementation of hpx::future to the new and fully conforming version by removing the old code and by renaming the type hpx::unique_future to hpx::future. In order to maintain backwards compatibility with existing code which uses the type hpx::unique_future we support the configuration variable HPX_UNIQUE_FUTURE_ALIAS. If this variable is set to ON while running cmake it will additionally define a template alias for this type.

  • We rewrote and significantly changed our build system. Please have a look at the new (now generated) documentation here: Building HPX. Please revisit your build scripts to adapt to the changes. The most notable changes are:

    • HPX_NO_INSTALL is no longer necessary.

    • For external builds, you need to set HPX_DIR instead of HPX_ROOT as described here: Using HPX with CMake-based projects.

    • IDEs that support multiple configurations (Visual Studio and XCode) can now be used as intended. that means no build dir.

    • Building HPX statically (without dynamic libraries) is now supported (-DHPX_STATIC_LINKING=On).

    • Please note that many variables used to configure the build process have been renamed to unify the naming conventions (see the section CMake options for more information).

    • This also fixes a long list of issues, for more information see Issue #1204.

  • We started to implement various proposals to the C++ Standardization committee related to parallelism and concurrency, most notably N4409 (Working Draft, Technical Specification for C++ Extensions for Parallelism), N4411 (Task Region Rev. 3), and N4313 (Working Draft, Technical Specification for C++ Extensions for Concurrency).

  • We completely remodeled our automatic build system to run builds and unit tests on various systems and compilers. This allows us to find most bugs right as they were introduced and helps to maintain a high level of quality and compatibility. The newest build logs can be found at HPX Buildbot Website.

Bug fixes (closed tickets)#

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

  • Issue #1296 - Rename make_error_future to make_exceptional_future, adjust to N4123

  • Issue #1295 - building issue

  • Issue #1293 - Transpose example

  • Issue #1292 - Wrong abs() function used in example

  • Issue #1291 - non-synchronized shift operators have been removed

  • Issue #1290 - RDTSCP is defined as true for Xeon Phi build

  • Issue #1289 - Fixing 1288

  • Issue #1288 - Add new performance counters

  • Issue #1287 - Hierarchy scheduler broken performance counters

  • Issue #1286 - Algorithm cleanup

  • Issue #1285 - Broken Links in Documentation

  • Issue #1284 - Uninitialized copy

  • Issue #1283 - missing boost::scoped_ptr includes

  • Issue #1282 - Update documentation of build options for schedulers

  • Issue #1281 - reset idle rate counter

  • Issue #1280 - Bug when executing on Intel MIC

  • Issue #1279 - Add improved when_all/wait_all

  • Issue #1278 - Implement improved when_all/wait_all

  • Issue #1277 - feature request: get access to argc argv and variables_map

  • Issue #1276 - Remove merging map

  • Issue #1274 - Weird (wrong) string code in papi.cpp

  • Issue #1273 - Sequential task execution policy

  • Issue #1272 - Avoid CMake name clash for Boost.Thread library

  • Issue #1271 - Updates on HPX Test Units

  • Issue #1270 - hpx/util/safe_lexical_cast.hpp is added

  • Issue #1269 - Added default value for “LIB” cmake variable

  • Issue #1268 - Memory Counters not working

  • Issue #1266 - FindHPX.cmake is not installed

  • Issue #1263 - apply_remote test takes too long

  • Issue #1262 - Chrono cleanup

  • Issue #1261 - Need make install for papi counters and this builds all the examples

  • Issue #1260 - Documentation of Stencil example claims

  • Issue #1259 - Avoid double-linking Boost on Windows

  • Issue #1257 - Adding additional parameter to create_thread

  • Issue #1256 - added buildbot changes to release notes

  • Issue #1255 - Cannot build MiniGhost

  • Issue #1253 - hpx::thread defects

  • Issue #1252 - HPX_PREFIX is too fragile

  • Issue #1250 - switch_to_fiber_emulation does not work properly

  • Issue #1249 - Documentation is generated under Release folder

  • Issue #1248 - Fix usage of hpx_generic_coroutine_context and get tests passing on powerpc

  • Issue #1247 - Dynamic linking error

  • Issue #1246 - Make cpuid.cpp C++11 compliant

  • Issue #1245 - HPX fails on startup (setting thread affinity mask)

  • Issue #1244 - HPX_WITH_RDTSC configure test fails, but should succeed

  • Issue #1243 - CTest dashboard info for CSCS CDash drop location

  • Issue #1242 - Mac fixes

  • Issue #1241 - Failure in Distributed with Boost 1.56

  • Issue #1240 - fix a race condition in examples.diskperf

  • Issue #1239 - fix wait_each in examples.diskperf

  • Issue #1238 - Fixed #1237: hpx::util::portable_binary_iarchive failed

  • Issue #1237 - hpx::util::portable_binary_iarchive faileds

  • Issue #1235 - Fixing clang warnings and errors

  • Issue #1234 - TCP runs fail: Transport endpoint is not connected

  • Issue #1233 - Making sure the correct number of threads is registered with AGAS

  • Issue #1232 - Fixing race in wait_xxx

  • Issue #1231 - Parallel minmax

  • Issue #1230 - Distributed run of 1d_stencil_8 uses less threads than spec. & sometimes gives errors

  • Issue #1229 - Unstable number of threads

  • Issue #1228 - HPX link error (cmake / MPI)

  • Issue #1226 - Warning about struct/class thread_counters

  • Issue #1225 - Adding parallel::replace etc

  • Issue #1224 - Extending dataflow to pass through non-future arguments

  • Issue #1223 - Remaining find algorithms implemented, N4071

  • Issue #1222 - Merging all the changes

  • Issue #1221 - No error output when using mpirun with hpx

  • Issue #1219 - Adding new AGAS cache performance counters

  • Issue #1216 - Fixing using futures (clients) as arguments to actions

  • Issue #1215 - Error compiling simple component

  • Issue #1214 - Stencil docs

  • Issue #1213 - Using more than a few dozen MPI processes on SuperMike results in a seg fault before getting to hpx_main

  • Issue #1212 - Parallel rotate

  • Issue #1211 - Direct actions cause the future’s shared_state to be leaked

  • Issue #1210 - Refactored local::promise to be standard conformant

  • Issue #1209 - Improve command line handling

  • Issue #1208 - Adding parallel::reverse and parallel::reverse_copy

  • Issue #1207 - Add copy_backward and move_backward

  • Issue #1206 - N4071 additional algorithms implemented

  • Issue #1204 - Cmake simplification and various other minor changes

  • Issue #1203 - Implementing new launch policy for (local) async: hpx::launch::fork.

  • Issue #1202 - Failed assertion in connection_cache.hpp

  • Issue #1201 - pkg-config doesn’t add mpi link directories

  • Issue #1200 - Error when querying time performance counters

  • Issue #1199 - library path is now configurable (again)

  • Issue #1198 - Error when querying performance counters

  • Issue #1197 - tests fail with intel compiler

  • Issue #1196 - Silence several warnings

  • Issue #1195 - Rephrase initializers to work with VC++ 2012

  • Issue #1194 - Simplify parallel algorithms

  • Issue #1193 - Adding parallel::equal

  • Issue #1192 - HPX(out_of_memory) on including <hpx/hpx.hpp>

  • Issue #1191 - Fixing #1189

  • Issue #1190 - Chrono cleanup

  • Issue #1189 - Deadlock .. somewhere? (probably serialization)

  • Issue #1188 - Removed future::get_status()

  • Issue #1186 - Fixed FindOpenCL to find current AMD APP SDK

  • Issue #1184 - Tweaking future unwrapping

  • Issue #1183 - Extended parallel::reduce

  • Issue #1182 - future::unwrap hangs for launch::deferred

  • Issue #1181 - Adding all_of, any_of, and none_of and corresponding documentation

  • Issue #1180 - hpx::cout defect

  • Issue #1179 - hpx::async does not work for member function pointers when called on types with self-defined unary operator*

  • Issue #1178 - Implemented variadic hpx::util::zip_iterator

  • Issue #1177 - MPI parcelport defect

  • Issue #1176 - HPX_DEFINE_COMPONENT_CONST_ACTION_TPL does not have a 2-argument version

  • Issue #1175 - Create util::zip_iterator working with util::tuple<>

  • Issue #1174 - Error Building HPX on linux, root_certificate_authority.cpp

  • Issue #1173 - hpx::cout output lost

  • Issue #1172 - HPX build error with Clang 3.4.2

  • Issue #1171 - CMAKE_INSTALL_PREFIX ignored

  • Issue #1170 - Close hpx_benchmarks repository on Github

  • Issue #1169 - Buildbot emails have syntax error in url

  • Issue #1167 - Merge partial implementation of standards proposal N3960

  • Issue #1166 - Fixed several compiler warnings

  • Issue #1165 - cmake warns: “tests.regressions.actions” does not exist

  • Issue #1164 - Want my own serialization of hpx::future

  • Issue #1162 - Segfault in hello_world example

  • Issue #1161 - Use HPX_ASSERT to aid the compiler

  • Issue #1160 - Do not put -DNDEBUG into hpx_application.pc

  • Issue #1159 - Support Clang 3.4.2

  • Issue #1158 - Fixed #1157: Rename when_n/wait_n, add when_xxx_n/wait_xxx_n

  • Issue #1157 - Rename when_n/wait_n, add when_xxx_n/wait_xxx_n

  • Issue #1156 - Force inlining fails

  • Issue #1155 - changed header of printout to be compatible with python csv module

  • Issue #1154 - Fixing iostreams

  • Issue #1153 - Standard manipulators (like std::endl) do not work with hpx::ostream

  • Issue #1152 - Functions revamp

  • Issue #1151 - Suppressing cmake 3.0 policy warning for CMP0026

  • Issue #1150 - Client Serialization error

  • Issue #1149 - Segfault on Stampede

  • Issue #1148 - Refactoring mini-ghost

  • Issue #1147 - N3960 copy_if and copy_n implemented and tested

  • Issue #1146 - Stencil print

  • Issue #1145 - N3960 hpx::parallel::copy implemented and tested

  • Issue #1144 - OpenMP examples 1d_stencil do not build

  • Issue #1143 - 1d_stencil OpenMP examples do not build

  • Issue #1142 - Cannot build HPX with gcc 4.6 on OS X

  • Issue #1140 - Fix OpenMP lookup, enable usage of config tests in external CMake projects.

  • Issue #1139 - hpx/hpx/config/compiler_specific.hpp

  • Issue #1138 - clean up pkg-config files

  • Issue #1137 - Improvements to create binary packages

  • Issue #1136 - HPX_GCC_VERSION not defined on all compilers

  • Issue #1135 - Avoiding collision between winsock2.h and windows.h

  • Issue #1134 - Making sure, that hpx::finalize can be called from any locality

  • Issue #1133 - 1d stencil examples

  • Issue #1131 - Refactor unique_function implementation

  • Issue #1130 - Unique function

  • Issue #1129 - Some fixes to the Build system on OS X

  • Issue #1128 - Action future args

  • Issue #1127 - Executor causes segmentation fault

  • Issue #1124 - Adding new API functions: register_id_with_basename, unregister_id_with_basename, find_ids_from_basename; adding test

  • Issue #1123 - Reduce nesting of try-catch construct in encode_parcels?

  • Issue #1122 - Client base fixes

  • Issue #1121 - Update hpxrun.py.in

  • Issue #1120 - HTTS2 tests compile errors on v110 (VS2012)

  • Issue #1119 - Remove references to boost::atomic in accumulator example

  • Issue #1118 - Only build test thread_pool_executor_1114_test if HPX_SCHEDULER is set

  • Issue #1117 - local_queue_executor linker error on vc110

  • Issue #1116 - Disabled performance counter should give runtime errors, not invalid data

  • Issue #1115 - Compile error with Intel C++ 13.1

  • Issue #1114 - Default constructed executor is not usable

  • Issue #1113 - Fast compilation of logging causes ABI incompatibilities between different NDEBUG values

  • Issue #1112 - Using thread_pool_executors causes segfault

  • Issue #1111 - hpx::threads::get_thread_data always returns zero

  • Issue #1110 - Remove unnecessary null pointer checks

  • Issue #1109 - More tests adjustments

  • Issue #1108 - Clarify build rules for “libboost_atomic-mt.so”?

  • Issue #1107 - Remove unnecessary null pointer checks

  • Issue #1106 - network_storage benchmark improvements, adding legends to plots and tidying layout

  • Issue #1105 - Add more plot outputs and improve instructions doc

  • Issue #1104 - Complete quoting for parameters of some CMake commands

  • Issue #1103 - Work on test/scripts

  • Issue #1102 - Changed minimum requirement of window install to 2012

  • Issue #1101 - Changed minimum requirement of window install to 2012

  • Issue #1100 - Changed readme to no longer specify using MSVC 2010 compiler

  • Issue #1099 - Error returning futures from component actions

  • Issue #1098 - Improve storage test

  • Issue #1097 - data_actions quickstart example calls missing function decorate_action of data_get_action

  • Issue #1096 - MPI parcelport broken with new zero copy optimization

  • Issue #1095 - Warning C4005: _WIN32_WINNT: Macro redefinition

  • Issue #1094 - Syntax error for -DHPX_UNIQUE_FUTURE_ALIAS in master

  • Issue #1093 - Syntax error for -DHPX_UNIQUE_FUTURE_ALIAS

  • Issue #1092 - Rename unique_future<> back to future<>

  • Issue #1091 - Inconsistent error message

  • Issue #1090 - On windows 8.1 the examples crashed if using more than one os thread

  • Issue #1089 - Components should be allowed to have their own executor

  • Issue #1088 - Add possibility to select a network interface for the ibverbs parcelport

  • Issue #1087 - ibverbs and ipc parcelport uses zero copy optimization

  • Issue #1083 - Make shell examples copyable in docs

  • Issue #1082 - Implement proper termination detection during shutdown

  • Issue #1081 - Implement thread_specific_ptr for hpx::threads

  • Issue #1072 - make install not working properly

  • Issue #1070 - Complete quoting for parameters of some CMake commands

  • Issue #1059 - Fix more unused variable warnings

  • Issue #1051 - Implement when_each

  • Issue #973 - Would like option to report hwloc bindings

  • Issue #970 - Bad flags for Fortran compiler

  • Issue #941 - Create a proper user level context switching class for BG/Q

  • Issue #935 - Build error with gcc 4.6 and Boost 1.54.0 on hpx trunk and 0.9.6

  • Issue #934 - Want to build HPX without dynamic libraries

  • Issue #927 - Make hpx/lcos/reduce.hpp accept futures of id_type

  • Issue #926 - All unit tests that are run with more than one thread with CTest/hpx_run_test should configure hpx.os_threads

  • Issue #925 - regression_dataflow_791 needs to be brought in line with HPX standards

  • Issue #899 - Fix race conditions in regression tests

  • Issue #879 - Hung test leads to cascading test failure; make tests should support the MPI parcelport

  • Issue #865 - future<T> and friends shall work for movable only Ts

  • Issue #847 - Dynamic libraries are not installed on OS X

  • Issue #816 - First Program tutorial pull request

  • Issue #799 - Wrap lexical_cast to avoid exceptions

  • Issue #720 - broken configuration when using ccmake on Ubuntu

  • Issue #622 - --hpx:hpx and --hpx:debug-hpx-log is nonsensical

  • Issue #525 - Extend barrier LCO test to run in distributed

  • Issue #515 - Multi-destination version of hpx::apply is broken

  • Issue #509 - Push Boost.Atomic changes upstream

  • Issue #503 - Running HPX applications on Windows should not require setting %PATH%

  • Issue #461 - Add a compilation sanity test

  • Issue #456 - hpx_run_tests.py should log output from tests that timeout

  • Issue #454 - Investigate threadmanager performance

  • Issue #345 - Add more versatile environmental/cmake variable support to hpx_find_* CMake macros

  • Issue #209 - Support multiple configurations in generated build files

  • Issue #190 - hpx::cout should be a std::ostream

  • Issue #189 - iostreams component should use startup/shutdown functions

  • Issue #183 - Use Boost.ICL for correctness in AGAS

  • Issue #44 - Implement real futures