Skip to content
This repository was archived by the owner on Mar 21, 2024. It is now read-only.

Thrust 1.6.0

Compare
Choose a tag to compare
@brycelelbach brycelelbach released this 16 May 09:53
· 2896 commits to master since this release

Thrust 1.6.0 provides an interface for customization and extension and a new backend system based on the Threading Building Blocks library. With this new interface, programmers may customize the behavior of specific algorithms as well as control the allocation of temporary storage or invent entirely new backends. These enhancements also allow multiple different backend systems such as CUDA and OpenMP to coexist within a single program. Support for TBB allows Thrust programs to integrate more naturally into applications which may already employ the TBB task scheduler.

Breaking Changes

  • The header <thrust/experimental/cuda/pinned_allocator.h> has been moved to <thrust/system/cuda/experimental/pinned_allocator.h>
  • thrust::experimental::cuda::pinned_allocator has been moved to thrust::cuda::experimental::pinned_allocator
  • The macro THRUST_DEVICE_BACKEND has been renamed THRUST_DEVICE_SYSTEM
  • The macro THRUST_DEVICE_BACKEND_CUDA has been renamed THRUST_DEVICE_SYSTEM_CUDA
  • The macro THRUST_DEVICE_BACKEND_OMP has been renamed THRUST_DEVICE_SYSTEM_OMP
  • thrust::host_space_tag has been renamed thrust::host_system_tag
  • thrust::device_space_tag has been renamed thrust::device_system_tag
  • thrust::any_space_tag has been renamed thrust::any_system_tag
  • thrust::iterator_space has been renamed thrust::iterator_system

New Features

  • Backend Systems
    • Threading Building Blocks (TBB) is now supported
  • Algorithms
    • thrust::for_each_n
    • thrust::raw_reference_cast
  • Types
    • thrust::pointer
    • thrust::reference

New Examples

  • cuda/custom_temporary_allocation
  • cuda/fallback_allocator
  • device_ptr
  • expand
  • minimal_custom_backend
  • raw_reference_cast
  • set_operations

Other Enhancements

  • thrust::for_each now returns the end of the input range similar to most other algorithms
  • thrust::pair and thrust::tuple have swap functionality
  • All CUDA algorithms now support large data types
  • Iterators may be dereferenced in user device or global functions
  • The safe use of different backend systems is now possible within a single binary

Bug Fixes

  • #469 min_element and max_element algorithms no longer require a const comparison operator

Known Issues

  • NVCC may crash when parsing TBB headers on Windows.