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