我想一次转换值并对其进行排序,如下所示:
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。
感谢您的建议。
答案 0 :(得分:2)
很抱歉令人失望,但AFAIK CUB不支持此功能。从理论上讲,它可以进行更深入的模板化,但事实并非如此。
您可以从cub中提取代码,或使用额外的模板参数修改代码。那将是一件令人头疼的事,但是如果您只想通过设备端函数对输入值进行某种转换就可以了。