私は、thrust/cudapp で k 番目に小さい要素アルゴリズムの実装を探しています。私はそれをグーグルで検索しましたが、見つからないようです。そのようなアルゴリズムが存在するかどうかを知っている人はいますか?
並べ替えがあることがわかりましたが、k番目に小さいとは言いません。
現在、Thrust は選択アルゴリズム (つまりstd::nth_element
、STL 内) を提供していませんが、それは私たちのレーダーにあり、選択が GPU で迅速に実行できるという十分な証拠があります。現時点での唯一の手段は、データをthrust::sort
or thrust::sort_by_key
(またはそのstable_
バリアント) で並べ替えてから、適切な要素を選択することです。Thrustでのプリミティブ型 (例: int
、float
、 ) のソートは、非常に高速な基数ソート コードで実装されているため、特殊な選択方法ほど効率的ではありませんが、絶対的なパフォーマンスは依然としてかなり良好です。char
double