Thư viện để giải quyết các hệ thống tuyến tính thưa thớt


21

Có một số thư viện khác nhau giải quyết một hệ phương trình tuyến tính thưa thớt, tuy nhiên tôi cảm thấy khó khăn để tìm ra sự khác biệt là gì.

Theo như tôi có thể nói có ba gói chính: Trilinos , PETScIntel MKL . Tất cả đều có thể thực hiện các phép giải ma trận thưa thớt, tất cả đều nhanh (theo như tôi có thể nói, tôi chưa thể tìm được điểm chuẩn vững chắc trên bất kỳ trong số chúng), và tất cả chúng đều có thể song song. Những gì tôi không thể tìm thấy là sự khác biệt.

Vì vậy, sự khác biệt giữa các bộ giải hệ thống tuyến tính thưa thớt khác nhau ngoài kia là gì?

Câu trả lời:


29

Có nhiều hơn nữa ngoài kia, tất cả với các mục tiêu và quan điểm khác nhau về các vấn đề. Nó thực sự phụ thuộc vào những gì bạn đang cố gắng giải quyết. Dưới đây là một danh sách không đầy đủ các gói ra khỏi đó. Hãy thêm chi tiết.

Gói giải pháp lặp phân tán lớn

  • PETSc - các gói tập trung xung quanh các phương pháp không gian con Krylov và dễ dàng chuyển đổi giữa các bộ giải tuyến tính. Trọng lượng nhẹ hơn nhiều so với những người khác trong thể loại này.
  • Trilinos - một bộ gói lớn nhắm vào các ứng dụng FEM
  • Hypre - tương tự như hai ở trên. Đáng chú ý vì các bộ giải đa lượng rất tốt của nó (có thể được tải xuống bởi PETSc).

Gói giải quyết trực tiếp song song

Gói giải quyết trực tiếp nối tiếp

Môi trường tương tác (nhiều hơn cho các hệ thống rất nhỏ)

Danh sách khác


9

MKL không thực hiện song song phân tán (ví dụ MPI) và sự hỗ trợ cho người giải quyết thưa thớt là thô sơ, chắc chắn không phải ở cấp độ của hai người kia. Hiện tại, chỉ có một điểm chuẩn có ý nghĩa: hiệu suất có thể mở rộng của sản phẩm Spzzy Matrix-Vector (SpMV). Vì đây là băng thông bộ nhớ bị giới hạn, bạn chỉ có thể vặn nó lên. Cả PETSc và Trilinos đều làm tốt điều này.

Sự khác biệt thực sự là môi trường lập trình làm cho bạn năng suất hơn.


Vì vậy, nó khá sôi nổi nếu bạn muốn làm việc trong C hoặc C ++?
Andrew Spott

Đó là một chút kết thúc mở hơn thế. Bạn chắc chắn có thể gọi Trilinos hoặc PETSc từ hầu hết các ngôn ngữ điện toán số (C, Python, C ++ và Fortran đều là các tùy chọn khả thi, và ở một mức độ nào đó, MATLAB).
Aron Ahmadia

PETSc xử lý mảng F90 một cách chính xác :) và toàn bộ mô hình đối tượng có sẵn trong Matlab.
Matt Knepley

1
PETSc và Trilinos cũng tham gia vào các cộng đồng khác nhau, ở một mức độ nào đó. Có lẽ trước tiên bạn nên xem xét loại vấn đề bạn muốn giải quyết và liệu có bất kỳ ví dụ nào về các vấn đề tương tự đã có sẵn trong bộ công cụ không?
Aron Ahmadia

1
Tôi sẽ khuyên bạn nên xem xét các ví dụ về các dự án khác nhau sau đó quyết định. Nếu bạn có một ví dụ cụ thể về hệ thống nào sẽ tốt hơn cho một vấn đề, đó sẽ là một câu hỏi dễ trả lời hơn. Nếu không, chúng tôi sẽ chỉ bắt đầu cuộc chiến tôn giáo kéo theo sự nghiệp sau đại học của tôi.
aterrel
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.