我有一个可以并行运行但使用共享内存方法的 c++ 代码。我将代码链接到 PETSc 并且 PETSc 能够并行运行代码,但使用分布式内存方法。当我并行运行代码(与 PETSc 链接的 c++)时,似乎所有处理器都在重复相同的工作。例如,当处理器数量为 4 时,边界条件和初始条件被读取 4 次,或者如果我使用 printf 命令,某些内容将被打印 4 次。所以这意味着工作没有在处理器之间分配,所有处理器都在做整个工作,而不是做其中的某些部分。有没有人有同样的经历,为了解决这个问题,你有什么建议?例如,您可以在下面看到代码读取网格两次而不是读取一次:
读取网格文件 Mesh_cavity2d.txt:
读取网格文件 Mesh_cavity2d.txt:
或者: