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。

感谢您的建议。

很抱歉让你失望了,但 AFAIK CUB 不支持这个。从理论上讲,它可以使用更深层次的模板化,但事实并非如此。

您可以从 cub 中获取代码,或使用额外的模板参数修改代码。这将是一个令人头疼的问题,但如果你只想用设备端函数通过一些转换传递输入值,这是可行的。

最新更新