This repository has been archived by the owner on Mar 21, 2024. It is now read-only.
Thrust 1.9.0-5 (CUDA Toolkit 9.0)
Thrust 1.9.0 replaces the original CUDA backend (bulk) with a new one written using CUB, a high performance CUDA collectives library. This brings a substantial performance improvement to the CUDA backend across the board.
Breaking Changes
- Any code depending on CUDA backend implementation details will likely be broken.
New Features
- New CUDA backend based on CUB which delivers substantially higher performance.
thrust::transform_output_iterator
, a fancy iterator that applies a function to the output before storing the result.
New Examples
transform_output_iterator
demonstrates use of the new fancy iteratorthrust::transform_output_iterator
.
Other Enhancements
- When C++11 is enabled, functors do not have to inherit from
thrust::(unary|binary)_function
anymore to be used withthrust::transform_iterator
. - Added C++11 only move constructors and move assignment operators for
thrust::detail::vector_base
-based classes, e.g.thrust::host_vector
,thrust::device_vector
, and friends.
Bug Fixes
sin(thrust::complex<double>)
no longer has precision loss to float.
Acknowledgments
- Thanks to Manuel Schiller for contributing a C++11 based enhancement regarding the deduction of functor return types, improving the performance of
thrust::unique
and implementingthrust::transform_output_iterator
. - Thanks to Thibault Notargiacomo for the implementation of move semantics for the
thrust::vector_base
-based classes. - Thanks to Duane Merrill for developing CUB and helping to integrate it into Thrust's backend.