【发布时间】:2018-04-21 09:42:26
【问题描述】:
将包含递归的顺序代码转换为用 openmp、CUDA 或 MPI 编写的等效并行代码非常困难。 为什么会这样?
【问题讨论】:
-
您的问题包含尚未计算的悬空依赖关系:哪些代码,究竟是什么意思,以及您引用或引用的确切对象/来源?
标签: recursion parallel-processing mpi openmp
将包含递归的顺序代码转换为用 openmp、CUDA 或 MPI 编写的等效并行代码非常困难。 为什么会这样?
【问题讨论】:
标签: recursion parallel-processing mpi openmp
如果将一段代码编写为递归算法,则在每一级递归中执行的计算很可能取决于下一级的结果。这意味着很难从不同的递归步骤并行进行计算。
另一种思考方式是想象将递归扁平化为迭代(参见例如Can every recursion be converted into iteration?)。递归算法可能会生成一个扁平化版本,其中每次迭代都依赖于其他迭代的结果,因此很难并行进行迭代。
【讨论】: