将具有递归的顺序代码转换为用openmp,CUDA或MPI编写的等效并行代码非常困难。 为什么会这样?
答案 0 :(得分:-2)
如果一段代码被编写为递归算法,那么在每个递归级别执行的计算很可能取决于下一个的结果。这意味着难以并行地从不同的递归步骤进行计算。
另一种思考方式是想象将递归展平为迭代(参见例如Can every recursion be converted into iteration?)。递归算法可能会生成扁平化版本,其中每次迭代都依赖于其他迭代的结果,从而难以并行执行迭代。