This repository was archived by the owner on Mar 21, 2024. It is now read-only.
Thrust 2.0.0 #1767
alliepiper
announced in
Announcements
Thrust 2.0.0
#1767
Replies: 1 comment
-
Thank you! This library is a joy to use. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
The Thrust 2.0.0 major release adds a dependency on libcu++ and contains several breaking changes. These include new diagnostics when inspecting device-only lambdas from the host, removal of the
cub
symlink in the Thrust repository root, and removal of the deprecatedTHRUST_*_BACKEND
macros. It also includes several minor bugfixes and cleanups.Breaking Changes
NV_IF_TARGET
ports. #1605: Add libcu++ dependency.${THRUST_ROOT}/dependencies/libcudacxx/
submodule.-I ${THRUST_ROOT}/dependencies/libcudacxx/include/
).NV_IF_TARGET
ports. #1605: The following macros are no longer defined by default. They can be re-enabled by definingTHRUST_PROVIDE_LEGACY_ARCH_MACROS
. These will be removed completely in a future release.THRUST_IS_HOST_CODE
: Replace withNV_IF_TARGET
.THRUST_IS_DEVICE_CODE
: Replace withNV_IF_TARGET
.THRUST_INCLUDE_HOST_CODE
: Replace withNV_IF_TARGET
.THRUST_INCLUDE_DEVICE_CODE
: Replace withNV_IF_TARGET
.THRUST_DEVICE_CODE
: Replace withNV_IF_TARGET
.NV_IF_TARGET
. They are now defined consistently across all host/device compilation passes. This should not affect most usages of these macros, but may require changes for some edge cases.THRUST_RUNTIME_FUNCTION
: Execution space annotations for functions that invoke CUDA Runtime APIs.__host__ __device__
__host__ __device__
__host__
__host__ __device__
__host__
__THRUST_HAS_CUDART__
: No change in behavior, but no longer used in Thrust. Provided for legacy support only. Legacy behavior:THRUST_RDC_ENABLED
: New macro, may be combined withNV_IF_TARGET
to replace most usages of__THRUST_HAS_CUDART__
. Behavior:cub
symlink. #1701: Remove thecub
symlink from the root of the Thrust repository.-I ${THRUST_ROOT}/dependencies/cub
).add_subdirectory
, orfind_package
are not affected.__device__
-only lambda’s return type is queried from host code (requires libcu++ ≥ 1.9.0).__device__
-only implementation ofoperator()
.__host__ __device__
lambda.cuda::proclaim_return_type
(Added in libcu++ 1.9.0)THRUST_DEVICE_BACKEND
andTHRUST_HOST_BACKEND
macros. TheTHRUST_DEVICE_SYSTEM
andTHRUST_HOST_SYSTEM
macros should be used instead.Bug Fixes
NV_IF_TARGET
ports. #1605: Fix some execution space warnings in the allocator library.eval_if
branch in iterator_category_to_traversal.h metafunctions #1683: Fix bug initerator_category_to_traversal
metafunctions.__thrust_exec_check_disable__
annotation tothrust::make_zip_function
. Thanks to @mfbalin for this contribution.copy_if
for output iterators that don’t support copy assignment. Thanks for @mfbalin for this contribution.Other Enhancements
NV_IF_TARGET
ports. #1605: Removed special case code for unsupported CUDA architectures.NV_IF_TARGET
ports. #1605: Replace several usages of__CUDA_ARCH__
with<nv/target>
to handle host/device code divergence.This discussion was created from the release Thrust 2.0.0.
Beta Was this translation helpful? Give feedback.
All reactions