Matrix Market là một định dạng khủng khiếp để đọc song song, do đó tốt hơn là tiền xử lý sang định dạng song song tốt hơn. Kích thước ma trận của bạn rất nhỏ nên hiệu suất không phải là vấn đề, nhưng điều dễ nhất và chung nhất là sử dụng Python hoặc Matlab / Octave để viết tệp Matrix Market ở định dạng nhị phân PETSc, có thể đọc song song hiệu quả MatLoad()
. Ví dụ: bạn có thể sử dụng mã Python này để tiền xử lý (thêm $PETSC_DIR/bin/pythonscripts
vào của bạn PYTHONPATH
)
import scipy.io, PetscBinaryIO
A = scipy.io.mmread('thematrix.mtx')
PetscBinaryIO.PetscBinaryIO().writeMatSciPy(open('petscmatrix','w'), A)
Bạn cũng có thể viết một vectơ vào tệp tại thời điểm này. Nếu bạn chỉ muốn đọc và giải quyết hệ thống, bạn có thể sử dụng src/ksp/ksp/examples/tutorials/ex10.c
(với tùy chọn -f petscmatrix
để đọc tệp nhị phân bạn vừa viết).
Trong một ứng dụng thực tế, bạn nên tránh một quy trình công việc liên quan đến việc ghi tệp vào đĩa ở bất kỳ định dạng nào. Sẽ tốt hơn nhiều khi lắp ráp ma trận song song bằng cách sử dụng một biểu diễn phân tách miền của vấn đề. Hầu hết các ví dụ trong PETSc được viết theo cách này.