You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
As described in #1137, CDPv2 removed the ability to do device-side synchronization. As a result, Thrust algorithms invoked in device code with the thrust::device execution policy implicitly fall back to using thrust::seq.
However, Thrust preserved the ability to still use CDPv1 on architectures/CTKs where it is still supported. This has proven to be costly to preserve and deemed no longer worth the effort.
In other words, this kernel has different behavior depending on how it is compiled:
Is this a duplicate?
Area
Thrust
Is your feature request related to a problem? Please describe.
As described in #1137, CDPv2 removed the ability to do device-side synchronization. As a result, Thrust algorithms invoked in device code with the
thrust::device
execution policy implicitly fall back to usingthrust::seq
.However, Thrust preserved the ability to still use CDPv1 on architectures/CTKs where it is still supported. This has proven to be costly to preserve and deemed no longer worth the effort.
In other words, this kernel has different behavior depending on how it is compiled:
Launches a kernel (CDPv1)
-rdc=true -arch=sm_N
forN < 90
and CTK < 12.0Falls back to
thrust::seq
-arch=sm_N
forN >= 90
or CTK >= 12.0Describe the solution you'd like
Invoking
thrust::algorithm(thrust::device,...)
in device code should always be equivalent tothrust::allgorithm(thrust::seq,...)
(case 2 above).Describe alternatives you've considered
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: