我想创建一个并行求解器,使用 petsc4py 作为大型应用程序的一个组件。我可以通过调用轻松地将 PETSc.COMM_WORLD.getSize() 设为 4
mpiexec -n 4 python my_prog.py
但是,这会创建 4 个应用程序,而我只希望 PETSc 并行求解。目前它只使用一个进程,并提供与 scipy 的 spsolve 基本相同的性能。
我可以重构,使 KSP 解决方案是它自己的程序,并从主程序中产生它,使用它们之间的 IO 来发送矩阵等,但这似乎不太理想。
petsc4py 是否可以通过 petsc4py.init 或类似的方式创建自己的 mpi proc,或者以编程方式指定分区数?还是我错过了对整个问题更基本的东西?