推力:在线程块内排序

Posted

技术标签:

【中文标题】推力:在线程块内排序【英文标题】:thrust: sorting within a threadblock 【发布时间】:2019-11-28 06:24:47 【问题描述】:

我正在调度一个大约 5k 块的内核。在某些时候,我们需要对每个线程块中的数组进行排序。如果可能的话,我们想使用像推力这样的库。 从文档中我了解到,如何在推力中执行排序取决于指定的execution_policy。但是我不明白是否可以使用execution_policies 来指定我想使用当前块的线程进行排序。有人可以向我解释或提示我执行政策的良好文档,并告诉我我打算做的事情是否可行?

【问题讨论】:

不是。但是,CUB 具有块作用域排序 如果是这样,那就太可惜了。你能告诉我execution_policy 的用途和使用方法吗?找不到任何相关文档。 thrust.github.io/doc/group__execution__policies.html 嗨,谢谢。这也是我发现的,但没有找到非常确凿的结论。但非常感谢您的提示和努力。它的赞赏。 执行策略 slides video 要播放视频,您可能需要单击视频窗口的中心以显示控件,然后单击播放按钮左下 【参考方案1】:

事实证明,执行策略基本上是一种桥接设计模式,它使用模板专门化而不是继承来选择算法的适当实现,同时向库的用户公开稳定的接口并避免虚拟函数的开销/必要性。谢谢robert-crovella 的精彩视频。

至于实际在线程块内排序的实现,talonmies 是对的。根本没有实现(目前?),我在源代码中找不到任何东西。

【讨论】:

以上是关于推力:在线程块内排序的主要内容,如果未能解决你的问题,请参考以下文章

推力——按键排序两个向量

您如何构建示例 CUDA 推力设备排序?

第一次从推力执行排序需要太长时间

使用 Thrust CUDA 对对象进行排序

面试复习之数据结构

面试复习之数据结构