数组的百分位数(在 CUDA 中)没有排序?

Percentile of array (in CUDA ) without sort?

我有一个 2560x2048 的浮点值数组,我需要 25% 和 75% 的百分位值。 (5,242,880) 作为一维向量。我的第一个想法是使用双调排序并获取 25% 和 75% 的值。但是我拥有的 Bitonic 排序是针对 2 个数组的幂,我不想使用带有假人的更大数组。

这让我想到,也许有人有办法在没有完整排序开销的情况下获得百分位数?

我知道您问的是非排序方法,但 Thrust 确实提供了排序功能。我没试过,但如果它像 cuFFT,我希望它能得到高度优化。

您也可以使用 CUB which apparently is faster than Thrust, according to this link 排序。

另一种选择是从直方图中查找百分位数,尽管这可能不是您想要的浮点值,除非您有将预期值划分为一系列 bin 的好方法。

申泰成是对的。直方图的百分位数是执行此操作的最佳方法。