This repository has been 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
-
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