Sorting 如何在GPU CUDA上快速排序少量(大约100~200)的(~16位)数字?

Sorting 如何在GPU CUDA上快速排序少量(大约100~200)的(~16位)数字?,sorting,cuda,gpgpu,gpu,radix-sort,Sorting,Cuda,Gpgpu,Gpu,Radix Sort,你好是我项目的一部分。关键是我必须对一个数字数组进行排序(比如100~200个16位数字,数字和位是固定的)。我想使用GPU的共享内存在一个块内对其进行排序,作为要求数据不能在中间离开芯片的一部分 我读过一些基于GPU的基数排序、双音排序算法。但看起来它们是为大量的数字而设计的。我想很快地对100~200个数字进行排序 我很感激任何想法/帮助都有在单个块中执行排序操作的例程,包括。CUB还有一些例程,如果需要,可以在设备级别运行,以利用所有计算资源解决更大的问题 对于要排序的100多个数字,您不

你好是我项目的一部分。关键是我必须对一个数字数组进行排序(比如100~200个16位数字,数字和位是固定的)。我想使用GPU的共享内存在一个块内对其进行排序,作为要求数据不能在中间离开芯片的一部分

我读过一些基于GPU的基数排序、双音排序算法。但看起来它们是为大量的数字而设计的。我想很快地对100~200个数字进行排序

我很感激任何想法/帮助

都有在单个块中执行排序操作的例程,包括。CUB还有一些例程,如果需要,可以在设备级别运行,以利用所有计算资源解决更大的问题

对于要排序的100多个数字,您不太可能编写运行速度更快的代码

如果您有一个非常小的组(比如<32)的数字要在块级别进行排序,那么您可能只需要编写自己的代码。在这种情况下,这些指令可能会很有用。

在单个块内执行排序操作的例程包括。CUB还有一些例程,如果需要,可以在设备级别运行,以利用所有计算资源解决更大的问题

对于要排序的100多个数字,您不太可能编写运行速度更快的代码


如果您有一个非常小的组(比如<32)的数字要在块级别进行排序,那么您可能只需要编写自己的代码。在这种情况下,这些指令可能很有用。

它们是否在cub中使用了3.0洗牌指令功能?是的。cub是一个开源的头库,所以您可以自己检查它。其中的shfl指令主要出现在内联汇编区域中;块加载(temp_storage.load)。加载(d_in+块偏移,线程键)__同步线程();这里,“线程密钥”将分配到全局内存中,对吗?我可以每个线程只有一个键,并且只在一个芯片上注册吗?看起来Blockload.load将指针作为参数。谢谢你的帮助!评论并不是一个试图掩盖这一点的明智的地方。请将您关于如何使用CUB的问题作为新的SO问题发布。他们是否在CUB中使用功能3.0洗牌指令?是的。cub是一个开源的头库,所以您可以自己检查它。其中的shfl指令主要出现在内联汇编区域中;块加载(temp_storage.load)。加载(d_in+块偏移,线程键)__同步线程();这里,“线程密钥”将分配到全局内存中,对吗?我可以每个线程只有一个键,并且只在一个芯片上注册吗?看起来Blockload.load将指针作为参数。谢谢你的帮助!评论并不是一个试图掩盖这一点的明智的地方。请将您关于如何使用CUB的问题作为新的SO问题发布。