Arrays 为数组中的段之间的局部顺序推荐一种快速排序算法

Arrays 为数组中的段之间的局部顺序推荐一种快速排序算法,arrays,sorting,cuda,parallel-processing,Arrays,Sorting,Cuda,Parallel Processing,在GPU上对数组中每个段的数据进行排序,段的大小为32,不同段没有进一步的排序或合并。所以我将每个段的数据从全局内存加载到共享内存中,并在完成每个段的排序后将数据存储到全局内存中。对于更高的吞吐量,什么样的并行算法更受欢迎?因为段大小都是32,我个人建议。还有一篇文章你可以参考。因为片段大小都是32,我个人建议。还有一篇文章你可以参考。因为片段大小都是32,我个人建议。还有一篇文章你可以参考。因为片段大小都是32,我个人建议。还有一篇文章你可以参考。我建议你使用in-warp,这是使用开普勒体系

在GPU上对数组中每个段的数据进行排序,段的大小为32,不同段没有进一步的排序或合并。所以我将每个段的数据从全局内存加载到共享内存中,并在完成每个段的排序后将数据存储到全局内存中。对于更高的吞吐量,什么样的并行算法更受欢迎?

因为段大小都是32,我个人建议。还有一篇文章你可以参考。

因为片段大小都是32,我个人建议。还有一篇文章你可以参考。

因为片段大小都是32,我个人建议。还有一篇文章你可以参考。

因为片段大小都是32,我个人建议。还有一篇文章你可以参考。

我建议你使用in-warp,这是使用开普勒体系结构的SHFL指令非常有效地实现的。请参阅本GTC 2013演示文稿中的代码:


使用它还意味着您不需要为共享内存而烦恼,只需将每个线程的一个值加载到寄存器中即可。

我建议您使用in-warp,这是使用开普勒体系结构的SHFL指令非常有效地实现的。请参阅本GTC 2013演示文稿中的代码:


使用它还意味着您不需要为共享内存而烦恼,只需将每个线程的一个值加载到寄存器中即可。

我建议您使用in-warp,这是使用开普勒体系结构的SHFL指令非常有效地实现的。请参阅本GTC 2013演示文稿中的代码:


使用它还意味着您不需要为共享内存而烦恼,只需将每个线程的一个值加载到寄存器中即可。

我建议您使用in-warp,这是使用开普勒体系结构的SHFL指令非常有效地实现的。请参阅本GTC 2013演示文稿中的代码:


使用它还意味着您不需要为共享内存而烦恼,只需将每个线程的一个值加载到寄存器中即可。

通常,这种问题在StackOverflow上不受欢迎,因为它们往往会吸引一些自以为是的答案。如果我理解正确,您不必订购整个数组,而只需订购
32
元素段。在这种情况下,如果您有一张计算能力至少为
3.x
的卡,您是否考虑过使用扭曲洗牌操作?洗牌操作提供了相对于共享内存的性能优势。请看一下为开普勒调整CUDA应用程序的应用说明。您也可以看一下,但我同意@jackolanten在上面的评论。32个元素足够小,您可以通过创建自己的排序例程而不是使用固定的例程来找到最佳性能。通常这种问题在StackOverflow上不受欢迎,因为它们往往会吸引一些自以为是的答案。如果我理解正确,您不必订购整个数组,而只需订购
32
元素段。在这种情况下,如果您有一张计算能力至少为
3.x
的卡,您是否考虑过使用扭曲洗牌操作?洗牌操作提供了相对于共享内存的性能优势。请看一下为开普勒调整CUDA应用程序的应用说明。您也可以看一下,但我同意@jackolanten在上面的评论。32个元素足够小,您可以通过创建自己的排序例程而不是使用固定的例程来找到最佳性能。通常这种问题在StackOverflow上不受欢迎,因为它们往往会吸引一些自以为是的答案。如果我理解正确,您不必订购整个数组,而只需订购
32
元素段。在这种情况下,如果您有一张计算能力至少为
3.x
的卡,您是否考虑过使用扭曲洗牌操作?洗牌操作提供了相对于共享内存的性能优势。请看一下为开普勒调整CUDA应用程序的应用说明。您也可以看一下,但我同意@jackolanten在上面的评论。32个元素足够小,您可以通过创建自己的排序例程而不是使用固定的例程来找到最佳性能。通常这种问题在StackOverflow上不受欢迎,因为它们往往会吸引一些自以为是的答案。如果我理解正确,您不必订购整个数组,而只需订购
32
元素段。在这种情况下,如果您有一张计算能力至少为
3.x
的卡,您是否考虑过使用扭曲洗牌操作?洗牌操作提供了相对于共享内存的性能优势。请看一下为开普勒调整CUDA应用程序的应用说明。您也可以看一下,但我同意@jackolanten在上面的评论。32个元素足够小,您可以通过创建自己的排序例程(而不是使用固定例程)找到最佳性能。