HPX V0.9.5 (Jan 16, 2013)¶
We have had over 1000 commits since the last release and we have closed roughly 150 tickets (bugs, feature requests, etc.).
General changes¶
This release is continuing along the lines of code and API consolidation, and overall usability inprovements. We dedicated much attention to performance and we were able to significantly improve the threading and networking subsystems.
We successfully ported HPX to the Android platform. HPX applications now not only can run on mobile devices, but we support heterogeneous applications running across architecture boundaries. At the Supercomputing Conference 2012 we demonstrated connecting Android tablets to simulations running on a Linux cluster. The Android tablet was used to query performance counters from the Linux simulation and to steer its parameters.
We successfully ported HPX to Mac OSX (using the Clang compiler). Thanks to Pyry Jahkola for contributing the corresponding patches. Please see the section How to install HPX on OS X (Mac) for more details.
We made a special effort to make HPX usable in highly concurrent use cases. Many
of the HPX API functions which possibly take longer than 100 microseconds to
execute now can be invoked asynchronously. We added uniform support for
composing futures which simplifies to write asynchronous code. HPX actions
(function objects encapsulating possibly concurrent remote function invocations)
are now well integrated with all other API facilities such like hpx::bind
.
All of the API has been aligned as much as possible with established paradigms.
HPX now mirrors many of the facilities as defined in the C++11 Standard, such as
hpx::thread
, hpx::function
, hpx::future
, etc.
A lot of work has been put into improving the documentation. Many of the API functions are documented now, concepts are explained in detail, and examples are better described than before. The new documentation index enables finding information with lesser effort.
This is the first release of HPX we perform after the move to Github This step has enabled a wider participation from the community and further encourages us in our decision to release HPX as a true open source library (HPX is licensed under the very liberal Boost Software License).
Bug fixes (closed tickets)¶
Here is a list of the important tickets we closed for this release. This is by far the longest list of newly implemented features and fixed issues for any of HPX’ releases so far.
Issue #666 - Segfault on calling hpx::finalize twice
Issue #665 - Adding declaration num_of_cores
Issue #662 - pkgconfig is building wrong
Issue #660 - Need uninterrupt function
Issue #659 - Move our logging library into a different namespace
Issue #658 - Dynamic performance counter types are broken
Issue #657 - HPX v0.9.5 (RC1) hello_world example segfaulting
Issue #656 - Define the affinity of parcel-pool, io-pool, and timer-pool threads
Issue #654 - Integrate the Boost auto_index tool with documentation
Issue #653 - Make HPX build on OS X + Clang + libc++
Issue #651 - Add fine-grained control for thread pinning
Issue #650 - Command line no error message when using -hpx:(anything)
Issue #645 - Command line aliases don’t work in [teletype]``@file``[c++]
Issue #644 - Terminated threads are not always properly cleaned up
Issue #640 -
future_data<T>::set_on_completed_
used without locksIssue #638 - hpx build with intel compilers fails on linux
Issue #637 - –copy-dt-needed-entries breaks with gold
Issue #635 - Boost V1.53 will add Boost.Lockfree and Boost.Atomic
Issue #633 - Re-add examples to final 0.9.5 release
Issue #632 - Example
thread_aware_timer
is brokenIssue #631 - FFT application throws error in parcellayer
Issue #630 - Event synchronization example is broken
Issue #629 - Waiting on futures hangs
Issue #628 - Add an
HPX_ALWAYS_ASSERT
macroIssue #625 - Port coroutines context switch benchmark
Issue #621 - New INI section for stack sizes
Issue #618 - pkg_config support does not work with a HPX debug build
Issue #617 - hpx/external/logging/boost/logging/detail/cache_before_init.hpp:139:67: error: ‘get_thread_id’ was not declared in this scope
Issue #616 - Change wait_xxx not to use locking
Issue #615 - Revert visibility ‘fix’ (fb0b6b8245dad1127b0c25ebafd9386b3945cca9)
Issue #614 - Fix Dataflow linker error
Issue #613 - find_here should throw an exception on failure
Issue #612 - Thread phase doesn’t show up in debug mode
Issue #611 - Make stack guard pages configurable at runtime (initialization time)
Issue #610 - Co-Locate Components
Issue #609 - future_overhead
Issue #608 -
--hpx:list-counter-infos
problemIssue #607 - Update Boost.Context based backend for coroutines
Issue #606 - 1d_wave_equation is not working
Issue #605 - Any C++ function that has serializable arguments and a serializable return type should be remotable
Issue #604 - Connecting localities isn’t working anymore
Issue #603 - Do not verify any ini entries read from a file
Issue #602 - Rename argument_size to type_size/ added implementation to get parcel size
Issue #599 - Enable locality specific command line options
Issue #598 - Need an API that accesses the performance counter reporting the system uptime
Issue #597 - compiling on ranger
Issue #595 - I need a place to store data in a thread self pointer
Issue #594 - 32/64 interoperability
Issue #593 - Warn if logging is disabled at compile time but requested at runtime
Issue #592 - Add optional argument value to
--hpx:list-counters
and--hpx:list-counter-infos
Issue #591 - Allow for wildcards in performance counter names specified with
--hpx:print-counter
Issue #590 - Local promise semantic differences
Issue #589 - Create API to query performance counter names
Issue #587 - Add get_num_localities and get_num_threads to AGAS API
Issue #586 - Adjust local AGAS cache size based on number of localities
Issue #585 - Error while using counters in HPX
Issue #584 - counting argument size of actions, initial pass.
Issue #581 - Remove
RemoteResult
template parameter forfuture<>
Issue #580 - Add possibility to hook into actions
Issue #578 - Use angle brackets in HPX error dumps
Issue #576 - Exception incorrectly thrown when
--help
is usedIssue #575 - HPX(bad_component_type) with gcc 4.7.2 and boost 1.51
Issue #574 -
--hpx:connect
command line parameter not working correctlyIssue #571 -
hpx::wait()
(callback version) should pass the future to the callback functionIssue #570 -
hpx::wait
should operate onboost::arrays
andstd::lists
Issue #569 - Add a logging sink for Android
Issue #568 - 2-argument version of
HPX_DEFINE_COMPONENT_ACTION
Issue #567 - Connecting to a running HPX application works only once
Issue #565 - HPX doesn’t shutdown properly
Issue #564 - Partial preprocessing of new component creation interface
Issue #563 - Add
hpx::start
/hpx::stop
to avoid blocking main threadIssue #562 - All command line arguments swallowed by hpx
Issue #561 - Boost.Tuple is not move aware
Issue #558 -
boost::shared_ptr<>
style semantics/syntax for client classesIssue #556 - Creation of partially preprocessed headers should be enabled for Boost newer than V1.50
Issue #555 -
BOOST_FORCEINLINE
does not name a typeIssue #554 - Possible race condition in thread
get_id()
Issue #552 - Move enable client_base
Issue #550 - Add stack size category ‘huge’
Issue #549 - ShenEOS run seg-faults on single or distributed runs
Issue #545 -
AUTOGLOB
broken for add_hpx_componentIssue #542 - FindHPX_HDF5 still searches multiple times
Issue #541 - Quotes around application name in hpx::init
Issue #539 - Race conditition occurring with new lightweight threads
Issue #535 - hpx_run_tests.py exits with no error code when tests are missing
Issue #530 - Thread description(<unknown>) in logs
Issue #523 - Make thread objects more lightweight
Issue #521 -
hpx::error_code
is not usable for lightweight error handlingIssue #520 - Add full user environment to HPX logs
Issue #519 - Build succeeds, running fails
Issue #517 - Add a guard page to linux coroutine stacks
Issue #516 - hpx::thread::detach suspends while holding locks, leads to hang in debug
Issue #514 - Preprocessed headers for <hpx/apply.hpp> don’t compile
Issue #513 - Buildbot configuration problem
Issue #512 - Implement action based stack size customization
Issue #511 - Move action priority into a separate type trait
Issue #510 - trunk broken
Issue #507 - no matching function for call to
boost::scoped_ptr<hpx::threads::topology>::scoped_ptr(hpx::threads::linux_topology*)
Issue #505 - undefined_symbol regression test currently failing
Issue #502 - Adding OpenCL and OCLM support to HPX for Windows and Linux
Issue #501 - find_package(HPX) sets cmake output variables
Issue #500 - wait_any/wait_all are badly named
Issue #499 - Add support for disabling pbs support in pbs runs
Issue #498 - Error during no-cache runs
Issue #496 - Add partial preprocessing support to cmake
Issue #495 - Support HPX modules exporting startup/shutdown functions only
Issue #494 - Allow modules to specify when to run startup/shutdown functions
Issue #493 - Avoid constructing a string in make_success_code
Issue #492 - Performance counter creation is no longer synchronized at startup
Issue #491 - Performance counter creation is no longer synchronized at startup
Issue #490 - Sheneos on_completed_bulk seg fault in distributed
Issue #489 - compiling issue with g++44
Issue #488 - Adding OpenCL and OCLM support to HPX for the MSVC platform
Issue #487 - FindHPX.cmake problems
Issue #485 - Change distributing_factory and binpacking_factory to use bulk creation
Issue #484 - Change
HPX_DONT_USE_PREPROCESSED_FILES
toHPX_USE_PREPROCESSED_FILES
Issue #483 - Memory counter for Windows
Issue #479 - strange errors appear when requesting performance counters on multiple nodes
Issue #477 - Create (global) timer for multi-threaded measurements
Issue #472 - Add partial preprocessing using Wave
Issue #471 - Segfault stack traces don’t show up in release
Issue #468 - External projects need to link with internal components
Issue #462 - Startup/shutdown functions are called more than once
Issue #458 - Consolidate hpx::util::high_resolution_timer and
hpx::util::high_resolution_clock
Issue #457 - index out of bounds in
allgather_and_gate
on 4 cores or moreIssue #448 - Make HPX compile with clang
Issue #447 - ‘make tests’ should execute tests on local installation
Issue #446 - Remove SVN-related code from the codebase
Issue #444 - race condition in smp
Issue #441 - Patched Boost.Serialization headers should only be installed if needed
Issue #439 - Components using
HPX_REGISTER_STARTUP_MODULE
fail to compile with MSVCIssue #436 - Verify that no locks are being held while threads are suspended
Issue #435 - Installing HPX should not clobber existing Boost installation
Issue #434 - Logging external component failed (Boost 1.50)
Issue #433 - Runtime crash when building all examples
Issue #432 - Dataflow hangs on 512 cores/64 nodes
Issue #430 - Problem with distributing factory
Issue #424 - File paths referring to XSL-files need to be properly escaped
Issue #417 - Make dataflow LCOs work out of the box by using partial preprocessing
Issue #413 - hpx_svnversion.py fails on Windows
Issue #412 - Make hpx::error_code equivalent to hpx::exception
Issue #398 - HPX clobbers out-of-tree application specific CMake variables (specifically
CMAKE_BUILD_TYPE
)Issue #394 - Remove code generating random port numbers for network
Issue #378 - ShenEOS scaling issues
Issue #354 - Create a coroutines wrapper for Boost.Context
Issue #349 - Commandline option
--localities=N/-lN
should be necessary only on AGAS localityIssue #334 - Add auto_index support to cmake based documentation toolchain
Issue #318 - Network benchmarks
Issue #317 - Implement network performance counters
Issue #310 - Duplicate logging entries
Issue #230 - Add compile time option to disable thread debugging info
Issue #171 - Add an INI option to turn off deadlock detection independently of logging
Issue #170 - OSHL internal counters are incorrect
Issue #103 - Better diagnostics for multiple component/action registerations under the same name
Issue #48 - Support for Darwin (Xcode + Clang)
Issue #21 - Build fails with GCC 4.6