0

我想一次性转换值并对其进行排序,如下所示:

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。

感谢您的建议。

4

1 回答 1

2

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

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

于 2018-09-04T23:34:40.273 回答