This repository was 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_iteratordemonstrates 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)_functionanymore 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::uniqueand 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.