【问题标题】:Which algorithm does thrust::merge use internally?推力::合并在内部使用哪种算法?
【发布时间】:2021-06-11 05:34:17
【问题描述】:

我想知道thrust::merge内部使用的是哪种合并算法。

例如,mgpu::merge (Modern GPU Merge) 基于GPU Merge Path - A GPU Merging Algorithm

thrust::merge 使用哪种算法,它与 GPU 合并路径有何不同?

【问题讨论】:

    标签: cuda thrust


    【解决方案1】:

    遗憾的是,Thrust 没有明确描述他们实际使用的算法。但是,您可以找到 CUDA 实现 here 并了解该算法的作用。在撰写本文时,他们使用基于平铺的分区合并。

    算法分为3步:

    • partitioning:使用共享内存中的二分查找来查找每个线程的合并路径;
    • merging:在每个线程中执行一个独立的串行合并;
    • 加入:将数据写回全局内存。

    当前的 Thrust 实现似乎与您提供的研究论文中的实现接近。

    【讨论】:

    • 除非最近发生了变化,据我回忆,它是现代 GPU 代码的直接改编
    猜你喜欢
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多