在 CUDA 中对许多小数组进行排序

标签 sorting cuda cub

我正在 CUDA 中实现中值滤波器。对于特定像素,我提取与该像素周围的窗口相对应的邻居,例如 N x N (3 x 3) 窗口,现在有一个 数组code>N x N 元素。我不打算为我的应用程序使用超过 10 x 10 元素的窗口。

该数组现在本地存在于内核中,并且已加载到设备内存中。从我之前读过的 SO 帖子来看,最常见的排序算法是由 Thrust 实现的。但是,Thrust 只能从主机调用。主题 - Thrust inside user written kernels

是否有一种快速有效的方法来对内核内的一小部分 N x N 元素进行排序?

最佳答案

如果元素数量固定且较小,则可以使用排序网络 ( http://pages.ripco.net/~jgamble/nw.html )。它为固定数量的元素提供固定数量的比较/交换操作(例如,8 个元素的 19 次比较/交换迭代)。

关于在 CUDA 中对许多小数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339936/

相关文章:

在 CUDA 中按键对(小)数组进行排序

javascript - 获取层次结构的级别

sorting - 在 GoLang 中排序对

javascript - 使用数字和字符串对列进行排序

用于 double 定义错误的 CUDA atomicAdd

arrays - 在 awk 中对 block 内的行进行排序

CUDA:求和过程中计算所有部分和的方法

cuda - 如何捕获或处理 CUDA 内核启动错误

cuda - 在 nvidia nsight 中安装 CUB