我正在寻找push / cudapp中第k个最小元素算法的实现。我用Google搜索但似乎没找到它。有没有人知道是否存在这样的算法?
我看到有重新排序,但它并没有说第k个最小。
答案 0 :(得分:1)
Thrust目前不提供选择算法(即STL中的std::nth_element
)虽然它在我们的雷达上,并且good evidence可以在GPU上快速完成选择。您现在唯一的办法是使用thrust::sort
或thrust::sort_by_key
(或其stable_
变体)对数据进行排序,然后选择适当的元素。在Thrust中对原始类型(例如int
,float
,char
,double
)进行排序是使用非常快速的基数排序代码实现的,因此绝对性能仍然非常好,虽然效率不如specialized selection method。