与PETSc并行求解简单的Ax = b系统


10

我是PETSc软件包的新手。

我有一个矩阵市场格式的〜4000x4000矩阵A,我想让PETSc使用多个处理器来解决这个问题。

我知道如何在单个处理器上求解系统,但是我不知道如何在不同处理器之间分配矩阵和向量。

有一套简单的说明可以做到这一点吗?

Answers:


14

Matrix Market是一种并行读取的糟糕格式,因此最好将其预处理为更好的并行格式。您的矩阵大小非常小,因此性能不是问题,但是最简单,最通用的方法是使用Python或Matlab / Octave编写PETSc二进制格式的Matrix Market文件,可以使用并行高效读取MatLoad()。例如,您可以使用此Python代码进行预处理(添加$PETSC_DIR/bin/pythonscripts到中PYTHONPATH

import scipy.io, PetscBinaryIO
A = scipy.io.mmread('thematrix.mtx')
PetscBinaryIO.PetscBinaryIO().writeMatSciPy(open('petscmatrix','w'), A)

您也可以在此时将向量写入文件。如果您只想阅读和解决系统问题,可以使用src/ksp/ksp/examples/tutorials/ex10.c(带有-f petscmatrix读取刚编写的二进制文件的选项)。

在实际的应用程序中,应避免涉及将文件以任何格式写入磁盘的工作流程。最好使用问题的域分解表示形式并行组装矩阵。PETSc中的大多数示例都是以这种方式编写的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.