답변:
매트릭스 마켓은 병렬로 읽을 수있는 끔찍한 형식이므로 더 나은 병렬 형식으로 사전 처리하는 것이 좋습니다. 행렬 크기가 매우 작기 때문에 성능은 문제가되지 않지만 가장 쉽고 가장 일반적인 것은 Python 또는 Matlab / Octave를 사용하여 Matrix Market 파일을 PETSc 이진 형식으로 작성하여를 사용하여 효율적으로 읽을 수 있습니다 MatLoad()
. 예를 들어, 전처리이 파이썬 코드를 사용할 수 있습니다 (추가 $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의 대부분의 예는 이런 식으로 작성되었습니다.