Matrix Market ist ein schreckliches Format zum parallelen Lesen, daher ist es besser, ein besseres Parallelformat vorzuverarbeiten. Ihre Matrixgröße ist extrem klein, sodass die Leistung kein Problem darstellt. Am einfachsten und allgemeinsten ist es jedoch, Python oder Matlab / Octave zu verwenden, um die Matrix Market-Datei im PETSc-Binärformat zu schreiben, das mithilfe von parallel effizient gelesen werden kann MatLoad()
. Beispielsweise können Sie diesen Python-Code für die Vorverarbeitung verwenden ( $PETSC_DIR/bin/pythonscripts
zu Ihrem hinzufügen PYTHONPATH
)
import scipy.io, PetscBinaryIO
A = scipy.io.mmread('thematrix.mtx')
PetscBinaryIO.PetscBinaryIO().writeMatSciPy(open('petscmatrix','w'), A)
Sie können zu diesem Zeitpunkt auch einen Vektor in die Datei schreiben. Wenn Sie nur das System lesen und lösen möchten, können Sie es verwenden src/ksp/ksp/examples/tutorials/ex10.c
(mit der Option -f petscmatrix
, die gerade geschriebene Binärdatei zu lesen).
In einer realen Anwendung sollten Sie einen Workflow vermeiden, bei dem Dateien in einem beliebigen Format auf die Festplatte geschrieben werden. Es ist viel besser, die Matrix parallel zusammenzusetzen, indem eine domänenzerlegte Darstellung des Problems verwendet wird. Die meisten Beispiele in PETSc sind so geschrieben.