Full documentation for rocThrust is available at https://rocthrust.readthedocs.io/en/latest/
- Updated to match upstream Thrust 2.0.1
- NV_IF_TARGET macro from libcu++ for NVIDIA backend and HIP implementation for HIP backend.
- Removed cub symlink from the root of the repository.
- Removed support for deprecated macros (THRUST_DEVICE_BACKEND and THRUST_HOST_BACKEND).
- The cmake build system now additionally accepts
GPU_TARGETS
in addition toAMDGPU_TARGETS
for setting the targeted gpu architectures.GPU_TARGETS=all
will compile for all supported architectures.AMDGPU_TARGETS
is only provided for backwards compatibility,GPU_TARGETS
should be preferred.
- For NVIDIA backend,
NV_IF_TARGET
andTHRUST_RDC_ENABLED
intend to substitute theTHRUST_HAS_CUDART
macro, which is now no longer used in Thrust (provided for legacy support only). However, there is noTHRUST_RDC_ENABLED
macro available for the HIP backend, so some branches in Thrust's code may be unreachable in the HIP backend.
lower_bound
,upper_bound
, andbinary_search
failed to compile for certain types.- Fixed issue where
transform_iterator
would not compile with__device__
-only operators.
- Updated
docs
directory structure to match the standard of rocm-docs-core. - Removed references to and workarounds for deprecated hcc
- Updated to match upstream Thrust 1.17.2
partition_copy
now uses the newrocprim::partition_two_way
for increased performance.
- set_difference and set_intersection no longer hang if the number of items is above
UINT_MAX
. Previously, the unit tests for set_difference and set_intersection failed theTestSetDifferenceWithBigIndexes
.
- Updated to match upstream Thrust 1.16.0
- rocThrust functionality dependent on device malloc works is functional as ROCm 5.2 reneabled device malloc. Device launched
thrust::sort
andthrust::sort_by_key
are available for use.
- Packages for tests and benchmark executable on all supported OSes using CPack.
- async_copy, partition, and stable_sort_by_key unit tests are failing on HIP on Windows.
- Updated to match upstream Thrust 1.15.0
- async_copy, partition, and stable_sort_by_key unit tests are failing on HIP on Windows.
- Updated to match upstream Thrust 1.13.0
- Updated to match upstream Thrust 1.14.0
- Added async scan
- Scan algorithms:
inclusive_scan
now uses the input-type as accumulator-type,exclusive_scan
uses initial-value-type.- This particularly changes behaviour of small-size input types with large-size output types (e.g.
short
input,int
output). - And low-res input with high-res output (e.g.
float
input,double
output)
- This particularly changes behaviour of small-size input types with large-size output types (e.g.
- Initial HIP on Windows support. See README for instructions on how to build and install.
- Packaging changed to a development package (called rocthrust-dev for
.deb
packages, and rocthrust-devel for.rpm
packages). As rocThrust is a header-only library, there is no runtime package. To aid in the transition, the development package sets the "provides" field to provide the package rocthrust, so that existing packages depending on rocthrust can continue to work. This provides feature is introduced as a deprecated feature and will be removed in a future ROCm release.
- async_copy, partition, and stable_sort_by_key unit tests are failing on HIP on Windows.
- Mixed type exclusive scan algorithm still not using the initial value type for results type.
- gfx1030 support
- Address Sanitizer build option
- async_transform unit test failure fixed.
- Updated to match upstream Thrust 1.11
- gfx90a support added
- gfx803 support re-enabled
- Updated to match upstream Thrust 1.10
- Minimum cmake version required for building rocThrust is now 3.10.2
- Size zero inputs are now properly handled with newer ROCm builds that no longer allow zero-size kernel grid/block dimensions
- Warning of unused results fixed.
- No new features
- Updated to upstream Thrust 1.10.0
- Implemented runtime error for unsupported algorithms and disabled respective tests.
- Updated CMake to use downloaded rocPRIM.
- Added copy_if on device test case
- ROCm support for device malloc has been disabled. As a result, rocThrust functionality dependent on device malloc does not work. Please avoid using device launched thrust::sort and thrust::sort_by_key. Host launched functionality is not impacted. A partial enablement of device malloc is possible by setting HIP_ENABLE_DEVICE_MALLOC to 1. Thrust::sort and thrust::sort_by_key may work on certain input sizes but is not recommended for production code.
- Updated to upstream Thrust 1.9.8
- New test cases for device-side algorithms
- Bugfix for binary search
- Implemented workarounds for hipStreamDefault hang
- ROCm support for device malloc has been disabled. As a result, rocThrust functionality dependent on device malloc does not work. Please avoid using device launched thrust::sort and thrust::sort_by_key. Host launched functionality is not impacted. A partial enablement of device malloc is possible by setting HIP_ENABLE_DEVICE_MALLOC to 1. Thrust::sort and thrust::sort_by_key may work on certain input sizes but is not recommended for production code.
- No new features
- ROCm support for device malloc has been disabled. As a result, rocThrust functionality dependent on device malloc does not work. Please avoid using device launched thrust::sort and thrust::sort_by_key. Host launched functionality is not impacted. A partial enablement of device malloc is possible by setting HIP_ENABLE_DEVICE_MALLOC to 1. Thrust::sort and thrust::sort_by_key may work on certain input sizes but is not recommended for production code.
- Updated to upstream Thrust 1.9.4
- Package dependecy change to rocprim only
- ROCm support for device malloc has been disabled. As a result, rocThrust functionality dependent on device malloc does not work. Please avoid using device launched thrust::sort and thrust::sort_by_key. Host launched functionality is not impacted. A partial enablement of device malloc is possible by setting HIP_ENABLE_DEVICE_MALLOC to 1. Thrust::sort and thrust::sort_by_key may work on certain input sizes but is not recommended for production code.
- No new features
- ROCm support for device malloc has been disabled. As a result, rocThrust functionality dependent on device malloc does not work. Please avoid using device launched thrust::sort and thrust::sort_by_key. Host launched functionality is not impacted. A partial enablement of device malloc is possible by setting HIP_ENABLE_DEVICE_MALLOC to 1. Thrust::sort and thrust::sort_by_key may work on certain input sizes but is not recommended for production code.
- Improved tests with fixed and random seeds for test data
- CMake searches for rocThrust locally first; downloads from github if local search fails
- HCC build deprecated