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 functionalityAdded
hpx::get_ptr
allowing to directly access the memory underlying a given componentAdded the
hpx::lcos::broadcast
,hpx::lcos::reduce
, andhpx::lcos::fold
collective operationsAdded
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 wrongIssue #966 -
--hpx:print-bind
physical core numbers are wrongIssue #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 informationIssue #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 nodesIssue #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 throwIssue #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
failedIssue #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
callsIssue #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 staticsIssue #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 processesIssue #905 -
--hpx:bind
documentation should describe full grammarIssue #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 operationIssue #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 definedIssue #894 - Race condition at shutdown
Issue #893 -
--hpx:print-bind
switches std::cout to hexadecimal modeIssue #892 -
hwloc_topology_load
can be expensive – don’t call multiple timesIssue #891 - The documentation for
get_locality_name
is wrongIssue #890 -
--hpx:print-bind
should not exitIssue #889 -
--hpx:debug-hpx-log=FILE
does not workIssue #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 assertionIssue #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
argumentsIssue #863 - Futures should not require a default constructor
Issue #862 - value_or_error shall not default construct its result
Issue #861 -
HPX_UNUSED
macroIssue #860 - Add functionality to copy construct a component
Issue #859 -
hpx::endl
should flushIssue #858 - Create
hpx::get_ptr<>
allowing to access component implementationIssue #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 screenIssue #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 usedIssue #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_mainIssue #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