CUB сортировка с итератором
Я хотел бы преобразовать значения и отсортировать их за один раз, например так:
thrust::vector<int> dataIn = ...
thrust::vector<int> dataOut = ...
auto iterIn = cub::TransformInputIterator<int, Ftor, int*>(dataIn.begin(), Ftor());
cub::DeviceRadixSort::SortKeys(dTemp, tempBytes, iterIn, dataOut.begin(), numElems);
Однако для SortKeys требуются необработанные указатели вместо итераторов. Можно ли все же заставить эту работу использовать итераторы? Я знаю, что это возможно с тягой, но я хочу использовать CUB.
Спасибо за предложения.
1 ответ
Решение
Извините, что разочаровал, но AFAIK CUB не поддерживает это. Это может, теоретически, с более глубокой шаблонизацией, но это не так.
Вы можете поднять код изнутри cub или изменить код с помощью дополнительного параметра шаблона. Это было бы головной болью, но это выполнимо, если все, что вы хотите сделать, это передать входные значения посредством некоторого преобразования с помощью функции на стороне устройства.