Giải hệ song song Ax = b đơn giản với PETSc


10

Tôi mới sử dụng gói PETSc.

Tôi có một ma trận A ~ 4000x4000 ở định dạng thị trường ma trận và tôi muốn có được PETSc để giải quyết vấn đề này bằng nhiều bộ xử lý.

Tôi biết cách giải quyết hệ thống trên một bộ xử lý, nhưng tôi không biết cách phân phối ma trận và vectơ giữa các bộ xử lý khác nhau.

Có một bộ hướng dẫn đơn giản để làm điều này?

Câu trả lời:


14

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/pythonscriptsvà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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.