HPX V0.7.0 (Dec 12, 2011)#

We have had roughly 1000 commits since the last release and we have closed approximately 120 tickets (bugs, feature requests, etc.).

General changes#

  • Completely removed code related to deprecated AGAS V1, started to work on AGAS V2.1.

  • Started to clean up and streamline the exposed APIs (see ‘API changes’ below for more details).

  • Revamped and unified performance counter framework, added a lot of new performance counter instances for monitoring of a diverse set of internal HPX parameters (queue lengths, access statistics, etc.).

  • Improved general error handling and logging support.

  • Fixed several race conditions, improved overall stability, decreased memory footprint, improved overall performance (major optimizations include native TLS support and ranged-based AGAS caching).

  • Added support for running HPX applications with PBS.

  • Many updates to the build system, added support for gcc 4.5.x and 4.6.x, added C++11 support.

  • Many updates to default command line options.

  • Added many tests, set up buildbot for continuous integration testing.

  • Better shutdown handling of distributed applications.

Example applications#

  • quickstart/factorial and quickstart/fibonacci, future-recursive parallel algorithms.

  • quickstart/hello_world, distributed hello world example.

  • quickstart/rma, simple remote memory access example

  • quickstart/quicksort, parallel quicksort implementation.

  • gtc, gyrokinetic torodial code.

  • bfs, breadth-first-search, example code for a graph application.

  • sheneos, partitioning of large data sets.

  • accumulator, simple component example.

  • balancing/os_thread_num, balancing/px_thread_phase, examples demonstrating load balancing and work stealing.

API changes#

  • Added hpx::find_all_localities.

  • Added hpx::terminate for non-graceful termination of applications.

  • Added hpx::lcos::async functions for simpler asynchronous programming.

  • Added new AGAS interface for handling of symbolic namespace (hpx::agas::*).

  • Renamed hpx::components::wait to hpx::lcos::wait.

  • Renamed hpx::lcos::future_value to hpx::lcos::promise.

  • Renamed hpx::lcos::recursive_mutex to hpx::lcos::local_recursive_mutex, hpx::lcos::mutex to hpx::lcos::local_mutex

  • Removed support for Boost versions older than V1.38, recommended Boost version is now V1.47 and newer.

  • Removed hpx::process (this will be replaced by a real process implementation in the future).

  • Removed non-functional LCO code (hpx::lcos::dataflow, hpx::lcos::thunk, hpx::lcos::dataflow_variable).

  • Removed deprecated hpx::naming::full_address.

Bug fixes (closed tickets)#

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

  • Issue #28 - Integrate Windows/Linux CMake code for HPX core

  • Issue #32 - hpx::cout() should be hpx::cout

  • Issue #33 - AGAS V2 legacy client does not properly handle error_code

  • Issue #60 - AGAS: allow for registerid to optionally take ownership of the gid

  • Issue #62 - adaptive1d compilation failure in Fusion

  • Issue #64 - Parcel subsystem doesn’t resolve domain names

  • Issue #83 - No error handling if no console is available

  • Issue #84 - No error handling if a hosted locality is treated as the bootstrap server

  • Issue #90 - Add general commandline option -N

  • Issue #91 - Add possibility to read command line arguments from file

  • Issue #92 - Always log exceptions/errors to the log file

  • Issue #93 - Log the command line/program name

  • Issue #95 - Support for distributed launches

  • Issue #97 - Attempt to create a bad component type in AMR examples

  • Issue #100 - factorial and factorial_get examples trigger AGAS component type assertions

  • Issue #101 - Segfault when hpx::process::here() is called in fibonacci2

  • Issue #102 - unknown_component_address in int_object_semaphore_client

  • Issue #114 - marduk raises assertion with default parameters

  • Issue #115 - Logging messages for SMP runs (on the console) shouldn’t be buffered

  • Issue #119 - marduk linking strategy breaks other applications

  • Issue #121 - pbsdsh problem

  • Issue #123 - marduk, dataflow and adaptive1d fail to build

  • Issue #124 - Lower default preprocessing arity

  • Issue #125 - Move hpx::detail::diagnostic_information out of the detail namespace

  • Issue #126 - Test definitions for AGAS reference counting

  • Issue #128 - Add averaging performance counter

  • Issue #129 - Error with endian.hpp while building adaptive1d

  • Issue #130 - Bad initialization of performance counters

  • Issue #131 - Add global startup/shutdown functions to component modules

  • Issue #132 - Avoid using auto_ptr

  • Issue #133 - On Windows hpx.dll doesn’t get installed

  • Issue #134 - HPX_LIBRARY does not reflect real library name (on Windows)

  • Issue #135 - Add detection of unique_ptr to build system

  • Issue #137 - Add command line option allowing to repeatedly evaluate performance counters

  • Issue #139 - Logging is broken

  • Issue #140 - CMake problem on windows

  • Issue #141 - Move all non-component libraries into $PREFIX/lib/hpx

  • Issue #143 - adaptive1d throws an exception with the default command line options

  • Issue #146 - Early exception handling is broken

  • Issue #147 - Sheneos doesn’t link on Linux

  • Issue #149 - sheneos_test hangs

  • Issue #154 - Compilation fails for r5661

  • Issue #155 - Sine performance counters example chokes on chrono headers

  • Issue #156 - Add build type to –version

  • Issue #157 - Extend AGAS caching to store gid ranges

  • Issue #158 - r5691 doesn’t compile

  • Issue #160 - Re-add AGAS function for resolving a locality to its prefix

  • Issue #168 - Managed components should be able to access their own GID

  • Issue #169 - Rewrite AGAS future pool

  • Issue #179 - Complete switch to request class for AGAS server interface

  • Issue #182 - Sine performance counter is loaded by other examples

  • Issue #185 - Write tests for symbol namespace reference counting

  • Issue #191 - Assignment of read-only variable in point_geometry

  • Issue #200 - Seg faults when querying performance counters

  • Issue #204 - –ifnames and suffix stripping needs to be more generic

  • Issue #205 - –list-* and –print-counter-* options do not work together and produce no warning

  • Issue #207 - Implement decrement entry merging

  • Issue #208 - Replace the spinlocks in AGAS with hpx::lcos::local_mutexes

  • Issue #210 - Add an –ifprefix option

  • Issue #214 - Performance test for PX-thread creation

  • Issue #216 - VS2010 compilation

  • Issue #222 - r6045 context_linux_x86.hpp

  • Issue #223 - fibonacci hangs when changing the state of an active thread

  • Issue #225 - Active threads end up in the FEB wait queue

  • Issue #226 - VS Build Error for Accumulator Client

  • Issue #228 - Move all traits into namespace hpx::traits

  • Issue #229 - Invalid initialization of reference in thread_init_data

  • Issue #235 - Invalid GID in iostreams

  • Issue #238 - Demangle type names for the default implementation of get_action_name

  • Issue #241 - C++11 support breaks GCC 4.5

  • Issue #247 - Reference to temporary with GCC 4.4

  • Issue #248 - Seg fault at shutdown with GCC 4.4

  • Issue #253 - Default component action registration kills compiler

  • Issue #272 - G++ unrecognized command line option

  • Issue #273 - quicksort example doesn’t compile

  • Issue #277 - Invalid CMake logic for Windows