parallel-processing - CUDA/OpenCL 中的深度优先搜索

标签 parallel-processing cuda opencl gpgpu depth-first-search

我正在 MPI 中实现并行深度优先搜索算法的一半,我正在考虑尝试在 CUDA/OpenCL 中也这样做,只是为了好玩/出于好奇。该算法很简单,但并非微不足道。 C 语言的单核版本大约有 200 行代码。

GPGPU多少适合这种问题?

最佳答案

在 CUDA 中实现树搜索操作并不是那么简单。有一些文件,比如那个

  • “在 GPU 上探索回溯范式的经验教训”http://dl.acm.org/citation.cfm?id=2033458

  • 另一个相当简单的实现(在我看来不是一个大规模并行化的实现)
  • “使用 CUDA 在 GPU 上加速大型图算法”
    Pawan Harish 和 P. J. Narayanan

  • 困难在于,树操作通常涉及决策,并根据决策采取不同的分支。因此,在不重叠的情况下大规模并行化操作并进行冗余操作非常困难。

    有一些方法使用堆栈和队列实现来遍历树。

    您可能会在这里找到类似的问题:
    Error: BFS on CUDA Synchronization

    关于parallel-processing - CUDA/OpenCL 中的深度优先搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671654/

    相关文章:

    c# - 在 C# 中等待 Parallel.Invoke() 结束

    c++ - 具有动态数组分配的 OpenMP 嵌套循环

    cuda - 如何确定内核是否受内存限制或计算限制?

    java - 将包含 size_t 的结构从 Java 传递到 OpenCL

    c - 不建议使用以下指针。特别是有助于自动并行化

    java - 执行线程核心数

    用于无符号饱和的每字节乘法的cuda SIMD指令

    c++ - CUDA 对大量线程的奇怪行为

    c++ - 对于简单的矩阵乘法,OpenCL CPU 比 OpenCL GPU 更快

    c++ - 处理 OpenCL 结构缓冲区的正确方法是什么?