|
1 | | -# Thrust 1.11.0 |
| 1 | +# Thrust 1.12.0 (NVIDIA HPC SDK 21.3, CUDA Toolkit 11.4) |
| 2 | + |
| 3 | +## Summary |
| 4 | + |
| 5 | +Thrust 1.12.0 is the major release accompanying the NVIDIA HPC SDK 21.3 |
| 6 | +and the CUDA Toolkit 11.4. |
| 7 | + |
| 8 | +It includes a new `thrust::universal_vector`, which holds data that is |
| 9 | +accessible from both host and device. This allows users to easily leverage |
| 10 | +CUDA's unified memory with Thrust. |
| 11 | +New asynchronous `thrust::async:exclusive_scan` and `inclusive_scan` algorithms |
| 12 | +have been added, and the synchronous versions of these have been updated to |
| 13 | +use `cub::DeviceScan` directly. |
| 14 | +CUB radix sort for floating point types is now stable when both +0.0 and -0.0 |
| 15 | +are present in the input. This affects some usages of `thrust::sort` and |
| 16 | +`thrust::stable_sort`. |
| 17 | +Many compilation warnings and subtle overflow bugs were fixed in the device |
| 18 | +algorithms, including a long-standing bug that returned invalid temporary |
| 19 | +storage requirements when `num_items` was close to (but not |
| 20 | +exceeding) `INT32_MAX`. |
| 21 | + |
| 22 | +This release deprecates support for Clang < 7.0 and MSVC < 2019 (aka |
| 23 | +19.20/16.0/14.20). |
| 24 | + |
| 25 | +## Breaking Changes |
| 26 | + |
| 27 | +- NVIDIA/thrust#1372: Deprecate Clang < 7 and MSVC < 2019. |
| 28 | +- NVIDIA/thrust#1376: Standardize `thrust::scan_by_key` functors / accumulator |
| 29 | + types. This may change the results from `scan_by_key` when input, output, and |
| 30 | + initial value types are not the same type. |
| 31 | + |
| 32 | +## New Features |
| 33 | + |
| 34 | +- NVIDIA/thrust#1251: Add two new `thrust::async::` algorithms: `inclusive_scan` |
| 35 | + and `exclusive_scan`. |
| 36 | +- NVIDIA/thrust#1334: Add `thrust::universal_vector`, `universal_ptr`, |
| 37 | + and `universal_allocator`. |
| 38 | + |
| 39 | +## Bug Fixes |
| 40 | + |
| 41 | +- NVIDIA/thrust#1347: Qualify calls to `make_reverse_iterator`. |
| 42 | +- NVIDIA/thrust#1359: Enable stricter warning flags. This fixes several |
| 43 | + outstanding issues: |
| 44 | + - NVIDIA/cub#221: Overflow in `temp_storage_bytes` when `num_items` close to |
| 45 | + (but not over) `INT32_MAX`. |
| 46 | + - NVIDIA/cub#228: CUB uses non-standard C++ extensions that break strict |
| 47 | + compilers. |
| 48 | + - NVIDIA/cub#257: Warning when compiling `GridEvenShare` with unsigned |
| 49 | + offsets. |
| 50 | + - NVIDIA/thrust#974: Conversion warnings in `thrust::transform_reduce`. |
| 51 | + - NVIDIA/thrust#1091: Conversion warnings in `thrust::counting_iterator`. |
| 52 | +- NVIDIA/thrust#1373: Fix compilation error when a standard library type is |
| 53 | + wrapped in `thrust::optional`. Thanks to Vukasin Milovanovic for this |
| 54 | + contribution. |
| 55 | +- NVIDIA/thrust#1388: Fix `signbit(double)` implementation on MSVC. |
| 56 | +- NVIDIA/thrust#1389: Support building Thrust tests without CUDA enabled. |
| 57 | + |
| 58 | +## Other Enhancements |
| 59 | + |
| 60 | +- NVIDIA/thrust#1304: Use `cub::DeviceScan` to implement |
| 61 | + `thrust::exclusive_scan` and `thrust::inclusive_scan`. |
| 62 | +- NVIDIA/thrust#1362, NVIDIA/thrust#1370: Update smoke test naming. |
| 63 | +- NVIDIA/thrust#1380: Fix typos in `set_operation` documentation. Thanks to |
| 64 | + Hongyu Cai for this contribution. |
| 65 | +- NVIDIA/thrust#1383: Include FreeBSD license in LICENSE.md for |
| 66 | + `thrust::complex` implementation. |
| 67 | +- NVIDIA/thrust#1384: Add missing precondition to `thrust::gather` |
| 68 | + documentation. |
| 69 | + |
| 70 | +# Thrust 1.11.0 (CUDA Toolkit 11.3) |
2 | 71 |
|
3 | 72 | ## Summary |
4 | 73 |
|
|
0 commit comments