Answers:
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中的大多数示例都是以这种方式编写的。