PETSc hữu ích như thế nào đối với ma trận dày đặc?


14

Bất cứ nơi nào tôi đã thấy, hướng dẫn / tài liệu của PETSc, vv nói rằng nó rất hữu ích cho đại số tuyến tính và thường chỉ định rằng các hệ thống thưa thớt sẽ có lợi. Thế còn ma trận dày đặc? Tôi quan tâm đến việc giải cho A dày đặc .Mộtx= =bMột

Tôi đã viết mã riêng cho CG và QMR ở Fortran. Các cấu trúc cơ bản là để rip ngoài mã giả và thêm thói quen BLAS bất cứ nơi nào có thể ( ddot, dnrmdgemv) với một tự điều chỉnh nhỏ. Làm thế nào điều này sẽ so sánh với PETSc?

Tôi biết câu trả lời tốt nhất sẽ là cho tôi để tự mình thử nó nhưng vì lý do thời gian và những người khác, điều đó là không thể.

Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.

Câu trả lời:


7

Nếu bạn có ma trận dày đặc với cấu trúc (ví dụ: biến đổi nhanh, bổ sung Schur, v.v.), PETSc có thể hữu ích. Trong những trường hợp này, bạn sẽ không tập hợp được ma trận đầy đủ.

Đối với các hệ thống dày đặc được lắp ráp, PETSc hiện sử dụng PLAPACK, nhưng phân phối ma trận ở định dạng gốc PETSc không phải là tốt nhất để giảm thiểu giao tiếp (đối với hầu hết các hoạt động). Jack Poulson, Matt Knepley và tôi đã thảo luận về việc chuyển đại số tuyến tính dày đặc của PETSc để sử dụng Elemental , thư viện đại số tuyến tính dày đặc hiện đại hơn của Jack. Nó chưa xảy ra, nhưng chúng tôi sẽ làm điều đó khi có thời gian.

Nếu muốn có một thư viện đại số tuyến tính dày đặc đầy đủ tính năng, hãy sử dụng Elemental. Nó có khả năng luôn có API hoàn chỉnh hơn cho các hoạt động đó so với PETSc. Nếu bạn cần tương tác với các hệ thống thưa thớt hoặc không được lắp ráp, có thể có ý nghĩa khi gắn bó với PETSc và trích xuất những gì bạn cần để sử dụng Elemental cho các phần dày đặc (hoặc giúp chúng tôi viết giao diện PETSc sang Elemental).


Câu trả lời của bạn là gì nếu tôi đang làm việc trên hệ thống Bộ nhớ chung?
Thắc mắc

1
Bạn có thể sử dụng nhiều quy trình MPI hoặc nhiều pthread. Tôi không thấy nhiều điểm khi viết phần mềm song song chỉ hoạt động với bộ nhớ dùng chung vì thông thường địa phương bộ nhớ mà bạn nghĩ đến khi viết cho bộ nhớ phân tán sẽ cải thiện hiệu suất so với tất cả các triển khai luồng tốt nhất. Nếu bạn chỉ muốn API "nối tiếp" sử dụng các luồng bên trong cho đại số tuyến tính dày đặc, bạn có thể sử dụng BLAS theo luồng.
Jed Brown

Tôi muốn mã của tôi hoạt động trên máy trạm lõi Xeon 12 của tôi (hiện tại tôi không nhìn vào Cụm). Tôi đang sử dụng Intel MKL cho BLAS (luồng). Bạn vẫn sẽ khuyên tôi nên thử PETSc chứ?
Thắc mắc

Nếu tất cả những gì bạn muốn là BLAS, bạn hài lòng với nó và bạn đã viết mã, chỉ cần sử dụng nó. Nếu bạn muốn linh hoạt hơn và / hoặc cơ hội sử dụng bộ nhớ phân tán, bạn có thể muốn PETSc.
Jed Brown

Linh hoạt về mặt? Bộ nhớ phân tán?
Cuộc điều tra

5

Ôi(n3)Ôi(n2)

Vì bạn đã đề cập rằng bạn đang sử dụng hệ thống bộ nhớ dùng chung, tôi đã khuyến nghị libFLAME và / hoặc PLASMA , nhưng tôi không nghĩ rằng sẽ nhanh hơn đáng kể so với BLAS của nhà cung cấp cho các hoạt động cấp 1 và cấp 2 của bạn.

Jed đề xuất Elemental , thứ mà tôi tình cờ phát triển, nhưng tôi sẽ nhấn mạnh một lần nữa rằng các phép toán cấp 1 và cấp 2 không phải là trọng tâm chính của các thư viện đại số tuyến tính dày đặc song song. Thành thật tôi chưa bao giờ điểm chuẩn bất kỳ thói quen nào.


Vì vậy, từ những gì tôi nhận được, mọi thư viện đại số tuyến tính dày đặc song song tiếp theo sẽ cố gắng tối ưu hóa các hoạt động như tính toán eigenvector, giải pháp của hệ thống thay vì BLAS. Ngoài ra, Elemental trông thực sự ấn tượng. Tôi chắc chắn sẽ cho nó chạy khi tôi có thể.
Cuộc điều tra

Họ thường sẽ tối ưu hóa BLAS cấp 3. Lý do là hầu hết mọi người sử dụng thư viện sẽ thực hiện các phép tính lớn thường có thể được ánh xạ tới cấp 3 BLAS.
Jack Poulson

Có phải vì BLAS 1/2 không thể tốt hơn? (Có thể do thuộc tính bề mặt-khối lượng?) Dữ liệu O (N ^ 2) và tính toán O (N ^ 2)?
Cuộc điều tra

Đó là bởi vì BLAS 1 và 2 thường là các thuật ngữ có thứ tự thấp hơn trong tính toán. Toàn bộ 'trò chơi' của đại số tuyến tính dày đặc hiệu suất cao là nheo mắt ở mọi thao tác theo đúng cách để bạn có thể gọi xGEMM và bạn bè càng nhiều công việc càng tốt.
Jack Poulson

Ngoài ra, vâng, thực tế là họ thực hiện số lượng flops tương đương với các bản ghi nhớ là lý do tại sao chúng được tránh càng nhiều càng tốt.
Jack Poulson
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.