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 one 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