HPX V0.9.7 (Nov 13, 2013)

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

General changes

  • Ported HPX to BlueGene/Q
  • Improved HPX support for Xeon/Phi accelerators
  • Reimplemented hpx::bind, hpx::tuple, and hpx::function for better performance and better compliance with the C++11 Standard. Added hpx::mem_fn.
  • Reworked hpx::when_all and hpx::when_any for better compliance with the ongoing C++ standardization effort, added heterogeneous version for those functions. Added hpx::when_any_swapped.
  • Added hpx::copy as a precursor for a migrate functionality
  • Added hpx::get_ptr allowing to directly access the memory underlying a given component
  • Added the hpx::lcos::broadcast, hpx::lcos::reduce, and hpx::lcos::fold collective operations
  • Added hpx::get_locality_name allowing to retrieve the name of any of the localities for the application.
  • Added support for more flexible thread affinity control from the HPX command line, such as new modes for --hpx:bind (balanced, scattered, compact), improved default settings when running multiple localities on the same node.
  • Added experimental executors for simpler thread pooling and scheduling. This API may change in the future as it will stay aligned with the ongoing C++ standardization efforts.
  • Massively improved the performance of the HPX serialization code. Added partial support for zero copy serialization of array and bitwise-copyable types.
  • General performance improvements of the code related to threads and futures.

Bug fixes (closed tickets)

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

  • Issue #1005 - Allow to disable array optimizations and zero copy optimizations for each parcelport
  • Issue #1004 - Generate new HPX logo image for the docs
  • Issue #1002 - If MPI parcelport is not available, running HPX under mpirun should fail
  • Issue #1001 - Zero copy serialization raises assert
  • Issue #1000 - Can’t connect to a HPX application running with the MPI parcelport from a non MPI parcelport locality
  • Issue #999 - Optimize hpx::when_n
  • Issue #998 - Fixed const-correctness
  • Issue #997 - Making serialize_buffer::data() type save
  • Issue #996 - Memory leak in hpx::lcos::promise
  • Issue #995 - Race while registering pre-shutdown functions
  • Issue #994 - thread_rescheduling regression test does not compile
  • Issue #992 - Correct comments and messages
  • Issue #991 - setcap cap_sys_rawio=ep for power profiling causes an HPX application to abort
  • Issue #989 - Jacobi hangs during execution
  • Issue #988 - multiple_init test is failing
  • Issue #986 - Can’t call a function called “init” from “main” when using <hpx/hpx_main.hpp>
  • Issue #984 - Reference counting tests are failing
  • Issue #983 - thread_suspension_executor test fails
  • Issue #980 - Terminating HPX threads don’t leave stack in virgin state
  • Issue #979 - Static scheduler not in documents
  • Issue #978 - Preprocessing limits are broken
  • Issue #977 - Make tests.regressions.lcos.future_hang_on_get shorter
  • Issue #976 - Wrong library order in pkgconfig
  • Issue #975 - Please reopen #963
  • Issue #974 - Option pu-offset ignored in fixing_588 branch
  • Issue #972 - Cannot use MKL with HPX
  • Issue #969 - Non-existent INI files requested on the command line via --hpx:config do not cause warnings or errors.
  • Issue #968 - Cannot build examples in fixing_588 branch
  • Issue #967 - Command line description of --hpx:queuing seems wrong
  • Issue #966 - --hpx:print-bind physical core numbers are wrong
  • Issue #965 - Deadlock when building in Release mode
  • Issue #963 - Not all worker threads are working
  • Issue #962 - Problem with SLURM integration
  • Issue #961 - --hpx:print-bind outputs incorrect information
  • Issue #960 - Fix cut and paste error in documentation of get_thread_priority
  • Issue #959 - Change link to boost.atomic in documentation to point to boost.org
  • Issue #958 - Undefined reference to intrusive_ptr_release
  • Issue #957 - Make tuple standard compliant
  • Issue #956 - Segfault with a3382fb
  • Issue #955 - --hpx:nodes and --hpx:nodefiles do not work with foreign nodes
  • Issue #954 - Make order of arguments for hpx::async and hpx::broadcast consistent
  • Issue #953 - Cannot use MKL with HPX
  • Issue #952 - register_[pre_]shutdown_function never throw
  • Issue #951 - Assert when number of threads is greater than hardware concurrency
  • Issue #948 - HPX_HAVE_GENERIC_CONTEXT_COROUTINES conflicts with HPX_HAVE_FIBER_BASED_COROUTINES
  • Issue #947 - Need MPI_THREAD_MULTIPLE for backward compatibility
  • Issue #946 - HPX does not call MPI_Finalize
  • Issue #945 - Segfault with hpx::lcos::broadcast
  • Issue #944 - OS X: assertion pu_offset_ < hardware_concurrency failed
  • Issue #943 - #include <hpx/hpx_main.hpp> does not work
  • Issue #942 - Make the BG/Q work with -O3
  • Issue #940 - Use separator when concatenating locality name
  • Issue #939 - Refactor MPI parcelport to use MPI_Wait instead of multiple MPI_Test calls
  • Issue #938 - Want to officially access client_base::gid_
  • Issue #937 - client_base::gid_ should be private``
  • Issue #936 - Want doxygen-like source code index
  • Issue #935 - Build error with gcc 4.6 and Boost 1.54.0 on hpx trunk and 0.9.6
  • Issue #933 - Cannot build HPX with Boost 1.54.0
  • Issue #932 - Components are destructed too early
  • Issue #931 - Make HPX work on BG/Q
  • Issue #930 - make git-docs is broken
  • Issue #929 - Generating index in docs broken
  • Issue #928 - Optimize hpx::util::static_ for C++11 compilers supporting magic statics
  • Issue #924 - Make kill_process_tree (in process.py) more robust on Mac OSX
  • Issue #923 - Correct BLAS and RNPL cmake tests
  • Issue #922 - Cannot link against BLAS
  • Issue #921 - Implement hpx::mem_fn
  • Issue #920 - Output locality with --hpx:print-bind
  • Issue #919 - Correct grammar; simplify boolean expressions
  • Issue #918 - Link to hello_world.cpp is broken
  • Issue #917 - adapt cmake file to new boostbook version
  • Issue #916 - fix problem building documentation with xsltproc >= 1.1.27
  • Issue #915 - Add another TBBMalloc library search path
  • Issue #914 - Build problem with Intel compiler on Stampede (TACC)
  • Issue #913 - fix error messages in fibonacci examples
  • Issue #911 - Update OS X build instructions
  • Issue #910 - Want like to specify MPI_ROOT instead of compiler wrapper script
  • Issue #909 - Warning about void* arithmetic
  • Issue #908 - Buildbot for MIC is broken
  • Issue #906 - Can’t use --hpx:bind=balanced with multiple MPI processes
  • Issue #905 - --hpx:bind documentation should describe full grammar
  • Issue #904 - Add hpx::lcos::fold and hpx::lcos::inverse_fold collective operation
  • Issue #903 - Add hpx::when_any_swapped()
  • Issue #902 - Add hpx::lcos::reduce collective operation
  • Issue #901 - Web documentation is not searchable
  • Issue #900 - Web documentation for trunk has no index
  • Issue #898 - Some tests fail with GCC 4.8.1 and MPI parcel port
  • Issue #897 - HWLOC causes failures on Mac
  • Issue #896 - pu-offset leads to startup error
  • Issue #895 - hpx::get_locality_name not defined
  • Issue #894 - Race condition at shutdown
  • Issue #893 - --hpx:print-bind switches std::cout to hexadecimal mode
  • Issue #892 - hwloc_topology_load can be expensive – don’t call multiple times
  • Issue #891 - The documentation for get_locality_name is wrong
  • Issue #890 - --hpx:print-bind should not exit
  • Issue #889 - --hpx:debug-hpx-log=FILE does not work
  • Issue #888 - MPI parcelport does not exit cleanly for –hpx:print-bind
  • Issue #887 - Choose thread affinities more cleverly
  • Issue #886 - Logging documentation is confusing
  • Issue #885 - Two threads are slower than one
  • Issue #884 - is_callable failing with member pointers in C++11
  • Issue #883 - Need help with is_callable_test
  • Issue #882 - tests.regressions.lcos.future_hang_on_get does not terminate
  • Issue #881 - tests/regressions/block_matrix/matrix.hh won’t compile with GCC 4.8.1
  • Issue #880 - HPX does not work on OS X
  • Issue #878 - future::unwrap triggers assertion
  • Issue #877 - “make tests” has build errors on Ubuntu 12.10
  • Issue #876 - tcmalloc is used by default, even if it is not present
  • Issue #875 - global_fixture is defined in a header file
  • Issue #874 - Some tests take very long
  • Issue #873 - Add block-matrix code as regression test
  • Issue #872 - HPX documentation does not say how to run tests with detailed output
  • Issue #871 - All tests fail with “make test”
  • Issue #870 - Please explicitly disable serialization in classes that don’t support it
  • Issue #868 - boost_any test failing
  • Issue #867 - Reduce the number of copies of hpx::function arguments
  • Issue #863 - Futures should not require a default constructor
  • Issue #862 - value_or_error shall not default construct its result
  • Issue #861 - HPX_UNUSED macro
  • Issue #860 - Add functionality to copy construct a component
  • Issue #859 - hpx::endl should flush
  • Issue #858 - Create hpx::get_ptr<> allowing to access component implementation
  • Issue #855 - Implement hpx::INVOKE
  • Issue #854 - hpx/hpx.hpp does not include hpx/include/iostreams.hpp
  • Issue #853 - Feature request: null future
  • Issue #852 - Feature request: Locality names
  • Issue #851 - hpx::cout output does not appear on screen
  • Issue #849 - All tests fail on OS X after installing
  • Issue #848 - Update OS X build instructions
  • Issue #846 - Update hpx_external_example
  • Issue #845 - Issues with having both debug and release modules in the same directory
  • Issue #844 - Create configuration header
  • Issue #843 - Tests should use CTest
  • Issue #842 - Remove buffer_pool from MPI parcelport
  • Issue #841 - Add possibility to broadcast an index with hpx::lcos::broadcast
  • Issue #838 - Simplify util::tuple
  • Issue #837 - Adopt boost::tuple tests for util::tuple
  • Issue #836 - Adopt boost::function tests for util::function
  • Issue #835 - Tuple interface missing pieces
  • Issue #833 - Partially preprocessing files not working
  • Issue #832 - Native papi counters do not work with wild cards
  • Issue #831 - Arithmetics counter fails if only one parameter is given
  • Issue #830 - Convert hpx::util::function to use new scheme for serializing its base pointer
  • Issue #829 - Consistently use decay<T> instead of remove_const< remove_reference<T>>
  • Issue #828 - Update future implementation to N3721 and N3722
  • Issue #827 - Enable MPI parcelport for bootstrapping whenever application was started using mpirun
  • Issue #826 - Support command line option --hpx:print-bind even if --hpx::bind was not used
  • Issue #825 - Memory counters give segfault when attempting to use thread wild cards or numbers only total works
  • Issue #824 - Enable lambda functions to be used with hpx::async/hpx::apply
  • Issue #823 - Using a hashing filter
  • Issue #822 - Silence unused variable warning
  • Issue #821 - Detect if a function object is callable with given arguments
  • Issue #820 - Allow wildcards to be used for performance counter names
  • Issue #819 - Make the AGAS symbolic name registry distributed
  • Issue #818 - Add future::then() overload taking an executor
  • Issue #817 - Fixed typo
  • Issue #815 - Create an lco that is performing an efficient broadcast of actions
  • Issue #814 - Papi counters cannot specify thread#* to get the counts for all threads
  • Issue #813 - Scoped unlock
  • Issue #811 - simple_central_tuplespace_client run error
  • Issue #810 - ostream error when << any objects
  • Issue #809 - Optimize parcel serialization
  • Issue #808 - HPX applications throw exception when executed from the build directory
  • Issue #807 - Create performance counters exposing overall AGAS statistics
  • Issue #795 - Create timed make_ready_future
  • Issue #794 - Create heterogeneous when_all/when_any/etc.
  • Issue #721 - Make HPX usable for Xeon Phi
  • Issue #694 - CMake should complain if you attempt to build an example without its dependencies
  • Issue #692 - SLURM support broken
  • Issue #683 - python/hpx/process.py imports epoll on all platforms
  • Issue #619 - Automate the doc building process
  • Issue #600 - GTC performance broken
  • Issue #577 - Allow for zero copy serialization/networking
  • Issue #551 - Change executable names to have debug postfix in Debug builds
  • Issue #544 - Write a custom .lib file on Windows pulling in hpx_init and hpx.dll, phase out hpx_init
  • Issue #534 - hpx::init should take functions by std::function and should accept all forms of hpx_main
  • Issue #508 - FindPackage fails to set FOO_LIBRARY_DIR
  • Issue #506 - Add cmake support to generate ini files for external applications
  • Issue #470 - Changing build-type after configure does not update boost library names
  • Issue #453 - Document hpx_run_tests.py
  • Issue #445 - Significant performance mismatch between MPI and HPX in SMP for allgather example
  • Issue #443 - Make docs viewable from build directory
  • Issue #421 - Support multiple HPX instances per node in a batch environment like PBS or SLURM
  • Issue #316 - Add message size limitation
  • Issue #249 - Clean up locking code in big boot barrier
  • Issue #136 - Persistent CMake variables need to be marked as cache variables