微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

推力::合并在内部使用哪种算法?

如何解决推力::合并在内部使用哪种算法?

我想知道 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 举报,一经查实,本站将立刻删除。