如何解决推力::合并在内部使用哪种算法?
我想知道 thrust::merge
在内部使用哪种合并算法。
例如,mgpu::merge
(Modern GPU Merge) 基于 GPU Merge Path - A GPU Merging Algorithm。
thrust::merge
使用哪种算法,它与 GPU Merge Path 有何不同?
解决方法
遗憾的是,Thrust 没有明确描述他们实际使用的算法。但是,您可以找到 CUDA 实现 here 并了解该算法的作用。在撰写本文时,他们使用基于平铺的分区合并。
算法分为3步:
- 分区:在共享内存中使用二分查找找到每个线程的合并路径;
- merging:在每个线程中执行一个独立的串行合并;
- 加入:将数据写回全局内存。
当前的 Thrust 实现似乎与您提供的研究论文中的相似。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。