用迭代器进行CUB排序

时间:2018-09-04 13:29:05

标签: cuda thrust 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 个答案:

答案 0 :(得分:2)

很抱歉令人失望,但AFAIK CUB不支持此功能。从理论上讲,它可以进行更深入的模板化,但事实并非如此。

您可以从cub中提取代码,或使用额外的模板参数修改代码。那将是一件令人头疼的事,但是如果您只想通过设备端函数对输入值进行某种转换就可以了。