Skip to content

Releases: pika-org/pika

pika 0.15.1

12 May 08:45
0.15.1
27b328c
Compare
Choose a tag to compare

Bugfixes

  • Eagerly reset shared state in async_rw_mutex. This prevents deadlocks in certain use cases of async_rw_mutex. (#677)
  • Use pika::spinlock instead of pika::mutex in async_rw_mutex. This allows use of async_rw_mutex from non-pika threads. (#679)

pika 0.15.0

03 May 10:24
0.15.0
1c1664c
Compare
Choose a tag to compare

New features

  • async_rw_mutex has been moved to a public header: pika/async_rw_mutex.hpp. The functionality is still experimental in the pika::execution::experimental namespace. async_rw_mutex_access_type and async_rw_mutex_access_wrapper have also been moved out of the detail namespace. (#655)

Breaking changes

  • The any_sender and unique_any_sender operator bool(), which can be used to check whether the sender contains a valid sender, is now explicit to avoid accidental conversions. (#653)
  • Scheduler idling was disabled by default. This typically improves performance. If performance is less important than resource usage idling may be beneficial to enable explicitly. (#661)
  • The CMake option PIKA_WITH_THREAD_CUMULATIVE_COUNTS was disabled by default. This often improves performance. (#662)
  • Thread guard pages were disabled by default. This often improves performance. They can still be enabled at runtime with the configuration option pika.stacks.use_guard_pages=1 to debug e.g. stack overflows. (#663)
  • The fast_idle and delay_exit scheduler modes were completely removed as they added overhead and were not used in any meaningful way in the scheduler. (#664)
  • The ability to run background threads in the scheduler was completely removed. (#665, #668)

Bugfixes

  • Fixed an inconsistent preprocessor guard that affected Apple M1 and M2 systems. (#657)
  • Fixed preprocessor guards to enable deadlock detection in debug builds. The deadlock detection was never enabled previously. (#658)
  • Thread deadlock detection will now correctly print potentially deadlocked threads. (#659)

pika 0.14.0

05 Apr 07:50
0.14.0
d901ac9
Compare
Choose a tag to compare

New features

  • pika can now be compiled with NVHPC. The support is experimental. (#606)
  • CUDA polling was improved. Among other changes polling continuations are no longer called under a lock. (#609)
  • Improved the error message when pika is configured with multiple thread pools but there are not enough resources for all thread pools. (#619)

Breaking changes

  • Cleaned up modules and moved internal functionality into detail namespaces. (#625, #631, #632, #633, #634)
  • Renamed the CMake option PIKA_WITH_P2300_REFERENCE_IMPLEMENTATION to PIKA_WITH_STDEXEC to better reflect what it does. (#641)

Bugfixes

pika 0.13.0

08 Mar 10:55
22478e2
Compare
Choose a tag to compare

New features

  • Add better compile-time error messages to diagnose one-shot senders being used as multi-shot senders. (#586)

Breaking changes

  • Remove the PIKA_WITH_BACKGROUND_THREAD_COUNTERS CMake option. These counters are no longer available. (#588)
  • Update required stdexec commit. pika is now tested with 6510f5bd69cc03b24668f26eda3dd3cca7e81bb2 (#597)
  • Cleaned up modules and moved minor functionality into detail namespaces. (#594, #595, #596, #599, #607)

Bugfixes

  • Initialize HIP early to avoid concurrent initialization. (#591)

pika 0.12.0

01 Feb 19:11
0.12.0
fe1326a
Compare
Choose a tag to compare

New features

  • Make read-only access senders of async_rw_mutex connectable with l-value references. (#548)
  • Add split_tuple sender adaptor which allows transforming a sender of tuples into a tuple of senders. (#549)
  • Add bool conversion operator and empty member function to unique_any_sender and any_sender. (#551)

Breaking changes

  • Remove the conversion operators from wrapper types in async_rw_mutex. Wrappers must explicitly be unwrapped using get. (#548)
  • Require whip 0.1.0. (#565)

Bugfixes

  • Make the ensure_started sender noncopyable. (#539)
  • Fix compilation failure on macOS with C++20 enabled. (#541)
  • Fix deadlocks in certain use cases of async_rw_mutex. (#548)
  • Fix certain use cases of any_sender and when_all. (#555)

pika 0.11.0

07 Dec 08:57
0.11.0
c4ca06f
Compare
Choose a tag to compare

New features

Breaking changes

  • All parallel algorithms have been moved to a new repository that depends on pika: https://github.com/pika-org/pika-algorithms. (#505)
  • fmt is now a required dependency. (#487)
  • The default allocator has been changed from tcmalloc to mimalloc. (#501)
  • Cleaned up various modules and moved minor functionality into detail namespaces. (#483, #508, #509)

Bugfixes

pika 0.10.0

02 Nov 08:50
a437953
Compare
Choose a tag to compare

New features

Breaking changes

  • More functionality in the algorithms module has been moved into detail namespaces. (#475)

Bugfixes

  • Many sender adaptors have been updated to correctly handle reference types. (#472, #484, #492, )
  • then_with_stream now correctly stores the values sent by the predecessor sender for the duration of the CUDA operation launched by it. (#485)

pika 0.9.0

05 Oct 08:07
Compare
Choose a tag to compare

New features

  • Signal handlers are now optional, they can be set with --pika:install_signal_handlers=1. They are enabled by default when --pika:attach-debugger=exception is set. (#458)

Breaking changes

  • The P2300 reference implementation is now found through a find_package instead of a fetch_content in CMake and is required when PIKA_WITH_P2300_REFERENCE_IMPLEMENTATION in ON. (#436)
  • whip is now a dependency to replace the GPU abstraction layer we previously used. (#423)
  • Use rocBLAS directly instead of hipBLAS. (#391)
  • Move more internal functionality into the detail namespace. (#445, #446, #449, #461, #462)

Bugfixes

  • Add set_stopped_t() to (unique_)any_sender completion signatures. (#464)
  • Fix compilation on Arm64 with PIKA_WITH_GENERIC_CONTEXT_COROUTINES=OFF. (#439)
  • Add a missing default entry for pika.diagnostics_on_terminate. (#458)

pika 0.8.0

07 Sep 08:43
6d252fd
Compare
Choose a tag to compare

New features

  • The PIKA_WITH_P2300_REFERENCE_IMPLEMENTATION option can now be enabled together with PIKA_WITH_CUDA (with clang as the device compiler) and PIKA_WITH_HIP. (#330)
  • CMake options related to tests and examples now use cmake_dependent_option where appropriate. This means that options like PIKA_WITH_TESTS_UNIT will correctly be enabled when reconfiguring with PIKA_WITH_TESTS=ON even if pika was initially configured with PIKA_WITH_TESTS=OFF. (#356)
  • pika::finalize no longer has to be called on a pika thread. (#366)

Breaking changes

  • Removed operator| overloads for sync_wait and start_detached to align the implementation with P2300. (#346)
  • Removed parallel_executor_aggregated. (#372)
  • Moved more internal functionality into the detail namespace. (#374, #377, #379, #386, #400, #411, #420, #428, #429)
  • Allow compiling only device code with hipcc when PIKA_WITH_HIP is enabled instead of requiring hipcc to be used for host code as well. The PIKA_WITH_HIP option now has to be enabled explicitly like CUDA support instead of being automatically detected with hipcc set as the C++ compiler. (#402)

Bugfixes

  • Fixed handling of reference types in ensure_started and let_error. (#338)
  • Fixed compilation for powerpc. (#341)
  • Correctly set the stream in cusolver_handle::set_stream. (#344)
  • Fix the --pika:ignore-process-mask command line option. It was previously being ignored. (#355)
  • Fix a visibility issue in the program_options implementation. (#359)
  • Change detection of builtins to be more robust against mixing compilers. (#390)
  • Fixed compilation for arm64. (#393)
  • Only check for CMAKE_CUDA_STANDARD and PIKA_WITH_CXX_STANDARD when building pika itself. This could previously lead to false positive configuration errors. (#396)
  • Fix compilation on macOS with PIKA_WITH_MPI enabled. (#405)

pika 0.7.0

03 Aug 14:44
Compare
Choose a tag to compare

New features

  • The CUDA polling now uses both normal and high priority queues based on the flags passed to the cuda_stream. (#286)
  • Eagerly check completion of the MPI requests and add throttling of MPI traffic to help prevent excessive message queues. (#277)
  • Eagerly check completion of CUDA kernels. (#306)

Breaking changes

  • Remove static and thread local storage emulation. (#321)
  • Moved internal functionality into the detail namespace. (#209, #276, #324)
  • Remove specialization for Intel KNL. (#309)

Bugfixes

  • Fix a compilation error with posix coroutines implementation. (#314)
  • Fix handling of reference values and errors types sent by predecessors to when_all, split and sync_wait. (#285, #307, #320)