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
tohpx::lcos::wait
. - Renamed
hpx::lcos::future_value
tohpx::lcos::promise
. - Renamed
hpx::lcos::recursive_mutex
tohpx::lcos::local_recursive_mutex
,hpx::lcos::mutex
tohpx::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