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
, andhpx::function
for better performance and better compliance with the C++11 Standard. Addedhpx::mem_fn
. - Reworked
hpx::when_all
andhpx::when_any
for better compliance with the ongoing C++ standardization effort, added heterogeneous version for those functions. Addedhpx::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
, andhpx::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 withHPX_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 multipleMPI_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 includehpx/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 ofremove_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 bystd::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