DeviceFind |
LowerBoundSortedValues, UpperBoundSortedValues |
DeviceFor |
Bulk, ForEach, ForEachN, ForEachCopy, ForEachCopyN, ForEachInExtents, ForEachInLayout |
DeviceHistogram |
MultiHistogramRange (deprecated raw-array overload only) |
DeviceMemcpy |
Batched |
DeviceMerge |
MergeKeys, MergePairs |
DeviceMergeSort |
SortKeys, SortKeysCopy, SortPairs, SortPairsCopy, StableSortKeys, StableSortKeysCopy, StableSortPairs, SortKeysNoNVTX, SortKeysCopyNoNVTX, SortPairsNoNVTX |
DeviceRadixSort |
SortKeys, SortKeysDescending, SortPairs, SortPairsDescending |
DeviceReduce |
Reduce, Sum, Min, Max, ArgMin, ArgMax, ReduceByKey, TransformReduce |
DeviceRunLengthEncode |
Encode, NonTrivialRuns |
DeviceScan |
ExclusiveScan, ExclusiveScanByKey, ExclusiveSum, ExclusiveSumByKey, InclusiveScan, InclusiveScanByKey, InclusiveScanInit, InclusiveSum, InclusiveSumByKey |
DeviceSegmentedRadixSort |
SortKeys, SortKeysDescending, SortPairs, SortPairsDescending |
DeviceSegmentedReduce |
Reduce, Sum, Min, Max, ArgMin, ArgMax |
DeviceSegmentedScan |
ExclusiveSegmentedScan, ExclusiveSegmentedSum, InclusiveSegmentedScan, InclusiveSegmentedScanInit, InclusiveSegmentedSum |
DeviceSegmentedSort |
SortKeys, SortKeysDescending, SortPairs, SortPairsDescending, StableSortKeys, StableSortKeysDescending, StableSortPairs, StableSortPairsDescending |
We decided a while back on Slack that in order to solve the problem of querying the temporary storage size of CUB APIs that take an environment and have no equivalent non-env overload, we should just replace all
cudaStream_tparameters in public device-scope APIs by aconst Env¶meter and add the additional environment handling (excluding temporary storage allocation). This would result in every CUB API to have two flavors:This change is transparent to users, since a passed
cudaStream_t(or a type convertible to that) will be handled appropriately by the stream query of the environment.This work has already begun, but was mostly driven by needs in PSTL to query the temporary storage to combine that storage with further allocations (like an output parameter). See also #9328 and the following PRs:
DeviceReduce::Arg{Min, Max}to always take an environment #9403DeviceCopyto always take an environment #9416DeviceAdjacentDifference::SubtractLeftto always take an environment #9418DeviceAdjacentDifference::SubtractRightto always take an environment #9419DeviceSelect::Flaggedto always take an environment #9455cub::DeviceSelect::Ifto always take an environment #9456DeviceSelect::FlaggedIfto always take an environment #9457DeviceSelect::Uniqueto always take an environment #9458DeviceHistogram::MultiHistogramEvento always take an environment #9552DeviceHistogram::HistogramEvento always take an environment #9553DeviceHistogram::MultiHistogramRangeto always take an environment #9554DeviceHistogram::HistogramRangeto always take an environment #9555device_adjacent_difference::dispatchto take a tuning #9454dispatch_streaming_arg_reduceto take a tuning environment #9660DeviceFindIf#9318DeviceSelect::UniqueByKeyto always take an environment #9459DevicePartition::Flaggedto always take an environment #9463DevicePartition::Ifto always take an environment #9464DeviceSelect::Uniqueto always take an environment #9386DeviceSelect::UniqueByKeyto always take an environment #9387DeviceSelect::Flaggedto always take an environment #9388DeviceSelect::FlaggedIfto always take an environment #9389DeviceSelect::Ifto always take an environment #9391DevicePartition::Ifto always take an environment #9393DevicePartition::Flaggedto always take an environment #9396DevicePartition::Flaggedto always take an environment #9462However, we should complete this work. Here are the currently missing overloads that still have a
cudaStream_tparameter:cudaStream_tDeviceFindLowerBoundSortedValues,UpperBoundSortedValuesDeviceForBulk,ForEach,ForEachN,ForEachCopy,ForEachCopyN,ForEachInExtents,ForEachInLayoutDeviceHistogramMultiHistogramRange(deprecated raw-array overload only)DeviceMemcpyBatchedDeviceMergeMergeKeys,MergePairsDeviceMergeSortSortKeys,SortKeysCopy,SortPairs,SortPairsCopy,StableSortKeys,StableSortKeysCopy,StableSortPairs,SortKeysNoNVTX,SortKeysCopyNoNVTX,SortPairsNoNVTXDeviceRadixSortSortKeys,SortKeysDescending,SortPairs,SortPairsDescendingDeviceReduceReduce,Sum,Min,Max,ArgMin,ArgMax,ReduceByKey,TransformReduceDeviceRunLengthEncodeEncode,NonTrivialRunsDeviceScanExclusiveScan,ExclusiveScanByKey,ExclusiveSum,ExclusiveSumByKey,InclusiveScan,InclusiveScanByKey,InclusiveScanInit,InclusiveSum,InclusiveSumByKeyDeviceSegmentedRadixSortSortKeys,SortKeysDescending,SortPairs,SortPairsDescendingDeviceSegmentedReduceReduce,Sum,Min,Max,ArgMin,ArgMaxDeviceSegmentedScanExclusiveSegmentedScan,ExclusiveSegmentedSum,InclusiveSegmentedScan,InclusiveSegmentedScanInit,InclusiveSegmentedSumDeviceSegmentedSortSortKeys,SortKeysDescending,SortPairs,SortPairsDescending,StableSortKeys,StableSortKeysDescending,StableSortPairs,StableSortPairsDescending